Forum: Mikrocontroller und Digitale Elektronik Probleme mit 20x4 LCD


von Swen (Gast)


Lesenswert?

Hallo
Habe ein 204A-Display von Displaytech an einen AT90S8535 angeschlossen. 
In mein Programm hab ich ne Funktion übernommen, die vorher schon von 
jemand getestet wurde und funktionierte. Anfangs hatte ich das Problem, 
daß das Display manchmal wahrlos Zeichen ausgegeben hat. Habe dann mit 
dem Datenblatt das Timing etwas verändert, danach funtionierte es 
problemlos für genau 10 Tage. Heute trat das gleiche Problem wieder auf, 
aber nicht, daß es nur manchmal passierte sondern ständig. Kann mir 
jemand weiterhelfen?

von holger buss (Gast)


Lesenswert?

Hi Swen,

betreibst Du das Disply im 4-Bit-Mode oder im 8-Bit-Mode?
Im 4-Bit-Modus kann man gravierende Fehler beim Initialisieren machen. 
Danach kann man ewig suchen (wie ich).

4-Bit:
_long_delay();
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x03);     // noch 8 Bit-Mode
_long_delay();
_lcd_write_4bit(0x02);     // jetzt 4 Bit-Mode
_long_delay();
_lcd_write_data(0x28);     // 4 Bit Zweizeilig
_long_delay();
_lcd_write_data(0x08);     // Display aus
_long_delay();
_lcd_write_data(0x01);     // Clear
_long_delay();
_lcd_write_data(0x06);     //Entry mode
_long_delay();
_lcd_write_data(0x08 + 4); // Display an
_long_delay();

//++++++++++++++++++++++++++++++++++++++++++++++
Und 8-Bit:

void lcd_init(void)
{
_long_delay();
_lcd_write_data(0x38);   // 8-Bit:0x38
_long_delay();
_lcd_write_data(0x38);
_long_delay();
_lcd_write_data(0x02);
_long_delay();
_lcd_write_data(0x06);
_long_delay();
_lcd_write_data(0x0c);
_long_delay();
_lcd_write_data(0x10);
_long_delay();
_lcd_write_data(1);   // clear LCD
_long_delay();

}

Viel Erfolg,
Holger

von Meiserl (Gast)


Lesenswert?

Hallo

Kann es sein das es nicht initialisiert ist?
z.b. im laufenden Betrieb abgesteckt worden oder Kontaktfehler.

Du könntest das LCD ja öfter neu initialisieren.
Wenn ich Probleme hatte dann war es ein Timingroblem oder eine 
Neuinitialisierung notwendig.

Verwendest das BUSYflag?

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.