Hallo, Beim Schreibzugriff aus das Display [LCD - Display HD44780]muss man Enable auf '1' und wieder auf '0' setzen. Wie lange muss man dazwischen warten, damit das Display den Befehl verarbeiten kann? Im Datenblatt sind wir nicht fündig geworden.
Hans wrote: > Hallo, > Beim Schreibzugriff aus das Display [LCD - Display HD44780]muss man > Enable auf '1' und wieder auf '0' setzen. Im Tutorial werden einfach zwischen dem Setzen und dem Löschen 3 nop gemacht. Bei meinen Versuchen hat das auch bei 16MHz gelangt. Ohne jetzt den HD44780 zu kennen würde ich mal sagen, dass ein Setzen gefolgt von einem sofortigem Löschen wahrscheinlich auch ausreicht. Sinnvollerweise wird mit dieser 1 auf Enable im HD44780 ja irgendein Flip-Flip getriggert werden, das der Prozessor im HD44780 dann in aller Gemütsruhe irgendwann in nächster Zeit abfragt. > Wie lange muss man dazwischen > warten, damit das Display den Befehl verarbeiten kann? Hier dürfte ein Missverständnis vorliegen. Das LCD arbeitet nicht den Befehl ab solange Enable auf 1 ist. Diese 1 signalisiert dem LCD lediglich: Jetzt kannst du anfangen. Danach kann Enable wieder auf 0 gehen, das LCD arbeitet den Befehl trotzdem weiter ab. Danach musst du dem Display allerdings etwas Zeit geben, bevor du den nächsten Befehl (Daten) mittels Enable in den Controller schiebst.
Die meisten Befehle brauchen 40us, ausser HOME und CLEAR, die brauchen 1,6ms. MFg Falk
Kommt aufs Display drauf an ich hab mal bei nem guten Display 50 Zyklen aufm nem mit 16mhz avr geschafft ist aber wie gesagt abhängig von deimem Display. gruss sven
Hallo, E pulse width (high level) min. 230ns E cyclus time min. 500ns Datenblatt HD44780 S.52 Bus Timing Characteristics. Die Zyklus-Zeit ist eigentlich nur von Bedeutung für den Abstand Schreibzyklus -> erster Lesezyklus für Busy-Flag. Die High-Zeit ist also bei 16MHz rund 4 AVR-Takte, sbi... 3x nop cbi sollten also immer klappen. Gruß aus Berlin Michael
Hi! <. Diese 1 signalisiert dem LCD lediglich: Jetzt kannst <du anfangen. Danach kann Enable wieder auf 0 gehen, Das stimmt so nicht, E ist flankengetriggert und zwar H->L. Mein "E" steht zb. grundsätzlich auf H. zB. Ausgabe in 4Bit-Mode: ;****** SUB Ein Zeichen oder eine Funktion setzen ******************************* Z_set: sbi portb,RS ;RS = 1 Fu_set: swap lcdtmp out portd,lcdtmp cbi portb,E ;E = 0 = Daten übernehmen(LCD) inc takt ;mit TOV0 Takt erzeugen t4: tst takt ;takt noch 1? ->t4 brne t4 sbi portb,E ;E = 1 rcall _2us swap lcdtmp ;Nibbel tauschen out portd,lcdtmp ;und Low-Nibbel ausgeben cbi portb,E ;E = 0 = Daten übernehmen(LCD) inc takt ;mit TOV0 Takt erzeugen t5: tst takt ;takt noch 1? ->t2 brne t5 sbi portb,E ;E = 1 cbi portb,RS ;RS = 0 ret Und das geht ohne Probleme. Viel Erfolg, Uwe
Uwe wrote: > Hi! > <. Diese 1 signalisiert dem LCD lediglich: Jetzt kannst > <du anfangen. Danach kann Enable wieder auf 0 gehen, > Das stimmt so nicht, E ist flankengetriggert und zwar H->L. > Mein "E" steht zb. grundsätzlich auf H. Gute Info. Ich dachte immer es wäre anders rum. Wieder was gelernt.
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.