Hi, leute
Ich habe ein 2x16 Display , die schon sehr gut funktioniert.
nun möchte ich nur anstatt der gesamte Display zu löschen , nur eine
Zeile löschen. wie geht das denn? wie kann man die gewünschte Zeile
Auswählen und löschen?
danke
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.
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.
wie ist clear() implementiert? Vielleicht macht es auch nix anderes als
Cursor positionieren und Character rausschreiben, oder ist das gar in HW
implementiert?
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.
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
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
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