Forum: Mikrocontroller und Digitale Elektronik LCD aktualisieren; einzelne Zeichen löschen?


von Toni (Gast)


Lesenswert?

Hallöchen,

ich frage mich gerade, ob jemand ne Idee hat, wie man einzelne Zeichen 
eines LCD´s löschen, bzw. aktualiseren kann.
Denn das komplette (4x20 Zeichen) LCD zu löschen, um dann die 
"Zeichenmaske" binnen vieler ms wieder aufzubauen finde ich etwas nervig 
und auch ziemlich Rechenlastig.
Also, gibts hier nen Trick, Befehl oder sonstiges um der ganzen Sache 
Herr zu werden?
Der Shift-Befehl schiebt ja nur das Display, beeinflusst aber nicht den 
Textpuffer...

von g457 (Gast)


Lesenswert?

löschen(x, y) ::= write(x, y, " ");

HTH

von H.Joachim S. (crazyhorse)


Lesenswert?

kannst doch die Schreibposition (DD-adress) an eine beliebige Stelle 
setzen und dann ein Zeichen schreiben.

von holger (Gast)


Lesenswert?

>ich frage mich gerade, ob jemand ne Idee hat, wie man einzelne Zeichen
>eines LCD´s löschen, bzw. aktualiseren kann.

Löschen geht mit Leerzeichen drüber schreiben.
Aktualisieren mit Text überschreiben.
Dazu positionierst du einfach den Cursor an die
entsprechende Stelle und schreibst dann halt.

von Spess53 (Gast)


Lesenswert?

Hi

>ich frage mich gerade, ob jemand ne Idee hat, wie man einzelne Zeichen
>eines LCD´s löschen, bzw. aktualiseren kann.

Einfach überschreiben.

MfG Spess

von Bert 0. (maschinist)


Lesenswert?

Hi,

wenn Du eine der gängigen Libs verwendest, z.B. P. Fleurys LCD-Lib, 
kannst Du mit gotoXY() den Cursor an die zu ändernde Position setzen und 
dort andere Zeichen hinschreiben.

Wenn Du das LCD "mit der Hand" programmierst, kannst Du mit dem Befehl 
0b001xxxxx den Adresszähler auf Adresse 0bxxxxx des DDRAM setzen, der 
nächste Data Write schreibt dann dorthin.
Die Adressverwaltung Deines Displays findest Du im Datenblatt.


Gruß...Bert

von Herr M. (herrmueller)


Angehängte Dateien:

Lesenswert?

Ich habe gerade zufaellig eine Schaltung mit 4*20 LCD in Bearbeitung. 
Selbst das Kopieren der kompletten 80 Zeichen aus dem RAM braucht nur 
6.5ms (Atmega8,8MHz,Assembler).

von Toni (Gast)


Lesenswert?

OK, Danke erstmal, werde ich mal testen.
Da ich immer der Annahme war, dass die nächste Postition einfach eine 
Zeile weitergeschoben wird, hatte ich gefragt.
Zur Not habe ich gerade den "DEL" Befehl (0x7F) entdeckt :)

von Herr M. (herrmueller)


Lesenswert?

$7F druckt einen Pfeil.

von Karl H. (kbuchegg)


Lesenswert?

Toni schrieb:
> OK, Danke erstmal, werde ich mal testen.
> Da ich immer der Annahme war, dass die nächste Postition einfach eine
> Zeile weitergeschoben wird, hatte ich gefragt.
> Zur Not habe ich gerade den "DEL" Befehl (0x7F) entdeckt :)

Welchen "DEL" Befehl?

0x7F ist der ASCII Code eines Zeichens, welches des öfteren für DEL 
benutzt wird. Das ist aber ein Zeichen wie jedes andere.
Das LCD führt keine 'Befehle' aus, indem man ihm spezielle Zeichen 
ausgibt. Es zeigt sie einfach nur an.

Wenn du etwas löschen willst, dann schreib Leerzeichen drüber und gut 
ists.
Denn so ist ja auch der Default-Zustand: Alle angezeigten Zeichen sind 
Leerzeichen.

von Toni (Gast)


Lesenswert?

Jut, mit der Überschreiberei der einzelnen Zeichnen funktionierts 
relativ gut, ohne Ruckeln oder sonstige Verzögerungen.

Danke nochmal und gute Nacht :)

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.