Forum: Mikrocontroller und Digitale Elektronik lcd display hd44780 inhalt lesen in 4-bit modus


von thorbenboy (Gast)


Lesenswert?

jojo ey jo kollegen was geht so ey?

hoffe drücke mich korrekt aus so.

ich hab das lcd display in 4-bit modus (schreiben funktioniert) und 
würde gern den inhalt von einer position lesen. das problem ist, ich 
weiß nicht wie man es im 4-bit modus richtig machen würde.

ich hab was geschrieben, aber funktioniert nicht, 8 bit modus will ich 
nicht. ich benutz einen atmega8.

ich würde mal schreiben, wie ich es sonst mache.

zuerst setze ich die dd-ram addresse, um von einer stelle den inhalt zu 
lesen(zeile, spalte), danach warte ich auf das busy flag, setze rs und 
rw beide auf high und die 4 ausgänge (db4-db7) auf eingang.

danach starte ich enable (signalisiere den befehl rs=1 und rw=1),
schreibe den port inhalt (4-bit) in eine variable und starte wieder die 
enable-operation, um zu signalisieren, dass die nächsten 4 bits gelesen 
werden können.

jedoch löscht sich der inhalt auf dem bildschirm komplett und es 
passiert nix mehr.

hab auch eine grafik im internet gefunden, auf der es eig. auch so 
verdeutlicht ist, dass man 2 mal die enable leitung setzt.

hier ist der link:

http://www.sprut.de/electronic/lcd/lcd4bit.gif


bin für jede hilfe dankbar, liebe elektro kollegen

von Nettiquetto (Gast)


Lesenswert?

thorbenboy schrieb:
> jojo ey jo kollegen was geht so ey?
>
> hoffe drücke mich korrekt aus so.

Nö.

Ich denke du liest erst mal

http://www.mikrocontroller.net/articles/Netiquette

von Felix P. (fixxl)


Lesenswert?

thorbenboy schrieb:
> setze rs und
> rw beide auf high und die 4 ausgänge (db4-db7) auf eingang
In welcher Reihenfolge? Setz mal zuerst die Datenpins als Eingänge und 
erst danach RW auf 1, ansonsten könntest du dir einen Kurzschluss bauen.

Wichtig ist auch, dass das Lesen während des High-Plateaus des 
Enable-Pulses passieren sollte, also vor der fallenden Flanke. In meinen 
ersten Projekten, als ich die vier Datenpins immer am gleichen Port in 
derselben Reihenfolge verwendet habe, spielte das noch keine Rolle, weil 
das Lesen offenbar schneller ging als das Abfallen des Pegels am DB7. 
Als ich aber meine Library dann universeller programmiert habe und 
dementsprechend die Zugriffe komplizierter wurden, hat plötzlich das 
Auslesen des Busy-Flags nicht mehr funktioniert, bis ich im 
Timing-Diagramm gesehen habe, dass ich die Pegel zu spät abfrage.

von thorbenboy (Gast)


Lesenswert?

ja, korrekt felix, das klappt schonmal mit read data. addresscounter 
klappt noch nicht, aber scheint evtl. ein anderer fehler zu sein.

aber hab es so gemacht mit der steigenden flanke.
beim timing diagramm jedoch sieht es eher aus, dass man nach der 
fallenden flanke lesen soll.

jo und bin doch nett, oda nicht, diickaa?

von thorbenboy (Gast)


Lesenswert?

jo felix, danke für deinen ratschlag, hab den shit mit der addresse 
hingeklatscht.

danke dir dicka und dem forum

von Arduinoquäler (Gast)


Lesenswert?

thorbenboy schrieb:
> jo und bin doch nett, oda nicht, diickaa?

Lern doch erst mal richtig das Schreiben. Bei der Selbsteinschätzung
gibt es vielleicht noch leichte Wahrnehmungsstörungen .....

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.