Mal 'ne andere Sache vorweg:
Du denkst im Dezimalsystem - mit Zehnerpotenzen zu arbeiten, mit zehn, hundert, tausend zu multiplizieren oder dadurch zu teilen ist für Dich 'n Klacks. Einfach das Komma verschieben...
Der AVR arbeitet binär - also mit Zweierpotenzen. Entsprechend wird das Komma hier beim verdoppeln/halbieren verschoben.
Extrem leicht wird es, wenn man zusammengesetzte Bytes miteinbezieht (Word), also einfach 256mal einen Wert aufaddiert. Dann würde man eigentlich durch 256 teilen müssen (binäres Komma um 8 Stellen verschieben) - aber man kann ja auf das high-Byte des Word auch direkt zugreifen, und das low-Byte verwerfen.
Das ist genau so, als wenn Du im Dezimalsystem zehnmal addierst (integrierst), und die letzte Stelle nicht anzeigst.
Da Du hier aber eh auf BCDs umrechnest, wird 'ne Mittelwertbildung auch im Dezimalsystem einfacher. Du kannst zehn Temperaturen zusammenaddieren, und in Deiner Ausgabe alles um 'ne (Dezimal-)Stelle nach rechts verschoben ausgeben.
ABER!!!
Eigentlich stellt sich ja die Frage, warum die Werte bei Dir so extrem schwanken.
Du scheinst den Sensor im continious mode laufen zu lassen. Du liest mit Kommando 0xAA die Temperatur in Form von 2 Bytes ein (müßte nicht eigentlich jedesmal das 0xAA-Kommando gesendet werden? Laut DB sollte es doch jedesmal so sein: Start, Adresse_schreiben, Kommando0xAA, repeatedStart, Adresse_lesen, byte-lesen, byte-lesen, Stop).
Du verarbeitest jedenfalls nur das High-Byte, den ganzzahligen Anteil der Temperatur. Dieser scheint bei Dir bereits zu schwanken (bekommst Du das mehr oder weniger stark manipuliert, also wenn Du den Sensor langsam erwärmst oder so?)
Derzeit hackst Du einfach die erhaltene Temperatur nach der letzten Dezimalstelle ab, Du verwendest nur den ganzzahligen Anteil. Wenn der Wert jetzt also zwischen 24,9 und 25,0 (dezimal) schwankt, schwankt Deine Anzeige zwischen 24 und 25. Was soll sie aber da Anzeigen?
Im Low-Byte (welches Du nach TempL einliest, aber nie verwendest) befindet sich aber noch 'ne (binäre) Nachkommastelle, die dezimal 0,5 entspricht. wenn dieses bit gesetzt ist (also das low-Byte=128 bzw ungleich 0 ist) sollte die absolute ganzzahlige Temperatur "aufgerundet" werden, bevor das dann in Dezimalstellen zerhackt wird. Was heißt "aufrunden" dann hier?
P.S.: Dein Zahlen-Array sollte korrekterweise Ziffern heißen