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
Hallo, das wirste wohl die entsprechende Zeile anwählen und dann 16 Lerrzeichen schreiben müssen, um nur diese "leer" zu bekommen. Gruß.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.