Forum: Mikrocontroller und Digitale Elektronik Dezimale Zahl wird binär ausgegeben


von nanotech (Gast)


Lesenswert?

Moinsen!

Ich versuche, eine Integerzahl auf einem Display auszugeben. In einer 
Programmschleife wird von 0 bis 255 gezählt und ein Port mit digitalen 
Ausgängen wird gesetzt. Auf dem Display möchte ich den aktuellen 
Zählerstand als dezimale Zahl haben.

Dazu benutze ich die Funktion itoa():

iz ist ein int und ch ein char.
1
    
2
    for(iz=0;iz<255;iz++)
3
    {
4
      PORTB = iz;
5
      itoa(iz,ch,2);
6
      lcd_ausgabe(ch);
7
      _delay_ms(2500);
8
    }

Auf dem Display wird jetzt aber nicht 0, 1, 2, 3, 4 angezeigt, sondern 
das ganze als Bin-Code. Woran liegt das und wie kann ich das ändern?

von H.J.Seifert (Gast)


Lesenswert?

tja, was verbirgt sich hinter lcd_ausgabe??
und wie bekommt man 2 ASCII-Zeichen in ein char??

von Karl H. (kbuchegg)


Lesenswert?

nanotech schrieb:

> iz ist ein int und ch ein char.

Das wird wohl nicht reichen, wenn eine 3-stellige Zahl ausgegeben werden 
soll. Die würde ja mindestens 3 char benutzen, für jede Stelle einen.
Also, spätestens da solltest du jetzt schon stutzig werden.

http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F
http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F

von Klaus W. (mfgkw)


Lesenswert?


von Peter D. (peda)


Lesenswert?

nanotech schrieb:
> Auf dem Display wird jetzt aber nicht 0, 1, 2, 3, 4 angezeigt, sondern
> das ganze als Bin-Code. Woran liegt das und wie kann ich das ändern?

Es liegt daran, daß Du es so hingeschrieben hast.
Das 3. Argument von itoa(), "2" hat eine bestimmte Bedeutung.

Es könnte recht hülfend sein, wenn man mal nachguckt, was die Argumente 
einer Funktion bedeuten, ehe man sie verwendet.


Peter

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.