LCD_Anzeige klappt nicht

Gast #322091
Lesenswert?

Hallo Leute,

bin am Programieren von einem LCD Display "KS108", so weit
funktioniert schon alles! Wollte mal jetzt was ausprobieren aber geht
leider nicht! Also ich hab eine Funktion gemacht die mir eine
gerechnete Zahl asgeben soll und hier ist die fkt:

  unsigned int a, b, i, Gewicht=2543;
  unsigned char GWert[7];

  a = Gewicht / 1000;
  b = Gewicht % 1000;
  GWert[0] = a;  /*hier speichere ich den ersten Wert von a in den
ersten feldelement. bei mir ist dann a=2 in diesem Schritt*/
  GWert[1] = '.';

  a = b / 100;
  b = b % 100;
  GWert[2] = a;

  a = b / 10;
  b = b % 10;
  GWert[3] = a;
  GWert[4] = b;
  GWert[5] = 'g';
  GWert[6] = '\0';


  lcd_text_pixel(50, 30, GWert); /*damit möchte ich den kompletten

array ausgeben dann. wie ich mir das vorstelle muss dass 2.543g
rauskommen*/
.....
wenn ich das Programm laufen lasse, kriege ich gar nichts auf dem LCD
ausser den Punkt und den Character 'g' aber die variable a die
normaler weise bei dieser Rechnung am ersten Schritt den Wert 2
hat...wird nicht ausgegeben!

ich hab eine selber gemachte ASCII_Tabelle , da mein LCD kein eigenen
Zeichensatz hat!

Arbeite mit einem Atmega32

Es wäre super, wenn einer von euch eine Idee hätte.....!
Gruss
Gast #322092
Lesenswert?

void main(void)
{
unsigned char str[20];
int x;
int y;
int erg;

x= 1;
y=2;

erg = x+y;

sprintf(str,"%d", erg);
init_lcd();
blank_lcd();
print_lcd(1,1,str); //ERG Ausgabe!!!
}

Bei dir musst du lediglich die sprintf - Funktion verwenden und dann
den String "str" ausgeben mit deiner LCD-AUSGABE FUNKTION!!!

Hoffe ich konnte weiter helfen!!!

mfg Cri
Gast #322093
Lesenswert?

Du kannst den String natürlich nennen wie du willst.In den "...."
Zeichen musst du den Datentyp der auszugebenden Variable definiere (in
meinem Beispiel eien Integer variable also %d!!!)

Du müsstest deine Berechnung jedoch auf eine Variable reduzieren da du
ja mit a und b rechnest!!!
Nimm ne float variable!!da kannst du gleich nachkommastellen
berechnen!

z.B.:

float erg,Gewicht=2543;
erg=Gewicht/1000;
sprintf(str,"%f", erg);
lcd_text_pixel(50, 30, str);

Ich denk mal dass das funzn müsste!!!
Gast #322094
Lesenswert?

GWert[0] enthält den Wert 2. Deine Funktion lcd_text_pixel braucht aber
zur Darstellung des Zeichens '2' den dazugehörogen ASCII-Wert. Der
lautet 50.

Entweder nimmst du, wie schon vorgeschlagen, gleich sprintf, oder du
lässt deinen Code, wie er ist, und addierst lediglich zu den einzelnen
Werten in GWert jeweils 48 hinzu.

Oliver

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren