右对齐的时候,10位ADC的结果表示方式为ADCH:ADCL,ADCH是10bit结果的高2位,ADCL是10bit结果的低8位,如果要将ADC的结果存储到一个int型的变量中,那就需要先将ADCH的结果左移8位,再和ADCL的相加,左移8位等价于乘以256
比如一次ADC转换的结果为0x0347,即ADCH=0x03,ADCL=0x47,现在要讲这个结果存储在result中,那就是result=ADCH256+ADCL=0x03256+0x47=0x300+0x47=0x0347,就这样的。
当结果为左对齐的时候,ADCH存储的是10bit结果的高8位,ADCL的最高两位存储的是10bit结果的最低两位,如果以上面的例子说,右对齐的数值是0x0347,变成左对齐的时候就是0xD1C0,这时ADCH=0xD1,ADCL=0xC0。
如果对转换结果的要求不高,只读取8位数据时,就是用左对齐方式读取ADCH的数值,因为0x0347÷4=0x00D1。
综合的结果就是:要计算10bit转换结果,就用右对齐方式最简单;要获得8bit转换结果,就用左对齐方式最简单。
当然,要想把左对齐的结果转换为整形数,就这么计算了:
result=(int)ADCH<<2+ADCL>>6,或者:
result=(int)ADCH4+ADCL/64
在单片机的世界里是有专门的模块完成的,或者单独的芯片,或是电路直接集成在单片机里面,所以,就是ADC
ADC
ADC是模数转换器转换器 的供应商的英文简称,是一种能将模拟信号转变为数字信号的电子元件。通常是将信号采样并保持以后,再进行量化和编码,这两个过程是在转化的同时实现的。
具体的转化步骤在这里就不展开说了,如果是开发者使用,我们应该关注哪些参数
分辨率-说明AD对输入信号的分辨能力,及数值部分的精度。一般模拟采样中使用16位还是24位的AD芯片说的就是分辨率
例如:输入模拟电压的变化范围为0~33 V,输出16位二进制数可以分辨的最小模拟电压为33V / 216=005 mV;
2 转化误差-表示AD实际电压与理论电压的偏差,一般用最低有效位来表示,单位LSB,通常以相对误差的形式出现,比如相对误差≤±LSB/2,表明实际输出的数字量和理论量误差小于最低位的一半。
转换精度-这里一般用转化误差和分辨率来表述,具体就是AD最大量化过程中采用了四舍五入的方法及模拟处理部分的精度问题。
转化时间-即从信号输入开始到输出稳定的信号所经过的时间。不同的AD准换的速度不同,根据实际要求来选型。
工作电压和基准电压(内部或者外部基准):工作电压是AD芯片工作的额定电压,关键的是基准电压,又叫参考电压,可以来之芯片内部又或者外部接入,其决定了AD的分辨率,所有基准电压一定要稳。
以上就是关于请教AVR单片机片内10位ADC转换结果读取问题。全部的内容,包括:请教AVR单片机片内10位ADC转换结果读取问题。、单片机如何一秒读一次adc的值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)