我必须使用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)获取温度
2)产生输出电压

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

08-18 14:03