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