Hallo, ich habe eine mehrere gleiche (gedruckte) Schaltungen aufgebaut (ATMega64 @ 16 MHz) an denen jeweils ein 4-zeiliges Standard-LCD hängt. Es kommt oft vor dass beim Einschalten nur die erste und dritte Zeile des LCD initialisiert wird. Das LCD ist im 4-Bit Modus am µC angeschlossen, DB0-DB3 liegen auf GND. Angesprochen wird das LCD mit der Lib von Peter Fleury. Kennt jemand dieses Phänomen? Gruß Stefan
Hallo Stefan, nach dem Einschalten benötigt ein LCD eine gewisse Zeit bis es bereit ist, Daten zu empfangen. Wartet Dein Programm eine bestimmte Zeit, bevor es das LCD initialisiert? Wenn nein: Warteschleife einfügen. Wenn ja: mal eine längere Wartezeit versuchen. Gruß John
Hallo, ich warte im Moment 500 ms, das sollte eigentlich genug sein. Die 500 ms Delay werden auch tatsächlich gewartet (wie ich an den beiden funktionierenden Zeilen sehen kann) Stefan
Stefan schrieb: > DB0-DB3 liegen auf GND. Das ist ja nicht zwingend gut, hat aber wohl mit dem Problem nichts zu tun. Die gehören nicht auf GND da diese Bidirektional arbeiten. Wenn du die GNDen willst dann bitte über Pulldowns. Gruss klaus de Lisson
>Delay werden auch tatsächlich gewartet (wie ich an den beiden >funktionierenden Zeilen sehen kann) Das Display muss in den 4 Zeilen Modus umgeschaltet werden. Sonst zeigt es nur zwei Zeilen an. Gibt es da kein #define für KS0073 in der Fleury Lib?
Stefan schrieb: > Es kommt oft vor dass beim Einschalten nur die erste und dritte Zeile > des LCD initialisiert wird. Es wird nicht jede Zeile einzeln initialisiert. Nach dem Einschalten befindet sich der Displaycontroller vom LCD im einzeiligen Betrieb (-> von der Ansteuerung behandelt der Displaycontroller die erste und dritte Zeile als eine Zeile, die aber physikalische, in zwei Zeilen getrennt, untereinander dargestellt werden). Zum Umschalten in den zweizeiligen Betrieb (physikalisch vier Zeilen) benötigt man nur einen einzigen Befehl. Und dieser scheint nicht immer anzukommen. Stefan schrieb: > ich warte im Moment 500 ms, das sollte eigentlich genug sein. Die 500 ms > Delay werden auch tatsächlich gewartet (wie ich an den beiden > funktionierenden Zeilen sehen kann) Die 500ms sollten reichen. Da Du das LCD im 4-bit Modus betreibst, ist ja der erste Befehl das Umschalten vom 8-bit Modus in den 4-bit Modus (nach dem Einschalten befindet sich das LCD im 8-bit Modus). Und da die erste und dritte Zeile korrekt angezeigt werden, funktioniert die Umschaltung auf 4-bit. Was ich mir jetzt noch als Fehlerursache vorstellen kann ist, dass die Wartezeit zwischen den Befehlen zu kurz ist. Stefan schrieb: > ein 4-zeiliges Standard-LCD Um welches LCD handelt es sich? Welcher Displaycontroller wird verwendet? Gruß John
Es ist dieses Display: http://www.reichelt.de/LCD-Module-DIP-Anschluss/LCD-204BL-4-DIP/index.html?;ACTION=3;LA=444;GROUP=A523;GROUPID=3009;ARTICLE=53963;START=0;SORT=artnr;OFFSET=16;SID=33TUlgyn8AAAIAADaJBrEc77e92b02e3fe004f14a0fd3489cdeba >Die gehören nicht auf GND da diese Bidirektional arbeiten. Ahja, gut zu wissen! Wie ist die "amtliche" vorgehensweise wenn man nur 4 Bit benutzt? Offen lassen? Oder muß man wirklich Pulldowns einbauen? Habe inzwischen auch einen Fingerzeit gefunden: Meine Schaltung läuft mit 16 MHz. Die Fleury Lib berechnet aus der Taktangabe die nötigen Wartezeiten, allerdings ist der CPU Takt in dieser Lib nochmal extra definiert (XTAL) und steht standardmäßig auf 8 MHz, also zu kurze Zeiten. Leider schaut die Lib nicht ob schon (z.B. im makefile) F_CPU definiert ist. Mal sehen ob es daran liegt. Vielen Dank für die Antworten! Stefan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.