سلام به همه
اقایون من یه پروژه با lm35 نوشتم که دما رو رو ال سی دی نشون بده که نشون میده ولی هر ثانیه یه دمای دیگه نشون میده مثلا یکبار 0 بعد 54 بعد 2 و ... سنسور رو هم سه بار عوض کردم ولی بازم درس نشد. اینم کدشه
#include <mega16.h>
#include <delay.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0xE0
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
char str[16];
int tmp_adc;
void main(void)
{
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0xFF;
PORTC=0x00; DDRC=0x00;
PORTD=0x00; DDRD=0xFF;
// ADC initialization
// ADC Clock frequency: 7.813 kHz
// ADC Voltage Reference: Int., cap. on AREF
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x87;
lcd_init(16);
while (1)
{
tmp_adc = read_adc(0);
PORTD = tmp_adc;
itoa(tmp_adc,str);
lcd_clear();
lcd_putsf("temp:");
lcd_puts(str);
lcd_putsf("'C");
delay_ms(500);
};
}
ممنون میشم کمک کنید