Forum: Mikrocontroller und Digitale Elektronik Problem mit CODEVISION_AVR


von Unbekannter (Gast)


Lesenswert?

Guten Abend,

ich habe mir für mein T6963 Display eine weitere FUnktion in CodeVision
AVR programmiert. Ich habe da Probleme eine Integer Zahl auf dem Display
darzustellen. Auf dem Display sollte erstaml ZAHL=19385 erscheinen.
Leider sehe ich da nir die Zahlen 98.
Wo ist da der Haken?

int flash zahl_buffer[20];

void lcd_test(unsigned int x, unsigned int y)
{
 unsigned int address,i=0;
 sprintf(zahl_buffer,"ZAHL=%6d",19385);


 address = ((unsigned int)y * 22) + x + 0x1000;

 out(0x24,address & 0xff,address >> 8);
 for (i=0; zahl_buffer[i]; i++)
  {
   out(0xC0, 0, zahl_buffer[i]-0x20);
  }
}

Wenn diese Funktion ausführe, dann erscheint auf dem Display nicht
exakt "ZAHL=19385 sondern nur jedes zweite Zeichen
"ZH=135". Wie kann dass denn sein?

von Unbekannter (Gast)


Lesenswert?

Das ist unsinn: Leider sehe ich da nir die Zahlen 98.
Es erscheint ZH=135

von Unbekannter (Gast)


Lesenswert?

Ich komme noch als nicht auf den Fehler.
Mit der sprintf FUnktion müsste doch die Konvertierung funktionieren
oder?

von Unbekannter (Gast)


Lesenswert?

Wenn ich es so mache, dann erscheint mal zumindest DEZ:234.
So un nu, wie mache ich die mit einer Float oder Int variable?

char zahl_buffer[20];
char flash format[10];

void lcd_test(unsigned int x, unsigned int y, unsigned char flash
*format)
{
 unsigned int address,i=0;
 sprintf(zahl_buffer,format,234);


 address = ((unsigned int)y * 22) + x + 0x1000;

 out(0x24,address & 0xff,address >> 8);
 for (i=0; zahl_buffer[i]; i++)
  {
   out(0xC0, 0, zahl_buffer[i]-0x20);
  }
}

lcd_test(0,0,"DEZ:%6d");

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.