Forum: Mikrocontroller und Digitale Elektronik LCD-Display Shift + Courser


von Christian (Gast)


Lesenswert?

Guten Abend,

ich habe folgende Funktion geschrieben. Diese Funktion ermöglicht mir
Zahlen auf einen LCD anzeigen zu lassen.
Funktioniert auch sehr gut. Nur leider wird erst immer die erste
Stelle der Zahl angezeigt.

Beispiel: Wert 123 -> abgezeigt 321

Jetzt muss ich irgendwie dem Display sagen gehe zwei Zeichen zurück
schreibe den nächsten Wert und rücke das letzte Zeichen auf.

Ich hoffe jemand versteht mein Problem und kann mir helfen. Ich
verstehe das nicht so ganz mit Shift u.s.w.

Mit freundlichen Grüßen
Christian

do {

lcddata(data % 10 + '0');

/* lcdctrl(0x10); //Fuktioniert leider nicht
delayus(5000);
lcdctrl(0x10);
delayus(5000); */


data /= 10;

}while (data);

von Thorsten (Gast)


Lesenswert?

ist das ein hd44780-komp. display?

wenn ja, kannst du doch z.b. den cursor ans ende der zahl bringen, das
den cursor auf linksshift umstellen und dann die zahl der reihe nach
auf das display schreiben.

hab sowas zwar noch nie gemacht/gebraucht, müsste aber klappen

von Christian (Gast)


Lesenswert?

Hallo Thorsten,

Ja es ist ein hd44780-komp. display.

Genau wie du es beschreibst möchte ich es realisieren. Leider
klappt es nicht so ganz.

Gruß Christian

von Karl H. (kbuchegg)


Lesenswert?

Ein anderer Vorschlag:
Anstatt den Cursor da hin und her zu schicken,
kannst Du auch die einzelnen Ziffern in einem
Array zwischenspeichern und aus diesem Zwischenspeicher
in umgekehrter Reihenfolge ausgeben.

  char Digit[6];

  i = 0;
  do {
    Digit[i] = data % 10 + '0';
    data /= 10;
  } while (data);

  while( i )
    lcddata( Digit[i--] );

(Warnung: ungetesteter Code)

von Karl H. (kbuchegg)


Lesenswert?

Und schon der erste Fehler:
i muss natuerlich in der ersten Schleife auch erhoeht
werden. zb. so

  Digit[i++] = data % 10 * '0';

von Christian (Gast)


Lesenswert?

Hallo Karl Heinz Buchegger,

vielen Dank für Deinen guten Lösungsweg. Ich habe es genau so wie in
Deinem Beispiel gemacht.

Ich wünsche Dir noch eine schöne und erfolgreiche Woche.

Mit freundlichen Grüßen
Christian

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.