mikrocontroller.net

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


Autor: Christian (Gast)
Datum:

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

Autor: Thorsten (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

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

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

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

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

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

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

Autor: Christian (Gast)
Datum:

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

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.