Autor |
LCD löschen Suche nach: lcd (4684) |
|
|
|
|
BID = 397689
techno Neu hier
Beiträge: 29
|
|
Hallo zusammen,
ich bin gerade dabei mit einem Mikrocontroller und einem LCD eine Menüführung für eine Schaltuhr aufzubauen.
Ich habe aber dabei folgendes Problem.
Immer wenn ich das LCD (HD44780 Controller)mit dem Displaybefehl 0x01 löschen möchte und auch auch danach eine Pausenzeit von über 1,64 ms einhalte kommt es jedesmal durcheinander und fängt an zu flackern.
Muss ich das LCD danach jedesmal neu initialisieren ,
oder ist es besser wenn ich den Textpuffer an den entprechenden Stellen mit einem Leerzeichen 0xFE überschreibe ?
Ich möchte mich hiermit schon im voraus bei allen Helfenden bedanken.
mfg techno |
|
BID = 397692
Benedikt Inventar
Beiträge: 6241
|
|
1. Ein Leerzeichen ist 0x20 und nicht 0xFE
2. 1,64ms warten ist keine gute Lösung. Besser: Busy Flag abfragen
3. Wenn das LCD anfängt zu flackern hast du irgendwas falsch angeschlossen. Es gibt keinen Softwarebefehl der irgenwas in dieser Richtung auslösen könnte. |
|
BID = 397699
Her Masters Voice Inventar
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5308 Wohnort: irgendwo südlich von Berlin
|
sowas hatte ich mal mit nem alten Sharp-LCD. Wenn man den Löschbefehl benutzt hat und die im Datenblatt angegebene Wartezeit, dann kam oft der LCD-Controller ausm Tritt. Mit Busy-Abfrage gehts, aber auch mit ner längeren PAuse nach dem Befehl. Ich hatte damals einfach die 10-fache Zeit genommen weil ich Busy eigentlich nie abfrage. Allerdings bevorzuge ich es die Displayausgaben vorher im Speicher zu formatieren und den gesamten Inhalt ans LCD zu schicken. Gelöscht wird natürlich genauso, also einfach das Display mit Leerzeichen füllen.
_________________
Tschüüüüüüüs
Her Masters Voice
aka
Frank
***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************
|
BID = 397703
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ich mache das schon mit dem Busyflag. Denn dazu ist das ja da . Zumindest geht es dann maximal schnell.
Wenn ich ein LCD komplett lösche, dann setze ich erstmal die Schreib/Leseadresse an einen Zeilenanfang und führe dann den Löschbefehl aus.
Da die Daten so schnell geschrieben werden, ist es für das menschliche Auge nicht erkennbar, dass die Zeichen nacheinander geschrieben werden.
Klar, man kann auch vorher den RAM zuballern und danach das Display anschalten.
Das ist Jacke wie Hose. (Zumindestens vom Ergebnis)
_________________
|
BID = 397764
Syncroni Gerade angekommen
Beiträge: 8 Wohnort: Esslingen
|
Hi Techno,
kann es sein das dein Mikro abschmiert wenn du in die Schleife läuftst. Da solltest du deinen Code mal prüfen.
Der schreibt dann einen haufen Schrott ins Display deshalb sieht das so aus als ob es flackert.
Zitat :
techno hat am 7 Jan 2007 20:06 geschrieben :
|
Hallo zusammen,
ich bin gerade dabei mit einem Mikrocontroller und einem LCD eine Menüführung für eine Schaltuhr aufzubauen.
Ich habe aber dabei folgendes Problem.
Immer wenn ich das LCD (HD44780 Controller)mit dem Displaybefehl 0x01 löschen möchte und auch auch danach eine Pausenzeit von über 1,64 ms einhalte kommt es jedesmal durcheinander und fängt an zu flackern.
Muss ich das LCD danach jedesmal neu initialisieren ,
oder ist es besser wenn ich den Textpuffer an den entprechenden Stellen mit einem Leerzeichen 0xFE überschreibe ?
Ich möchte mich hiermit schon im voraus bei allen Helfenden bedanken.
mfg techno
|
|
BID = 397909
techno Neu hier
Beiträge: 29
|
Hallo zusammen,
dauert bei mir etwas länger bis ich Antworten kann,
weil ich leider nur am Abend Zeit habe.
Ich habe einmal meine LCD Routine hochgeladen.
Nach der Initialisierung lasse ich auf dem LCD 2,5 Sekunden die Version des Programmes und den Autor anzeigen.
Danach lösche ich das Display mit den Befehlen
movlw B'00000001'
call OutLcdControl
an dieser Stelle des Programms funktioniert das auch.
Wenn ich aber versuche an einer anderen Stelle im Programm die selben Befehle auszuführen dann kommt es zu dem besagten Fehler.
Die Routine "OutLcdControl" überprüft doch auch das Busy Flag und ein folgender Schreibbefehl wartet doch auch solange bis das Busy Flag wieder gelöscht ist.
Eine weitere Frage die ich noch habe ist.
Auf Sprut seiner Seite habe ich gelesen das die Anfangsadressen für ein zweistelliges LCD 0x00 und 0x40 sind
warum muss ich dann B'10000000' für die 1.Zeile und B'11000000' für die 2.Zeile als Steueradresse senden?
Ich habe vermutet dass das MSB das Busy Flag ist. ?????
mfg techno
|
BID = 398136
techno Neu hier
Beiträge: 29
|
Hallo zusammen,
ich habe meinen groben Anfängerfehler gefunden.
Der Fehler bestand darin, dass ich in verschiedennen Menüpunkten das LCD ständig gelöscht und wieder beschrieben habe.
Dadurch kamm es zu einer flackernden Anzeige.
Ich weis jetzt auch dass das MSB in der Steueradresse für Selektierung im DDRAM genutzt wird.
Vielen Dank für eure Hilfe.
mfg techno
|
BID = 398833
techno Neu hier
Beiträge: 29
|
Hallo zusammen,
wie kann ich dieses Thema schließen ?
mfg techno
|