当前位置:首页 > 单片机 > 单片机
[导读]ADC: 模数转换,将模拟电压转换为数字。ATmega16 有一个10位精度的ADC转换器,具有8路外部模拟输入端,与PORTA口复用。使能AD转换功能后就不能作为I/O口使用。输入模拟电压的范围介于AGND和AVcc之间,如AVcc为5v时,

ADC: 模数转换,将模拟电压转换为数字。

ATmega16 有一个10位精度的ADC转换器,具有8路外部模拟输入端,与PORTA口复用。使能AD转换功能后就不能作为I/O口使用。

输入模拟电压的范围介于AGND和AVcc之间,如AVcc为5v时,10位精度时转换后对应的数值为0-1023(0-0X3F),若为8位精度时,

转换后对应的数值为0-255。若采用内部标准的参考电压2.56V,则输入模拟电压的范围为0-2.56V,10位精度时,2.56V对应的数值为1023.

相关的寄存器有:ADCSRA:ADC控制和状态寄存器,ADMUX:多工选择寄存器,输入通道选择和参考电压源选取。

ADCH,ADCL:数据寄存器,存储转换后的结果,SFIOR:特殊功能寄存器,自动触发源的选择。

操作步骤:

一、 选择ADC的参考电压: ADMUX|=(0<

二、设置转换结果的对齐方式:ADMUX|=(1<

三、选择ADC输入通道:ADMUX|=(0<

四、设置ADC的时钟分频系数:ADCSRA|=(1<

五、使能A/D 转换: ADCSRA|=(1<

六、中断总使能: SREG=0X80;

七、 启动AD转换: ADCSRA|=(1<

八、等待转换完成: while(!ADCSRA&(1<

九、转换完成后手动清ADC中断标志位: ADCSRA|=(1<

十、读取AD转换结果:从AD转换结果寄存器ADCH,ADCL读取结果。

读取ADCL 之后,ADC 数据寄存器一直要等到ADCH 也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于8 比特,那么仅需读取ADCH 就足够了。否则必须先读出ADCL 再读ADCH。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