51单片机采集的AD值的转换程序问题?

AD器件是24位的AD7731,读回来的数据是24位的,分高、中、低三个八位,采集的信号最大值是30mv,假设A,B,C代替采集回来的高,中,低三个八位数据,怎样把ABC... AD器件是24位的AD7731,读回来的数据是24位的,分高、中、低三个八位,采集的信号最大值是30mv,假设A,B,C代替采集回来的高,中,低三个八位数据,怎样把ABC转换成电压值?这种算法貌似不好做,信号还是毫伏级别的,我开始直接把ABC转换成十进制的数,假设是Data,参考电压2.5V,2^24=16777216,利用公式计算:V=Data*2.5/16777216,这样不就溢出了吗?单片机没法算了啊?请教下高手怎样算?通过了加分的 谢谢了啊 O(∩_∩)O哈哈~ 展开
 我来答
越翰宣夏菡
2019-03-21 · TA获得超过3960个赞
知道大有可为答主
回答量:3123
采纳率:31%
帮助的人:180万
展开全部
上次回答了你的问题,难道你上次选择的最佳答案,没有用吗?
--------------------
0~2.5V,对应于AD_data
=
0~11111......1111(24位二进制);
那么1V就是:6710886(十进制)。
用24位值AD_data除以6710886,得到的整数部分就是0~5,即为电压的整数部分。
再把刚才除得的余数,再除以10,取整数将得到0~9,即为电压的第一位小数;
余数,再除以10,取整数将得到0~9,即为电压的第二位小数;
……
想要取多少位小数,就计算多少次。
----
这种算法,既不会溢出,也没有计算误差,我已经用过多年;
呵呵,但是过去都是处理16位数的数值。
楼主现在使用24位的,分辨率达到了0.15微伏,估计
也没有什么用处。
不如舍弃低8位,只用高、中8位,按照16数进行数据处理,精度也可以达到0.038毫伏,足以满足一般的要求了。
----
呵呵,计算误差,肯定是没有的,误差,是显示位数不够引起的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式