Forum: Mikrocontroller und Digitale Elektronik LCD Display/Cursor Position auslesen


von Parvis S. (parvis)


Lesenswert?

Hallo Leute,

ich habe mir vor kurzem ein 1x16Zeichen LCD von Reichelt(lcd 161a) 
angeschafft (KS0066U-Controller) und ihn via dem ASM LCD-Tutorial 
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD) auch gleich 
mal angesteuert. Nach anfaenglichen Problem funktioniert auch alles 
soweit ganz okay. Jetzt aber zu meiner Frage, die ich mit Hilfe des 
Tutorials/Foren nicht beantwortet bekommen habe:

Wie kann ich die aktuelle Cursor-Position und den Text aus dem 
LC-Display wieder auslesen?

Und vielleicht noch ne Frage hinterher: Das Display hat die unangenehme 
Eigenschaft, dass die ersten 8 Zeichen im Speicher auf 00h-07h und die 
restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben 
recht unangenehm, weil z.B. beim links schieben die Zeichen 00h-07h -> 
??h-06h und 40h-47h->39h-46h geschoben werden (so stelle ich mir das 
zumindest vor) und daher Zeichen 39h erstmal komplett verschwindet.

Vielleicht hat ja einer von Euch die gleichen Probleme gehabt/geloest 
und kann mir ein wenig weiterhelfen.

Beste Gruesse,

Parvis

von Falk B. (falk)


Lesenswert?

@ Parvis S. (parvis)

>Wie kann ich die aktuelle Cursor-Position und den Text aus dem
>LC-Display wieder auslesen?

Ist selten notwendig/sinnvoll. Den Text kann man auslesen, dazu muss man 
den DDRAM lesen. Die Cursorposition kann man AFIK nicht auslesen. Muss 
man auch nicht, schlieslich kann der uC sie setzen, dann weiss er wo der 
Cursor steht.

>restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben
>recht unangenehm,

Das kann man direkt per Befehl.

MFG
Falk

von Parvis S. (parvis)


Lesenswert?

> Ist selten notwendig/sinnvoll. Den Text kann man auslesen, dazu muss man
> den DDRAM lesen. Die Cursorposition kann man AFIK nicht auslesen. Muss
> man auch nicht, schlieslich kann der uC sie setzen, dann weiss er wo der
> Cursor steht.

Das Auslesen ist genau mein Problem. Wie mache ich das??? Aus dem 
Datenblatt lerne ich zwar welches Lesekommando es gibt, aber was mache 
ich danach??? Lese ich nach dem Lese-Befehl die Daten analog ein wie ich 
sie schreiben wuerde???

Den Cursor betreffend hatte ich mir gedacht, dass man ihn wenn man die 
Position schreiben kann auch wieder einlesen kann. Falls das doch nicht 
geht, dann muss wohl doch eines Cursor-Speicher-Register herhalten.
>
>>restlichen 8 auf 40h-47h liegen. Das macht u.a. das Display-schieben
>>recht unangenehm,
>
> Das kann man direkt per Befehl.

Welcher Befehl???? Der Schiebe-Befehl funktioniert zwar, aber wenn ich 
z.B. den Text '12345678abcdefgh' um eins nach links verschiebe, dann 
erhalte ich '234567 bcdefgh' (wegen der Adressen-Luecke zwischen den 
linken und rechten 8 Zeichen).

Beste Gruesse,

Parvis

von Der M. (steinadler)


Lesenswert?

Parvis S. wrote:
> Welcher Befehl???? Der Schiebe-Befehl funktioniert zwar, aber wenn ich
> z.B. den Text '12345678abcdefgh' um eins nach links verschiebe, dann
> erhalte ich '234567 bcdefgh' (wegen der Adressen-Luecke zwischen den
> linken und rechten 8 Zeichen).
>
> Beste Gruesse,
>
> Parvis

Mach doch einfach einen Zeiger, der dir auf den Text zeigt.
Und in deiner Ausgaberoutine inkrementierst und prüfst du, ob der Zähler 
größer 7 ist, wenn ja dann sendest du halt vorneweg ein Kommando 
"Beginne an Adresse 0x40 mit Schreiben".
Da brauchst du m. E. nix schieben!?

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.