PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahl aus Variable auf Display anzeigen



super-robman
31.08.2011, 13:24
Hallo,

ich benutze die lcdlibrary von Fleury und habe ein kleines Problem. Ich möchte gern eine Zahl aus einer Variable ausgeben (habe LCD Chip KS0073) aber bekomme das irgendwie nicht hin.

Gibt es eine bestimmte Anweisung wie ich das machen kann?

Danke.

Grüße

Robert

KR-500
31.08.2011, 14:38
Hi,

habe das hier im Mikrokontrollernet gefunden ;) http://www.mikrocontroller.net/topic/38923
Ich hoffe ich konnte helfen.

KR-500

super-robman
31.08.2011, 15:45
Danke für die Antwort. Das Display läuft perfekt und ich kann auch allen beliebigen Text ausgeben, wenn ich ihn vorher in den source code reinschreibe. Nur möchte ich zusätzlich Zahlen aus einer Variable ausgeben und das funktioniert irgendwie nicht. Das Text ausgeben funktioniert ohne Probleme.

KR-500
31.08.2011, 16:05
Hi,

du möchtest also eine Zahl die in einer Variable steht ausgeben, dafür musst du sie zu vor in einen String umwandeln das kann z.B. so gehen:




#include <stdlib.h>
#include <stdio.h> // vielleicht auch <std/io.h> weiß leider gerade nicht genau

...

int main (void){
int i = 145; // Die zahl die Ausgegeben werden soll
char s[11]; // Hilfsvariable(n)

itoa(i, s, 10);

lcd_string(s);

return 0;
}



Ok ich habe da jetzt gerade mal so ein bisschen Code hingeschrieben, ganz am Anfang musst du noch die Bibliotheken einfügen mit #include ... Ich weiß leider gerade nicht welche das ist deswegen kannst du einfach beide einbinden. Dann hast du deinen Integer i, den du ausgeben willst. Um ihn auszugeben musst du ihn in einen String umformen, dies geschieht mit hilfe der Funktion itoa(,,); http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ Dort wird die Funktion noch mal genauer erklärt.

Zum Schluss kannst du den String einfach mit deiner enstprechenen Funktion fürs Display ausgeben. Ich hoffe ich habe deine Frage jetzt richtig verstanden^^

Viele Grüße
KR-500

super-robman
31.08.2011, 16:41
Danke für die Hilfe,

ich habe umgewandelt in einen string, aber jetzt bekomme ich, wenn ich es genau so mache wie Du geschrieben hast ganz viele Klammern auf dem Bildschirm, anstatt die Zahlen. Wo könnte da noch der Fehler liegen? (ich benutze lcd_puts_p() zur Ausgabe.

KR-500
31.08.2011, 16:56
Hi,

das kling sehr seltsam... Also ich hab ehrlich gesagt noch nie mit diesem Display Controller gearbeitet und kenne auch die LCD-lib von Peter Fleury nicht, deswegen kann ich leider nicht so viel dazu sagen :(
Also indem String s müssten jetzt dem beispiel von oben nach volgendes drin stehen wenn itoa richtig funktioniert, s[0] = '1', s[1] = '4', s[2] = '5', s[3] = '\0'. Letzteres ist der sogenannte String terminator, dieser signalisert das der String hier zu Ende ist, außderdem ist '\0' nichts anderes als dezimal null. Du könntest jetzt mal ausprobieren mit der Funktion lcd_put_char oder wie sie auch immer heißen mag einfach jeden einzelnen character ausgeben zu lassen:



lcd_put_char(s[0]); // sollte demnach dann die 1 ausgeben
lcd_put_char('1'); //sollte ebenfalls eine eins ausgeben


So könntest du testen ob es an der String-Ausgabe-Funktion liegt, bzw wenn lcd_put_char('1'); nicht klappt, dann weißt du, dass hier der Fehler liegt. (Ich weis nicht ob dus weißt aber '1' steht für den Character im ascii code)

Viele Grüße
KR-500

sternst
31.08.2011, 17:44
ich benutze lcd_puts_p() zur Ausgabe.Und warum das, wo doch der auszugebende String hier ganz offensichtlich nicht im Flash liegt?

super-robman
01.09.2011, 08:48
Sehr gute Frage sternst. Ich habe es zu lcd_puts() geändert und jetzt funktioniert es wie gewünscht.

Vielen Dank Euch allen!!