Forum: Mikrocontroller und Digitale Elektronik HD44780 1602 LCD über I2C Modul ansteuern


von Sanches (Gast)


Lesenswert?

Ich finde auf Teufel komm raus keine Informationen wie ich das I2C-Modul 
füttern muss um auf dem 1602 LCD etwas auszugeben, nicht mal die Adresse 
ist auffindbar.

Werden die Pins denn 1:1 wie die übertragenen Bits geschalten oder macht 
das I2C-Modul mehr? (Es sind ja schließlich alle 8 Datenleitungen 
angelötet)

Und um Himmels Willen keine Arduino Library posten...

http://www.ebay.de/itm/301663532256?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

von c-hater (Gast)


Lesenswert?

Sanches schrieb:

> Und um Himmels Willen keine Arduino Library posten...

Wieso nicht? Wenn sie funktionieren, sollten doch im Quelltext die 
gesamten zur Ansteuerung nötigen Informationen stehen?

von Oldie (Gast)


Lesenswert?

Na was denn nu?
Alle 8 Bits + Steuer-Bits, oder I2C?
Oder wer setzt was um?

Irgendwas billig bei Ibäh besorgen und
den Support für lau im Forum abgreifen...

von Kurt B. (kurt-b)


Lesenswert?

Sanches schrieb:
> Ich finde auf Teufel komm raus keine Informationen wie ich das I2C-Modul
> füttern muss um auf dem 1602 LCD etwas auszugeben, nicht mal die Adresse
> ist auffindbar.
>
> Werden die Pins denn 1:1 wie die übertragenen Bits geschalten oder macht
> das I2C-Modul mehr? (Es sind ja schließlich alle 8 Datenleitungen
> angelötet)
>
> Und um Himmels Willen keine Arduino Library posten...
>
> 
http://www.ebay.de/itm/301663532256?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Schau mal da:

http://www.forum.g-heinrichs.de/viewtopic.php?f=12&t=73

 Kurt

Als Adresse hab ich:

Const Pcf8574_lcd = 127

.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Sanches schrieb:
> oder macht das I2C-Modul mehr?

Nö, nur das, was im Artikel Port-Expander PCF8574 steht.

Oldie schrieb:
> Irgendwas billig bei Ibäh besorgen und
> den Support für lau im Forum abgreifen...

Äääh. Ja. Wo ist das Problem? Ist es nicht der Sinn so eines solchen 
Forums?

von joelo (Gast)


Lesenswert?

@Sanchez
Schau dir mal die Lib von Davide an:

http://davidegironi.blogspot.de/2013/06/an-avr-atmega-library-for-hd44780-based.html

Habe ich hier schon mal empfohlen. Resonanz war positiv. Ich selbst habe 
sie schon 4-5 mal ohne Probleme eingesetzt

Gruß Jörg

von Matthias D. (matthias42)


Lesenswert?

Habe so ein Modul neulich mit einem Atmega angesteuert. Der Code ist 
"relativ" lesbar, aber im aktuellen Zustand möchte ich ihn nicht 
veröffentlichen. Wenn er dir nützt schicke ich ihn dir gerne per eMail.
Schreib mir bei Interesse ne kurze Nachricht.

Ansonsten ist das ganze auch sehr einfach selber umzusetzen. Die 8-Pins 
ansteuern wir dort beschrieben:
https://www.mikrocontroller.net/articles/Port-Expander_PCF8574

Protokoll dann wie gehabt bei diesem Display...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Sanches schrieb:
> Werden die Pins denn 1:1 wie die übertragenen Bits geschalten oder macht
> das I2C-Modul mehr? (Es sind ja schließlich alle 8 Datenleitungen
> angelötet)

 PCF8574 am Board, Adressen sind:
 Fur 8574  = 0-1-0-0 A2-A1-A0-R/W
 Fur 8574A = 0-1-1-1 A2-A1-A0-R/W

 Einfach 8 Werte hintereinander (0x01-0x02-0x04-0x08 ... 0x80)
 schicken, Pins ausmessen und fertig.
 LCD wird wie ublich angesteuert.

 Wo siehst du da ein Problem ?

