Forum: Mikrocontroller und Digitale Elektronik Schaltzeiten beim LCD - Display HD44780


von Hans (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Die meisten Befehle brauchen 40us, ausser HOME und CLEAR, die brauchen 
1,6ms.

MFg
Falk

von Sven S. (Gast)


Lesenswert?

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

von Michael U. (Gast)


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.