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


von Kersten D. (unbenannt-editor)


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

von Stevko (Gast)


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

von Kersten D. (unbenannt-editor)


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.

von Marko B. (Gast)


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.

von Stevko (Gast)


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

von mr.chip (Gast)


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
;-)

von Stevko (Gast)


Lesenswert?

na mr.chip,

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

Gruß
  Stevko

von Kersten D. (unbenannt-editor)


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).

von David W. (Gast)


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

von Kersten D. (unbenannt-editor)


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.

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
Noch kein Account? Hier anmelden.