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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.