Gast
#321838
Hallo, ich verwende den LM75 und empfange schon die beiden (hoffentlich richtigen) Datenbytes. Als welchen Datentyp muss ich sie abspeichern, damit das richtige Ergebnis raus kommt? Habe schon folgende zwei Versionen getestet: unsigned char temperatur=0x00,temphalf=0x00,temphelp,teiner,tzehner; void TEMP_LCD(void) { temphelp = temperatur; //ersten Datenbyte teiner = 0x00; tzehner = 0x00; do { if (temphelp > 9) // wenn Temperatur > 9 { temphelp = (temphelp - 0x0a); // Temperatur - 10 tzehner ++; // Ausgabebyte Temp.-Zehner + 1 } // end if }while (temphelp > 9); // solange, bis Temperatur < 9 teiner = temphelp; //Rest in Ausgabebyte Temp.-Einer speichern teiner |= 0xb0; // Korrektur f�r LCD tzehner |= 0xb0; // Korrektur f�r LCD temphelp = 0x00; fprintf(uart,"%d%d,%d", tzehner, teiner, temphalf); fprintf(uart,"%o%o,%o", tzehner, teiner, temphalf); fprintf(uart,"%u%u,%u", tzehner, teiner, temphalf); fprintf(uart,"%x%x,%x", tzehner, teiner, temphalf); //nichts hat funktioniert } und Version 2: int temp = buf[0]*256+buf[1]; temp >>=7; if (temp>512) temp &= -1; fprintf(uart,"Temperatur %d in Grad Celsius", temp/2.0); fprintf(uart,"Temperatur %f in Grad Celsius", temp/2.0); fprintf(uart,"Temperatur %e in Grad Celsius", temp/2.0); auch hier hat nichts funktioniert. Habt Ihr vielleicht ein Programm, das geht?