: Bearbeitet durch User
von Der Bastler (Gast)


Lesenswert?

Schau mal unter

https://www.mikrocontroller.net/articles/Modulares_Board

da wird einiges erklärt. Wenn nicht einfach mal anfragen

von Joachim B. (jar)


Lesenswert?

hey die Teile sind Klasse, ich nehm die für Tasten

Einfach nur die Bytes auf I2C rüberschicken

Sanches schrieb:
> Und um Himmels Willen keine Arduino Library posten...

dann nimmst du die von PeterFleury
http://homepage.hispeed.ch/peterfleury/avr-software.html

von Falk B. (falk)


Lesenswert?


: Bearbeitet durch User
von kopamelie (Gast)


Lesenswert?

Hallo,

ich hatte dassselbe Problem und habe es selbst herausgefunden:

Das Adapterboard macht nichts anderes als die 8BIT die über den I2C Bus 
geschickt werden direkt an die rausgeführten PINs für das Display zu 
leiten.

Das Adapterboard bzw. der IC auf dem Adapterboard gibt die 8BIT 
allerdings erst aus, wenn nach dem 8ten Bit das SCL HIGH geht. D.h die 
gewünschten Pegel am Port liegen erst an, wenn das ACK vom Slave gelesen 
wird

Das gesamte Board ist sozusagen nichts weiteres als ein 
Seriell-Parallel-Wandler.

Vorsicht!: Die PINS D0 bis D3 sind nicht verdrahtet! D.H man muss im 
4BIT-MODUS des Displays arbeiten, weil die empfangenen Bytes über den 
I2C Bus wie folgt interpretiert werden:

BIT7 (MSB)  = PIN D7
BIT6        = PIN D6
BIT5        = PIN D5
BIT4        = PIN D4
*BIT3        = TRANSISTOR ANSTEUERUNG fuer Hintergrundbeleuchtung
BIT2        = PIN E
BIT1        = PIN RW
BIT0 (LSB)  = PIN RS

Wobei ~5V am PIN eine "1" darstellen und 0V "0". D.h unabhängig von den 
gesendeteten Bytes über I2C sind die PINS D0 bis D3 immer auf 0V, weil 
man sonst über den I2C Bus nicht die Steuerpins E,RW,RS ansteuern 
könnte.

Deshalb muss man ein ganzes Datenbyte (für Kommandoregister oder 
Datenregister) immer über den I2C Bus über 2x senden übertragen (höhere 
4Bit, dann niederwertige 4Bit) und das immer über BIT7 bis BIT4.

Über *BIT3 steuert man einen Transistor an (J3Y): "1" bedeutet 0,7V 
(Hintergrundbeleuchtung AN) an der Basis und "0" bedeutet ~0V 
(Hintergrundbeleuchtung AUS)

D.h am besten beim Byte schicken IMMER BIT3 auf "1" belassen:

MSB:[D7][D6][D5][D4][1][E][RW][RS]:LSB

Beim Adapterboard kann man also auf 2 Wege die Hintergrundbeleuchtung 
steuern:

Mechanisch: Mit dem Jumper
Elektrisch: Über BIT3 bzw. über "P3" des IO-Expander-IC (siehe 
Datenblatt)
durch Ansteuerung eines Transistors (arbeitet als Schalter)


Die Ansteuerung des Displays muss man trotz diesen I2C Adapter selbst 
übernehmen, denn damit sollen nur PINs gespart werden.


Gruss

von kopamelie (Gast)


Lesenswert?

Die Adresse ist übrigens 0x3F (7BIT)

(Das Controlbyte zum Schreiben ist daher 0x7E und das Contrlbyte zum 
Lesen ist 0x7F)

von Ich selber (Gast)


Lesenswert?

