[51单片机] AD值转换的问题

[复制链接]
2258|22
 楼主| ch5320 发表于 2015-4-4 21:28 | 显示全部楼层 |阅读模式
我做了一个16位AD测电压及电流,测得最大数为65535,如果AD采样数据为a=65530,我算电压的公式为a/65535*350,这个用C51语言怎么写?谢谢了
pan_87 发表于 2015-4-4 22:10 | 显示全部楼层
定义一个float变量,按照公式计算就可。
 楼主| ch5320 发表于 2015-4-4 22:48 | 显示全部楼层
如果算出来是浮点数怎样转为LCD显示数据(不用查表)?
风去 发表于 2015-4-5 12:52 | 显示全部楼层
mmuuss586 发表于 2015-4-5 15:01 | 显示全部楼层

找本单片机的实例的书看看吧;
sting_yang 发表于 2015-4-5 15:05 | 显示全部楼层
找本C语言的书看看吧
 楼主| ch5320 发表于 2015-4-5 15:19 | 显示全部楼层
比如256.622这个浮点数怎样转成LCD显示的BCD码
 楼主| ch5320 发表于 2015-4-5 15:21 | 显示全部楼层
要精确是小数后面3位数
hnkf118 发表于 2015-4-5 17:34 | 显示全部楼层
小数后面3位数
战神LEBRON 发表于 2015-4-5 19:24 | 显示全部楼层
用整数计算效率更高,精确到小数后三位的话扩大1000倍再计算
youluo235 发表于 2015-4-5 20:32 | 显示全部楼层
先乘1000,在吧数据的每一位取出来再显示。
 楼主| ch5320 发表于 2015-4-5 20:58 | 显示全部楼层
但没办法找到小数的位置
 楼主| ch5320 发表于 2015-4-5 20:58 | 显示全部楼层

但没办法找到小数点的位置
lvyunhua 发表于 2015-4-5 21:35 | 显示全部楼层
楼主多实践下,就知道了。
cuya 发表于 2015-4-5 21:49 | 显示全部楼层
极其简单:
a/65535*350   ----》  (a *350) / 65535   ---> (a*350) >> 16, 取32位乘法结果的高16位

根本不需要浮点运算  

 楼主| ch5320 发表于 2015-4-5 22:47 | 显示全部楼层
按照cuya兄弟的方法试试看
 楼主| ch5320 发表于 2015-4-5 22:50 | 显示全部楼层
其实我是按此方法算的,但算出来不知道怎样送显示,还有算出的数也不知在内存里面是怎样存储的。
ccSmartmeter 发表于 2015-4-6 13:53 | 显示全部楼层
((unsigned long)a*350)>>16
 楼主| ch5320 发表于 2015-4-6 23:09 | 显示全部楼层
谢谢各位,我用了一个土方法,就是先算出系数,再和电压/电流相乘(比如电压:voltage=dat1*0.006103516; ),用取余和取模等方法得到每一位数据。但还是不会用浮点算法。
 楼主| ch5320 发表于 2015-4-6 23:13 | 显示全部楼层
图片为一个风扇的电流功率及显示电网电压,用AD7705做的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

63

帖子

1

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