帮忙解答ADC模数问题

[复制链接]
2566|5
 楼主| 电子write_cai 发表于 2010-12-29 22:37 | 显示全部楼层 |阅读模式
鄙人用的芯片是ADC0832,模拟输入是4V,输出的数字量十进制是204(二进制1100 1100). 此芯片是8位分辨率,电压精度是19.53mv, 所以我想把输入的电压采集后输出在LCD,这个之间的转换怎么做?怎么写 19.53*204的程序呢? 大家帮忙解答啊,谢谢了。
lovedfrien 发表于 2010-12-29 22:49 | 显示全部楼层
用C语言写,算出数据,控制液晶显示,就这么简单
mmax 发表于 2010-12-30 08:29 | 显示全部楼层
你应该是5V的基准。

4V = (204/256)*5V

所以AD读数为 ad_data;
用int型变量
lcd_data = (ad_data /256)*5000;
          =  (ad_data *5000)/256
结果是mV,变量要用Int型的,然后必须先乘后除。

当然你用浮点算也行,最后强制转换。



当然你要
 楼主| 电子write_cai 发表于 2010-12-30 21:30 | 显示全部楼层
输入的5V模拟量被我分压了, 为什么要先乘后除啊?
3# mmax
maychang 发表于 2010-12-30 21:34 | 显示全部楼层
4楼:
先除后乘会损失精度。
mmax 发表于 2010-12-31 14:36 | 显示全部楼层
3# mmax

想了想,用int变量也会溢出,char*5000

还是用更快、更省事的方法:
(ad_data *5000)/256
=ad_data * 19.53
=ad_data * (16+4-0.5+0.03)
=ad_data * (16+4-1/2+1/32)
=ad_data <<4 + ad_data <<2 + ad_data >>5 -  ad_data >>1;

当然ad_data应该设为unsigned int型的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:只要你是拼多多新用户就可以加我微信,微信号772880135验证您是新用户后立刻微信转你20元。欢迎朋友加我微信,多年21ic用户,诚信为本!

157

主题

1534

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部