Sanches schrieb:
> Werden die Pins denn 1:1 wie die übertragenen Bits geschalten oder macht
> das I2C-Modul mehr? (Es sind ja schließlich alle 8 Datenleitungen
> angelötet)

Hallo;

Soweit ich das weis, ja.

Habe nur Erfahrung mit Display "normal" und I2C port Expander

Damit kannst du das aber lösen.

Ein I2C wird wie folgt verwendet: "I2C Sende: Adresse + Sende: Ausgang

Wobei "Ausgang" eben das Bitmister am Ausgang ist.
Mit 8 Bit portexpander Kannst du das Display aber nur im 4Bit Modus 
betreiben, da du ja noch Handshake und Control Signale brauchst.

Anderes Beispiel:
wenn du keine 16 Bit i2C Expander findest: Vielleicht ist eine SPI 
Variante einfacher, das Prinzip ist das Gleiche.



Also:

Wenn du das Display "herkömmlich mit 8 Leitungen im 4 Bit Modus 
ansteuern kanns, sollte dies bei der I2C Variante ebenfalls kein Problem 
sein.


Empfehlung:
Logikanalyser an den Ausgängen des Portexpanders, damit du weißt was du 
gesendet hast.

Fallstrick:

Das Timing der Ausgangssignale, welche am Dispaly anliegen:

Lösung:

Experimentiern (aber eben nicht raten).

Gruß

von Asko B. (dg2brs)


Lesenswert?

Ich hatte einmal solches Modul benutzt um ein Display
an einen kleinen Asuro zu haengen.
http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_LCD_I_C_Modul.html

Das hab sogar ich hinbekommen. Denn eigentlich kann man die
Worte "Asko" und "programmieren" in keinen vernuenftigen
Zusammenhang bringen. ;-)

Gruss Asko.

von meinname (Gast)


Lesenswert?

Es ist eigentlich viel einfacher, das Display ohne diesen I2C Adapter zu 
betreiben, weil der Adapter keine Vereinfachung der Kommunikation 
schafft, sondern das Gegenteil bewirkt: Die Weg zum Display wird länger 
und zwar über einen Bus.

Beispiel: Über "E" wird das Taktsignal gesteuert. Ohne I2C ist das nur 
Bitbanging über einen PIN. Bei I2C muss man dafür 2 ganze Bytes über den 
Bus schicken!

Der einzige Vorteil ist allein, dass man bei einem existierenden Bus 
keine weitere Leitung am µC braucht und der Poti schon angelötet ist.
Außerdem ist das wirklich vom Nachteil, dass der I2C Adapter auch nur 
den 4Bit Mode unterstützt, das hätte man viel besser lösen können. Mit 
dem 8Bit Mode ist die Ansteuerung des Displays ein Kinderspiel und nicht 
so umständlich wie beim 4Bit Mode.

von Ich selber (Gast)


Lesenswert?

meinname schrieb:
> Mit
> dem 8Bit Mode ist die Ansteuerung des Displays ein Kinderspiel und nicht
> so umständlich wie beim 4Bit Mode.

Wenn man denn I2C Verwenden will bund keinen 16 Bit Port Expander fände 
brächte man 2Expander Chips:

1 x 8bit Daten
1 für Handshake Signale.


Ohne Bus am einfachsten.
Mit Bus würde ich SPI empfehlen, hier gibt es 16 Bit Portexpander.

Gruß

von Joachim B. (jar)


Lesenswert?

meinname schrieb:
> Der einzige Vorteil ist allein, dass man bei einem existierenden Bus
> keine weitere Leitung am µC braucht und der Poti schon angelötet ist.

ich sehe den größten Vorteil in Einsparung von Ports und Einsparung von 
Leitungen, auf dem Steckbrett ist es blitzschnell verdrahtet

I2C RTC
I2C LCD
I2C Tastatur (ich benutze ja das I2C LCD Modul für bis zu 8 Tasten, als 
Matrix gingen auch mehr)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.