سلام دوستان
من یه برنامه نوشتم برای اندازه گیری دما
اما نمیدونم ایراد کجاست که دمارو صفر نمایش میده
این کد برنام:
[code=cpp]
#include <mega8.h>
#include <delay.h>
#include <lcd.h>
#define ADC_VREF_TYPE 0xC0
#asm
.equ __lcd_port = 0x18;
#endasm
unsigned int ADCWdata = 0;
unsigned int temp = 0;
unsigned int 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 ADCW;
}
void print_temp(unsigned int t)
{
int ch;
lcd_gotoxy(0,0);
ch = (t%10) | 0x30;
lcd_putchar(ch);
ch = (t/10) | 0x30;
lcd_putchar(ch);
}
void main(void)
{
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x87;
lcd_init(16);
while (1)
{
delay_ms(100);
ADCWdata = read_adc(0);
temp = (ADCWdata * 5) / 1024;
temp = temp * 100;
print_temp(temp);
}
}
[/code]
من یه برنامه نوشتم برای اندازه گیری دما
اما نمیدونم ایراد کجاست که دمارو صفر نمایش میده
این کد برنام:
[code=cpp]
#include <mega8.h>
#include <delay.h>
#include <lcd.h>
#define ADC_VREF_TYPE 0xC0
#asm
.equ __lcd_port = 0x18;
#endasm
unsigned int ADCWdata = 0;
unsigned int temp = 0;
unsigned int 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 ADCW;
}
void print_temp(unsigned int t)
{
int ch;
lcd_gotoxy(0,0);
ch = (t%10) | 0x30;
lcd_putchar(ch);
ch = (t/10) | 0x30;
lcd_putchar(ch);
}
void main(void)
{
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x87;
lcd_init(16);
while (1)
{
delay_ms(100);
ADCWdata = read_adc(0);
temp = (ADCWdata * 5) / 1024;
temp = temp * 100;
print_temp(temp);
}
}
[/code]
دیدگاه