löschen von nur einer Zeile in einem 2x16 LCD

Gast #1600020
Lesenswert?

Antworter schrieb:
> Hallo, das wirste wohl die entsprechende Zeile anwählen und dann 16
>
> Lerrzeichen schreiben müssen, um nur diese "leer" zu bekommen.
>
> Gruß.

Thorsten Fritzke schrieb:
> Wie wäre es denn wenn du den Cursor an den Anfang der Zeile setzt und
>
> dann Leerzeichen bis an das Ende der Zeile hineinschreibst?


danke ich bin nur nicht schnelle darauf gekommen.

aber es ist etwa zeitkritisch , da bevor die richtige zeile geschrieben 
wird, läuft noch zwei Vorgänge durch (cursor_position(2,1), dann write(" 
") ).

mit einem  z.B Clear(2), würd es nur einen Vorgang brauchen,  und dann 
die gewünschte darstellung.
#1600025
Lesenswert?

Display-boy schrieb:

> danke ich bin nur nicht schnelle darauf gekommen.
>
> aber es ist etwa zeitkritisch , da bevor die richtige zeile geschrieben
> wird, läuft noch zwei Vorgänge durch (cursor_position(2,1), dann write("
> ") ).
>
> mit einem  z.B Clear(2), würd es nur einen Vorgang brauchen,  und dann
> die gewünschte darstellung.

Du kannst ja auch

  den cursor in die 2te Zeile stellen
  Ausgeben, was auch immer du ausgeben musst
  danach noch entsprechend viele Leerzeichen ausgeben um den
     Rest der Zeile auch noch zu löschen.

Und so die schnelle Operation ist ein LCD-Clear dann auch wieder nicht. 
Ganz abgesehen davon, dass das oft in ein wildes Anzeige-Geflacker 
ausartet. Von daher ist es meistens sowieso besser, mittels 
Überschreiben für die korrekte Anzeige zu sorgen.
#1600032
Lesenswert?

Ein Clear braucht 1,64ms (in Hardware implementiert).
Zum Schreiben eine Zeile musst du den Cursor setzten, und dann 16 
Zeichen schreiben. Macht 17x40µs, also 0,68ms.
Letztendlich wäre es bei einem 2x16 also sogar schneller, den Inhalt mit 
Leerzeichen zu überschrieben, als den clear-Befehl auszuführen.
#1600065
Lesenswert?

Uwe ... schrieb:
> Ein Clear braucht 1,64ms (in Hardware implementiert).
> Zum Schreiben eine Zeile musst du den Cursor setzten, und dann 16
> Zeichen schreiben. Macht 17x40µs, also 0,68ms.
> Letztendlich wäre es bei einem 2x16 also sogar schneller, den Inhalt mit
> Leerzeichen zu überschrieben, als den clear-Befehl auszuführen.

Also beim Samsung Cotroller benoetigt ein Clear 1.53ms. Bei Cursor 
setzen und ueberschreiben kommt es darauf an, wo der Cursor steht, da er 
immer nur um eine Stelle nach links oder rechts geschoben werden kann. 
Also bis zu 16x39µs zum Positionieren + 16x Zeichen ausgeben.. Und das 
auch nur, wenn der µC alle 39µs ein Kommando ausgeben kann...

Einzelne Zeile loeschen ist nicht in HW implementiert.


Volker
#1600070
Lesenswert?

Display-boy schrieb:
> mit einem  z.B Clear(2), würd es nur einen Vorgang brauchen,  und dann
> die gewünschte darstellung.

Das beißt sich aber, zeitkritisch und das schnarchlahme Clear.

Clear dauert elend lange und deshalb sieht man auch ein deutliches 
Flackern, wenn man Clear benutzt.

Wenns effizient sein soll und nicht flackern, dann überschreibe mit dem 
neuen Text und fülle hinten mit Leerzeichen auf.


Peter
#1600087
Lesenswert?

hallo,

ich hab mir irgendwann angewöhnt immer eine komplette zeile zu 
schreiben.
in diesem falle also einen string*16. dieser enthält dann eben die 
ausgabe,
dazwischen die leerzeichen für abstände und am ende die leerzeichen zum 
auffüllen der zeile. dabei entfällt dann bei den meisten operationen die 
notwendigkeit des clear.

gruss klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren