Bitte zeig deinen ganzen Code, so wie er tatsächlich auf dem µC läuft.
Wenn auf deinem LCD der Text "Temperatur" richtig ausgegeben wird, dann
funtkioniert lcd_string schon mal richtig. Und dass itoa da einen Fehler
hat, können wir wohl getrost erst mal als unwahrscheinlich abtun.
D.h. der Fehler liegt in deinem Code. Und meistens ist es ein Fehler,
der durch nicht berücksichtigte Effekt beim Überschreiben von Zahlen
entstehen. Wird eine 2-stellige Ausgabe "88" mit lediglich nur 1 Stelle
überschrieben "5"
+---+---+--+--+--+-...
Vorher | 8 | 8 | | | |
+---+---+--+--+--+-...
dann überschreiben mit "5"
+---+---+--+--+--+-...
Nachher | 5 | 8 | | | |
+---+---+--+--+--+-...
dann steh auf dem Display 'für dich als Mensch' nun mal 58, obwohl du
nur "5" ausgegeben hast. Der Fehler besteht nicht darin, dass da
irgendwie fälschlich "58" ausgegeben wird, sondern dass vergessen wurde,
dass von einer vorhergehenden Ausgabe an der 2. Stelle noch eine 8
steht, die natürlich mit einem Leerzeichen überschrieben werden muss,
wenn die Anzeige von 2-stellig auf 1-stellig wechselt.
Ist aber nur eine Vermutung, was da passiert sein könnte. Daher:
Richtigen, echten, vollständigen Code zeigen!