Das Besondere beim DOGM im 8-bit Modus bei 3.3V Betriebsspannung ist das Timing beim Schreiben.
Das sieht dann beispielswweise so aus:
Code:
void LCD_Write(unsigned char data, int8 rs)
{
if(rs)
RS_BIT = 0x0001;
else
RS_BIT = 0x0000;
PMDATA = data;
RW_BIT = 0;
delay_us(4); // Tb
E_BIT = 1;
delay_us(10); // Tm
E_BIT = 0;
// delay_us(1); // Te
delay_us(30);
Nop();
Nop();
Nop();
Nop();
}
Die kritischen Zeiten sind die delays "um das Enable Bit herum". Ein standard 44780-basiertes Display ist da scheinbar toleranter. Das DOGM jedenfalls braucht diese Delays jedoch. (Generell wäre auch empfehlenswert, eine Abfrage-Routine für sein "Busy-Flag" zu nutzen, anstatt delays zu verwenden.)
Ein Workaround wäre auch, entweder das Display mit 5V zu betreiben, oder mit 3.3V die SPI-Ansteuerung zu benutzen. Dort gibt es dieses Problem nicht.
Viel Erfolg,
Hartwig
Lesezeichen