打印
[51单片机]

AD值转换的问题

[复制链接]
1834|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 | 只看该作者

使用特权

评论回复
5
mmuuss586| | 2015-4-5 15:01 | 只看该作者

找本单片机的实例的书看看吧;

使用特权

评论回复
6
sting_yang| | 2015-4-5 15:05 | 只看该作者
找本C语言的书看看吧

使用特权

评论回复
7
ch5320|  楼主 | 2015-4-5 15:19 | 只看该作者
比如256.622这个浮点数怎样转成LCD显示的BCD码

使用特权

评论回复
8
ch5320|  楼主 | 2015-4-5 15:21 | 只看该作者
要精确是小数后面3位数

使用特权

评论回复
9
hnkf118| | 2015-4-5 17:34 | 只看该作者
小数后面3位数

使用特权

评论回复
10
战神LEBRON| | 2015-4-5 19:24 | 只看该作者
用整数计算效率更高,精确到小数后三位的话扩大1000倍再计算

使用特权

评论回复
11
youluo235| | 2015-4-5 20:32 | 只看该作者
先乘1000,在吧数据的每一位取出来再显示。

使用特权

评论回复
12
ch5320|  楼主 | 2015-4-5 20:58 | 只看该作者
但没办法找到小数的位置

使用特权

评论回复
13
ch5320|  楼主 | 2015-4-5 20:58 | 只看该作者

但没办法找到小数点的位置

使用特权

评论回复
14
lvyunhua| | 2015-4-5 21:35 | 只看该作者
楼主多实践下,就知道了。

使用特权

评论回复
15
cuya| | 2015-4-5 21:49 | 只看该作者
极其简单:
a/65535*350   ----》  (a *350) / 65535   ---> (a*350) >> 16, 取32位乘法结果的高16位

根本不需要浮点运算  

使用特权

评论回复
16
ch5320|  楼主 | 2015-4-5 22:47 | 只看该作者
按照cuya兄弟的方法试试看

使用特权

评论回复
17
ch5320|  楼主 | 2015-4-5 22:50 | 只看该作者
其实我是按此方法算的,但算出来不知道怎样送显示,还有算出的数也不知在内存里面是怎样存储的。

使用特权

评论回复
18
ccSmartmeter| | 2015-4-6 13:53 | 只看该作者
((unsigned long)a*350)>>16

使用特权

评论回复
19
ch5320|  楼主 | 2015-4-6 23:09 | 只看该作者
谢谢各位,我用了一个土方法,就是先算出系数,再和电压/电流相乘(比如电压:voltage=dat1*0.006103516; ),用取余和取模等方法得到每一位数据。但还是不会用浮点算法。

使用特权

评论回复
20
ch5320|  楼主 | 2015-4-6 23:13 | 只看该作者
图片为一个风扇的电流功率及显示电网电压,用AD7705做的。

001.jpg (54.76 KB )

001.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

63

帖子

1

粉丝