mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik löschen von nur einer Zeile in einem 2x16 LCD


Autor: Display-boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, das wirste wohl die entsprechende Zeile anwählen und dann 16 
Lerrzeichen schreiben müssen, um nur diese "leer" zu bekommen.
Gruß.

Autor: Thorsten Fritzke (thorsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Display-boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dev null (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ist clear() implementiert? Vielleicht macht es auch nix anderes als 
Cursor positionieren und Character rausschreiben, oder ist das gar in HW 
implementiert?

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus De lisson (kolisson)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.