首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADC数字数据输出减少1。

ADC数字数据输出减少1。
EN

Stack Overflow用户
提问于 2013-11-19 01:21:46
回答 1查看 1K关注 0票数 1

我一直在做一个关于ATmega 32的模数转换器项目我的模数转换器是10位分辨率,Vref = 2.56V (从这个信息我可以得出步长= 2.56/1024 = 2.5mV

然后,如果输入电压为2.5伏,则数字数据输出必须为2.5V /2.5mV = 1000 = 0b1111101000

我做了这个代码并在proteus中进行了仿真,但是当输入电压为2.5V时,输出为999 (十进制)= 0b1111100111,而不是1000?!

注:数字数据输出正确调整。

这是我的密码:

包括

代码语言:javascript
复制
int main(void)
{
    DDRB = 0xFF;
    DDRD = 0xFF;
    DDRA = 0;
    ADCSRA = 0x87;          //ADC enable, clk/128
    ADMUX = 0xC0;           //Internal vref, single ended ADC0
    while(1){
    ADCSRA |=(1<<ADSC);     //start conversion
    while(ADCSRA & (1<<ADIF) == 0);
    PORTD = ADCL;
    PORTB = ADCH;
    }   
    return 0;
}

这是proteus模拟的输出

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 01:26:35

你的数学有点差。在0V时,模数转换器的输出为0,因此只有1023步骤才能达到2.56V。

2.5V / (2.56V / 1023) = 999.02344

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20061355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档