Nabend allerseits!!

Muss mich wohl bei Hubert entschuldigen. Bei mir heißt die Zeile auch lcd_gotoxy(12,0).Weiß auch nicht warum das in dem ersten Code den ich gepostet hab falsch ist. Ich bin überzeugt davon gewesen dass ich da nichtsmehr geändert hab. Muss aber wohl so sein. Tut mir wirklich Leid!

Ich hab meinen Code nun mal nach dem Vorschlag von robocat geändert. Danach hat sich schon etwas mehr getan. Dann hab ich noch etwas an den Werten gespielt um die richtige Temperatur zu errechnen. Aber ich glaube das war der falsche Weg. Jetzt wird zwar die Temperatur richtig angezeigt, aber die Temperturänderung stimmt nichtmehr. Wenn ich den Sensor erwärme ändert sich die angezeigte Temperatur max um 2°. Da kann was noch nicht stimmen...
Hier mal noch mein jetziger Code:

Code:
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#include <lcd.h>
#define F_CPU = 4000000UL;


uint16_t readADC(uint8_t);			//Prototyp von readADC
void display(uint16_t result);		//Prototyp von display

int main(void) 
{
	
	DDRD = 0xff;  					//PORT D als Ausgang definieren (Hier sind 8 LED`s angeschlossen
	DDRB = 0xff;					//PORT B als Ausgang
	uint16_t result = readADC(0);	//Auslesen der analogen Spannungen an Pin 0,
									// also ADC0. In result steht das Ergebnis.
	display(result);				//Umrechnung und Ausgabe der Temperatur auf Display und LED`s
	return 0;
}


void display(uint16_t result)
{
	lcd_init(LCD_DISP_ON_CURSOR);	//LCD initialisieren
	lcd_gotoxy(0,0);				//Cursor an erste Stelle setzen
	lcd_puts("Temperatur:");		//"Temperatur" ausgeben
	lcd_gotoxy(12,0);				// Cursor hinter "Temperatur:" setzen
	char buffer[8];					//Array für itoa anlegen
	float f=((float)result*200)/1023;	//
	if(f<0)f=0;
	itoa((int)f,buffer,10);
	lcd_puts(buffer);
	lcd_putc(',');
	f=(f-(int)f)*1000;
	if(f<100)lcd_putc('0');
	if(f<10)lcd_putc('0');
	itoa((int)f,buffer,10);
	lcd_puts(buffer);
	PORTD = result;					//Den Digitalen Wert mit Hilfe der LED`s anzeigen
	return;
}



uint16_t readADC(uint8_t channel) 

{
	uint8_t i;
	uint16_t result = 0;
	
	// Den ADC aktivieren und Teilungsfaktor auf 32 stellen
	ADCSRA = (1<<ADEN) | (1<<ADPS0) | (1<<ADPS2);

	// Kanal des Multiplexers waehlen (ADC 0)
	ADMUX = (!(1<<MUX0)) | (!(1<<MUX1)) | (!(1<<MUX2));
	
	// interne Referenzspannung verwenden (also 2,56 V)
	ADMUX |= (1<<REFS1) | (1<<REFS0);
	
	// Den ADC initialisieren und einen sog. Dummyreadout machen
	ADCSRA |= (1<<ADSC);
	while(ADCSRA & (1<<ADSC));
	
	// Jetzt 3x die analoge Spannung and Kanal channel auslesen
	// und dann Durchschnittswert ausrechnen.
	for(i=0; i<4; i++) {
		// Eine Wandlung
		ADCSRA |= (1<<ADSC);
		// Auf Ergebnis warten...
		while(ADCSRA & (1<<ADSC));
		
		result += ADCW;
	}
	
	// ADC wieder deaktivieren
	ADCSRA &= ~(1<<ADEN);
	
	result /= 4;
	
	return result;
}
Grüße!!

Bean