mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik zu ändernde Zahl auf LCD markieren


Autor: Kersten Decker (unbenannt-editor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich verwende das 4x27 LCD von Pollin (HD44780 kompatibel) und die
Ansteuerung von Peter Fleury.

Ich lasse in jeder der 4 Zeile mehrere Werte anzeigen, die über ein
Encoder-Rad verändert werden können.
Über 8 Buttons (4 auf jeder Seite) kann man wählen, welchen Wert man
verändern möchte.

Der aktuell änderbare Wert soll aber auch irgendwie auf dem Display
markiert / hervorgehoben werden, allerdings habe ich keinen Platz für
ein Markierungszeichen. Ich bin mit den 27 Zeichen gerade so
hingekommen.
Den gesamten Wert möchte ich eigentlich nicht blinken lassen. Ich habe
es mit dem Cursor probiert, doch dieser Rast dann durchs Display da ja
alle Werte ständig aktualisiert werden.

Gibt es einen Weg, den Cursor an oder aus zu schalten, ohne das Display
neu zu intialisieren? (alternativ könnte man den Cursor natürlich auf
das nicht existierende 28. Zeichen bewegen)
Kann man den Cursor so einstellen, dass er bei Schreiboperationen nicht
die Position ändert?
Oder gibt es andere Möglichkeiten zur Markierung?

Gruß
Kersten

Autor: Stevko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kersten,

meinst Du so was?

;---------------------------------------------------------------------
;Schaltet den Cursor aus
lcd_Cursor_off:
  push R16
           ldi R16, 0b00001100   ;Cursor aus
           call lcd_command
           call delay_5ms
  pop R16
ret
;---------------------------------------------------------------------
;Schaltet den Cursor ein
lcd_Cursor_on:
  push R16
           ldi R16, 0b00001110   ;Cursor ein
           call lcd_command
           call delay_5ms
  pop R16
ret
;---------------------------------------------------------------------
;Zeichen über Cursor blinkt
lcd_Blink_on:
  push R16
           ldi R16, 0b00001101   ;Blinken ein + Cursor aus
           call lcd_command
           call delay_5ms
  pop R16
ret
;---------------------------------------------------------------------
;Kein Blinken über Cursor
lcd_Blink_off:
  push R16
           ldi R16, 0b00001100   ;Blinken aus
           call lcd_command
           call delay_5ms
  pop R16
ret
;---------------------------------------------------------------------

Gruß
  Stevko

Autor: Kersten Decker (unbenannt-editor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort!

Also ist es doch möglich, den Cursor ohne das Display neu zu
intialisieren, an oder aus zu schalten.
Assembler kann ich leider nicht (rückt hiermit nach oben auf meiner
Liste....)

Das beste wäre ein blinkender Unterstrich beim ersten Zeichen des zu
ändernden Wertes.
Mein Problem ist halt, dass der Cursor immer mitläuft wenn ich was auf
das Display schreibe (also wenn ich das Display aktualisiere). Der
Cursor müsste fest sein.

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde die ausgewählte Zahl invertiert darstellen. Also die
entsprechenden invertierten Bitmaps der Nummern in den LCD-Speicher
schreiben und dann ausgeben.

Autor: Stevko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kersten:

Es ist auch möglich den Cursor auf eine bestimmte Position in der Zeile
zu setzen. Mit push/pop sind das ca. 6 ASM-Zeilen. Ich kann zwar kein
C/Basic aber ich glaube da gibts ensprechende Befehle (gotoxy..?).

Wenn Du Dir das Datenblatt von LCD mal ansiehst, wirst Du erstaunt
sein, was man alles mit dem Display anstellen kann.

Gruß
  Stevko

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin zu 99% sicher, dass man den Cursor unsichtbar machen kann. Habe
leider den Link für eine allgemeine Beschreibung der Befehle nicht hier
;-)

Autor: Stevko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na mr.chip,

was steht denn 4 Postings weiter oben?
Oder meinst Du in einer Hochsprache den Cursor unsichtbar machen?

Gruß
  Stevko

Autor: Kersten Decker (unbenannt-editor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt noch ein paar Versuche mit dem Cursor gemacht:
Cursor aus, Display aktualisieren, an gewünschte Stelle springen,
Cursor wieder an. Cursor aus, Display aktualisieren usw.

Ein Unterstrich als Cursor fällt leider zu wenig auf und ein blinkender
Balken ist seltsam aus. Zumal der Cursor unregelmäßig flackert (durch
das Abschalten bei der Aktualisierung).

Autor: David W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verzählst du da eigentlich immer vom "Abschalten bei der
Aktualisierung" ?

Du kannst
1. den Bildschirm Software-seitig löschen
2. den Cursor an die zu ändernden Stellen setzen, um nur die benötigten
Zeichen auszubessern
3. den Cursor an den Anfang setzen und einfach nochmal alles 4x27
reinschreiben

Autor: Kersten Decker (unbenannt-editor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich aktualisiere Zeile 1-3 komplett, da jede Zeile 4 Werte anzeigt, die
sich ständig ändern. Die vierte Zeile ändert sich nur am Ende und dort
aktualisiere ich auch nur die letzen 2 Zeichen.

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.