www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD_Anzeige klappt nicht


Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cri Gri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cri Gri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Danke Oliver

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.