STC12C5A60S2 AD转换,转换结果怎么算

当 AUXR1/ ADRJ=0 时 AD转换结果存 ADC_RES[7.0] 高8位 后两位存ADC_RESL 低两位重点来了,请问,W完整的转换结果怎么算,不胜感激 另外ADC_RES[7.0] 这个中括号里面的7和0是什么意思!

定义一个int类型,如 int a;

然后把ADC_RES的值给a

a = ADC_RES;

由于ADC_RES是高位,低2位在ADC_RESL上,所以a要左移两位
a <<= 2;
然后把ADC_RESL的两位合并上去。由于ADC_RESL是在低两位,所以截取低两位先。用一个变量来存放

char b = ADC_RESL & 0x03;

最后合并
a += b;
这时的a值就是转换的结果值,共10位。
10位的最大值是1023,对应数模转换的参考电压的高电平,0就对应低电平。例如参考电压是5V,那么如果读到的 a = 1023,就是采样得到5V,按这个比例去换算就可得到采样电压的值。

括号内的东西在STC的手册上很常见,是表示这个值有8位,序号从0到7。追问

不清楚为什么要左移动两位

追答

这个真的不知怎么用语言解释,这是二进制数处理的基本过程,很简单很基础的东西,和数模转换毫无关系。
用图表达就是:

ADC_RES = abcdefgh
ADC_RESL = 000000ij

您现在要的数字就是 = abcdefghij

这个数超过8位,只能用int类型来放,所以建立一个int数
0000000000000000

然后放入ADC_RES的8位
00000000abcdefjh

然后左移两位
000000abcdefgh00

然后把ADC_RESL的两位放进来
000000abcdefghij

温馨提示:答案为网友推荐,仅供参考
相似回答