原子F4例程关于 ADC 的一点疑惑

2019-07-20 19:53发布

ADC 主函数的主循环中
adcx=Get_Adc_Average(ADC_Channel_5,20);//获取通道5的转换值,20次取平均
  LCD_ShowxNum(134,130,adcx,4,16,0);    //显示ADCC采样后的原始值
temp=(float)adcx*(3.3/4096);          //获取计算后的带小数的实际电压值,比如3.1111
  adcx=temp;                            //赋值整数部分给adcx变量,因为adcx为u16整形
  LCD_ShowxNum(134,150,adcx,1,16,0);    //显示电压值的整数部分,3.1111的话,这里就是显示3
  temp-=adcx;                           //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
  temp*=1000;                           //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
  LCD_ShowxNum(150,150,temp,3,16,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
  LED0=!LED0;
  delay_ms(250);
红 {MOD}部分中的 4096 是怎么确定出来的诶?看了一下实验现象,好像是通过输入最大值3.3V,然后在通过ADC转换得出数值,大概是4096,  所以最后确定为4096的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xuyaqi
1楼-- · 2019-07-20 21:58
F4的AD是12位,它的满码是4096。
还是看不穿
2楼-- · 2019-07-21 00:53
xuyaqi 发表于 2016-9-25 17:59
F4的AD是12位,它的满码是4096。

哦哦,原来如此,那如果设置的是6位的话,相应的值就是64咯?
yyx112358
3楼-- · 2019-07-21 05:19
还是看不穿 发表于 2016-9-25 18:29
哦哦,原来如此,那如果设置的是6位的话,相应的值就是64咯?

没错,就是这样
还是看不穿
4楼-- · 2019-07-21 09:48
yyx112358 发表于 2016-9-25 21:52
没错,就是这样

3Q

一周热门 更多>