Zahlen>9 auf LC-Display anzeigen

Gast #1449014
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!!!
Gast #1449029
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.
Gast #1449035
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
Gast #1449043
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.
Gast #1449059
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?
Gast #1449117
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! ;-)
Moderator (Firma: Titel) Persönliche Seite #1449155
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?
#1449225
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 :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren