Ich nehm für solche Berechnungen eigentlich immer int werte her, da die der Controller schneller bearbeiten kann als float.
Um eine Nachkommastelle zu kriegen nehm ich immer den zehnfachen Wert der tatsächlichen Temperatur.

Code:
//Berechnung der Temperatur
si_temp=((si_adwert-ad_nullwert)*si_multiplyer)/si_const;
// Die Ganzen Grade Berechnen
si_ones=si_temp/10;
//Die eine Nachkommastelle Berechnen
si_komma=si_temp%10;
// Die Zehnerstellen ans Display ausgeben
itoa(si_ones,uc_disp);
lcd_puts(uc_disp);
lcd_putchar(",");
itoa(si_komma,uc_disp);
lcd_puts(uc_disp);
Das funktioniert aber nur mit einer Nachkommastelle, da die Funktion itoa führende Nullen unterdrückt.
Die Variable ad_nullwert ist der Wert, den der A/D Wandler bei 0°C ausgibt. Die Variable si_mutiplyer ist der Steilheitsfaktor zur kalibrierung der Temperatur. si_const ist eine feste Teilerkonstante die natürlich von von si_multiplyer und der gewünschten Auflösung abhängig ist.
Vorschlag 1024.