在AVR工作室

时间:2018-05-09 10:56:38

标签: c atmega temperature adc volt

我必须使用ATmega 328p在C中编写程序,将温度转换为电压。

到目前为止,我已经这样做了:

#include <avr/io.h>
unsigned int Ctemp;
unsigned int Ftemp;

int main(void)
{

ADMUX = (1<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0);

ADCSRA = (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN);

ADCSRA |= (1<<ADSC);

while ((ADCSRA & (1<<ADSC)) != 0);

while(1)
{
    ADCSRA |= (1<<ADSC);

    while ((ADCSRA & (1<<ADSC)) != 0);

    Ctemp = (ADC - 247)/1.22;
    Ftemp = (Ctemp * 1.8) + 32;
}

return 1;
}

您能帮我完成转换部分吗?

1 个答案:

答案 0 :(得分:0)

冒着夸大其词的风险,在我看来这里有两个基本操作:

1)获取温度 2)产生输出电压

看起来OP并没有像实际产生模拟电压那样挂在数字上,模拟电压是在步骤1中获得的温度的函数。这并不奇怪,因为大多数微控制器(包括328P)没有模拟输出。但是328P上提供了PWM输出,因此很简单地集成PWM输出,以便在步骤2中获得理想的结果。