code get data adc and put into lcd have run but.....

hi , i write code get adc from adc 3 of atmega8 , and write to lcd
i use codevision on to do it , it havr run , but see on lcd , i have see valua 650… do avr have noise ?
please explain for me .
i devide code to 3 part
part of ; i set up get adc in automatic set function of codevision , it appear true for me
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
part 2 ; i write function put number to lcd , function lcd_putnum
void lcd_putnum(unsigned int x) // funtion to split and write x to lcd
{
unsigned int n,t,c,dv;
n=x/1000;
t= (x-n1000)/100;
c=( x-n
1000-t100)/10;
dv=x-n
1000-t100-c10;
lcd_putchar(n+48);
lcd_putchar(t+48);
lcd_putchar(c+48);
lcd_putchar(dv+48);
}
then in main function , i set up while loop to get value adc in lcd
while (1)
{

x=read_adc(00011);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putnum(x);
delay_ms(1000);

x=0;
}
}
my code particular i sent below thank,

1.c (5.5 KB)