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!!!
Und mit ner einstelligen Ausgabe gehts? Timingprobleme etc.? Kompletter Code? Ralf
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.
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
@ 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.
>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?
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); |
@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! ;-)
>> 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.