Schaltzeiten beim LCD - Display HD44780

#537799
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.
Gast #537802
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
Gast #537810
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
Gast #538018
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
#538030
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.