Forum: Mikrocontroller und Digitale Elektronik Zahlen>9 auf LC-Display anzeigen


von Simon R. (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit der Darstellung von Zahlen größer als 9 auf dem 
LC-Display. Wenn hochgezählt wird, zeigt er nicht 10,11 usw. an, sondern 
:,; usw. wie die ASCII-Tabelle vorgibt. Daher habe ich versucht die 
Ziffern nacheinander darzustellen...aber statt der Zahl zeigt das 
Display ausschließlich zwei Cursor an, die blinken.

Hier das lächerlich kleine Programm:

int i=0x20; /*als Beispiel i=32*/
int zehner, einer;


  lcd_init();

  zehner=(i/10);
  einer=(i%10);


  lcd_string("Ausfaelle:");
  lcd_data(zehner);
  lcd_data(einer);

Die Unterprogramme wie lcd_init(), lcd_data(), usw. habe ich aus dem 
Tutorial.

Vielleicht habe ich zu einfach gedacht?

Ich freue mich über jede Antwort!!!

von Karl H. (kbuchegg)


Lesenswert?


von Ralf (Gast)


Lesenswert?

Und mit ner einstelligen Ausgabe gehts? Timingprobleme etc.? Kompletter 
Code?

Ralf

von P. S. (Gast)


Lesenswert?

Simon R. schrieb:

> Hier das lächerlich kleine Programm:

Das ist kein Programm, sondern eine Handvoll Zeilen, aus denen sich 
nicht mal die verwendete Sprache zu 100% bestimmen laesst, geschweige 
denn die verwendete Hardware, Bibliotheken, etc.

Spontan wuerde ich mal darauf tippen, dass du mit mit lcd_data( 9) auch 
keine 9 auf dem Display siehst, weil du sie die Zahl nicht in ASCII 
umwandelst.

von Simon R. (Gast)


Lesenswert?

Das mit itoa() habe jetzt an einem einfachen Beispiel getestet...und es 
funktioniert.
Vorher hatte ich es gleich kompliziert erweitert, um es an mein 
vollständiges Programm anzupassen. Und das ging voll in die Hose.
Man muss sich eben langsam vortasten...

Vielen Dank für eure schnellen Antworten.

Simon

von Simon R. (Gast)


Lesenswert?

@ Peter Stegemann:

Das ist nur ein Abschnitt...die Bibliotheken sind selbstverständlich mit 
inbegriffen...ich verwende einen ATMega8 und das AVR Studio mit der 
Programmiersprache C sowie das LC-Display von Electronic Essembly (EA 
DIP 204-4).

Die Zahl 9 konnte ich mit meinem bisherigen Programm anzeigen...nur die 
zweistelligen Zahlen nicht. Deshalb hatte ich es vorher mit der anderen 
Methode versucht.

von Micha (Gast)


Lesenswert?

>Die Zahl 9 konnte ich mit meinem bisherigen Programm anzeigen...nur die
>zweistelligen Zahlen nicht. Deshalb hatte ich es vorher mit der anderen
>Methode versucht.
Wie sieht der Code aus mit dem du die 9 anzeigen kannst?

von micha (Gast)


Lesenswert?

unter der Annhame,das "lcd_data" ein zeichen an die aktuelle 
cursorpos-schreibt und dann automatsch den cursor bewegt versuch mal so 
was:
1
  lcd_data('0'+zehner);
2
  lcd_data('0'+einer);

von Simon R. (Gast)


Lesenswert?

@micha: du hast recht...so funktioniert es ebenfalls. Super, vielen 
Dank. Ich persönlich finde das übersichtlicher, anstatt ständig 
irgendwelche Unterfunktionen zu haben. :-)
Was man selber geschrieben hat, versteht man eben besser! ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>>  zehner=(i/10);
>>  einer=(i%10);
>>  lcd_string("Ausfaelle:");
>>  lcd_data(zehner);
>>  lcd_data(einer);
> Ich persönlich finde das übersichtlicher, anstatt ständig
> irgendwelche Unterfunktionen zu haben. :-)
Denk nochmal darüber nach... :-/
1) Mach das mal mit einer 7 stelligen Zahl...
   char millionen, hunderttausender, zehntausender,
        tausender, hunderter, zehner, einer;
2) Warum schreibst du dann nicht z.B. lcd_string() und lcd_data()
   auch als Inline-Code?

von Karl H. (kbuchegg)


Lesenswert?

Simon R. schrieb:
> @micha: du hast recht...so funktioniert es ebenfalls. Super, vielen
> Dank. Ich persönlich finde das übersichtlicher, anstatt ständig
> irgendwelche Unterfunktionen zu haben. :-)
> Was man selber geschrieben hat, versteht man eben besser! ;-)

Das kann man sicher so sehen.
Und jetzt erweitere deine Funktionalität noch um negative Zahlen, mach 
das ganze für jede beliebige Zahlenbasis und verbanne das alles dann in 
eine leicht zu benutzende Funktion und du hast ... itoa 
nachimplementiert.

Zu Lernzwecken, um zu verstehen wie itoa eigentlich funktioniert ist das 
ok. Aber in realen Programmen erfindet man das Rad nicht ständig neu :-)

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.