PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable auf LCD ausgeben



Haveaniceday
04.01.2008, 19:34
Hallo zusammen,
habe ein kleines problem mit der ausgabe auf meinem LCD Display.
Benutzte die Libary von Peter Fleury, läuft alles auch soweit ganz gut, nur weiß ich nicht wie ich mit lcd_puts int variablen von meinen Temperatur Senosr ausgeben kann...

Hatte es mit

lcd_putc((int)temperatur);
probiert ist aber anscheinent falsch.

Würde mich freuen wenn mir einer auf die sprünge helfen könnte.

LG Hannes

Micro5
04.01.2008, 20:22
Hallo,

mit der Funktion lcd_putc() kannst du nur ein char ausgeben. Ein integerwert besteht allerdings aus 4 Bytes, also 4 chars. Ich benutze auch die Libary von Peter Fleury und hab das so gelöst:

void lcd_putsint(int zahl)
{
char puffer[5];
itoa(zahl, puffer, 10);
lcd_puts(puffer);
}

Mit dieser Funktion kannst du direkt ein interger-Wert ausgeben, in deinem Fall temperatur.

Gruß micro5

Haveaniceday
04.01.2008, 20:52
Mit deiner kleinen Funktion bekomme ich leider auch keine ausgabe...

Evtl. vertue ich mich jetzt auch ihrgendwie...
Jedenfalls sind die Variablen als:

byte temperatur;
deklariert und können via uart am Pc folgendermaßen ausgegeben werden:

printf("\tTemperatur: %d.%d", (int)temperatur);

Verstehe nicht, warum es mit den LCD jetzt solche probleme gibt :(

Micro5
04.01.2008, 22:07
Hallo,

das Problem bei der Sache ist, dass du temperatur als byte deklariert hast. Ich dachte, dass das ein interger wäre, dann würde die Funktion von mir auch funktionieren. Eine Möglichkeit wäre, dass du den Wert von einem byte in ein interger umwandelst, und dann der Funktion übergibst. Du könntest auch gleich den Wert als interger speicher, wenn das dein vorherigen Programmcode nicht "stört". Vielleicht klappt das Umwandeln von byte in interger so:

int zahl = (*int)&temperatur;

Ist aber nur ein Gedankengang, weis nicht ob das so funzt.

Gruß micro5

Haveaniceday
04.01.2008, 22:18
Ok Danke erstmal, werde ich gleich mal versuchen,
aber gibt es keine möglichkeit den wert "direkt" auszugeben? Ohne ihn erst 2mal umzuformen...?

Haveaniceday
06.01.2008, 20:06
Keiner ne idea wie ich eine als byte deklarierte Variable via lcd_puts ausgeben kann?

oderlachs
20.07.2017, 19:57
Wenn's schon alt ist , ich habe dies so gelöst:




...
#include <stdlib.h> //itoa
....

void WRITE_Int(int zahl)
{
char string[8];

WRITE_Txt(itoa(string,zahl, 10),6,2);
}


Text wird so aufs LCD geschrieben:


/* ================================================== ======================== */
/* */
/* Text schreiben */
/* */
/* ================================================== ======================== */
void WRITE_Txt(char *txt, unsigned char x, unsigned char y) {
SET_Pos(x, y);
int i;
for (i = 0; i <= 16; i++) {
// Durchlauf Textstring bis Stringende: "0"
if (txt[i] == 0)
return;
else
WRITE_Dat(txt[i]);
} // Char ("Zeichen") schreiben
}