Forum: Mikrocontroller und Digitale Elektronik ATtiny2313 Probleme bei LCD-Ausgabe großer Zahlen


von Nico (Gast)


Lesenswert?

Guten Abend an alle AVR- und C-Spezialisten!

Ich programmiere gerade in C mit dem AVR-Studio (+WinAVR) an einem 
ATtiny2313. Nun habe ich das Problem bei der Zahlenausgabe auf einem 
LCD, aber erst bei Zahlen ab 40000 und größer. Dabei entstehen 
Hieroglyphen in den Tausender- und Hunderter-Stellen (z.B. 4xx43). Woran 
kann das liegen? Muss man vielleicht dem Compiler noch irgendwelche 
Optionen geben?

Hier noch meine Ausgabe-Funktion für die Zahlen auf dem LCD:
1
void lcd_long(unsigned long int data)
2
{
3
  unsigned char byt;
4
5
  byt = data / 1000000;
6
  data = data - byt * 1000000;
7
  lcddata(byt + 48);
8
  byt = data / 100000;
9
  data = data - byt * 100000;
10
  lcddata(byt + 48);
11
  byt = data / 10000;
12
  data = data - byt * 10000;
13
  lcddata(byt + 48);
14
  byt = data / 1000;
15
  data = data - byt * 1000;
16
  lcddata(byt + 48);
17
  byt = data / 100;
18
  data = data - byt * 100;
19
  lcddata(byt + 48);
20
  byt = data / 10;
21
  data = data - byt * 10;
22
  lcddata(byt + 48);
23
  lcddata(data + 48);
24
}

Ich würde gerne Zahlen von 0 bis ca. 1000000 ausgeben können. Oder gibt 
es eine andere Möglichkeit dies zu tun?

Danke!

von holger (Gast)


Lesenswert?

>void lcd_long(unsigned long int data)

Was ist ein "unsigned long int" ?

void lcd_long(unsigned long data)

>  data = data - byt * 1000000;

  data = data - (unsigned long)byt * 1000000;

>Oder gibt es eine andere Möglichkeit dies zu tun?

sprintf() vieleicht ?

von Nico (Gast)


Lesenswert?

Hallo Holger!

unsigned long int ist glaube das gleiche wie unsigned long.
Bring auch keinen Unterschied!
Aber der cast-Operator vor der byt-Variablen hats gebracht!

Vielen Dank Holger!

von Werner B. (Gast)


Lesenswert?

> Was ist ein "unsigned long int"

Ein "unsigned long int" ist ein vordefinierter Datentyp in C.
Man DARF auch auch die Kurzversion "unsigned long" verwenden ;-)

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.