Forum: Mikrocontroller und Digitale Elektronik LCD_Anzeige klappt nicht


von Gabi (Gast)


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

von Cri Gri (Gast)


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

von Cri Gri (Gast)


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!!!

von OliverSo (Gast)


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

von Gabi (Gast)


Lesenswert?

Hi,

ich danke euch, es hat ja geklappt mit dem letzten Vorschlag :-) Hab
also 48 an GWert addiert!

Danke Oliver

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.