mikrocontroller.net

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


Autor: Simon R. (Gast)
Datum:

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

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

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und mit ner einstelligen Ausgabe gehts? Timingprobleme etc.? Kompletter 
Code?

Ralf

Autor: P. S. (Gast)
Datum:

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

Autor: Simon R. (Gast)
Datum:

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

Autor: Simon R. (Gast)
Datum:

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

Autor: Micha (Gast)
Datum:

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

Autor: micha (Gast)
Datum:

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

Autor: Simon R. (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

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

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

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.