سلام
به مشکلی برخوردم در ساخت دماسنج با ATMega8. برنامه ای نوشتم برای سنسور LM 35. این برنامه به شکل نرم افزاری مشکلی نداره. اما مدارشو بستم. عدد روی سگمنت نوسان شدیدی داره :angry:.خازن 100n به AREF وصل هست وولتاژ مرجع هم 2.56 ولت هست. هر درجه هم 10mv تغییر ولتاژ داره. دوستان راهنمایی میکنید.
کلی سرچ کردم اما به جایی نرسیدم. ممنون میشم راهنمایی کنید
اینم برنامه:
به مشکلی برخوردم در ساخت دماسنج با ATMega8. برنامه ای نوشتم برای سنسور LM 35. این برنامه به شکل نرم افزاری مشکلی نداره. اما مدارشو بستم. عدد روی سگمنت نوسان شدیدی داره :angry:.خازن 100n به AREF وصل هست وولتاژ مرجع هم 2.56 ولت هست. هر درجه هم 10mv تغییر ولتاژ داره. دوستان راهنمایی میکنید.
کلی سرچ کردم اما به جایی نرسیدم. ممنون میشم راهنمایی کنید
اینم برنامه:
کد:
#include <mega8.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
int i,a,a1,a2;
float temp,t;
unsigned char segment [] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char read_adc(unsigned char adc_input)
{
ADMUX = adc_input|(0xE0&0xFF);
ADCSRA = ADCSRA|0x40;
while ((ADCSRA&0x10)==0);
ADCSRA = ADCSRA|0x10;
return ADCH;
}
void main (void)
{
temp = 0;
t=0;
PORTC = 0x00;
DDRC = 0x00;
DDRD = 0xFF;
DDRB = 0xFF;
ADMUX = 0xC1;
ADCSRA = 0x83;
while (1)
{
for (i=0;i<=199;i++)
{
temp = read_adc(1);
t=t+temp;
}
t=t/200;
a=t;
a1 = a/10;
a2 = a%10;
t=0;
delay_ms (1);
PORTB = 0x08;
PORTD = segment [a2];
delay_ms (1);
PORTB = 0x04;
PORTD = segment [a1];
}
}





دیدگاه