用ADC0831(串口)测电压,读回来一个8位的数据后(C程序),如何转换成实际电压值?

核心提示电压=(最大输入电压/0831的位数)×读回后的值最大输入电压是你的设计电压比如5V,那么分成256份后就是0.02V,将读回后的值×0.02V就得到实际电压值了。若10V太高可采用电阻分压后得到,并且可以设计不同的分压电阻来切换档位。若要

电压=(最大输入电压/0831的位数)×读回后的值

最大输入电压是你的设计电压比如5V,那么分成256份后就是0.02V,将读回后的值×0.02V就得到实际电压值了。若10V太高可采用电阻分压后得到,并且可以设计不同的分压电阻来切换档位。若要求较高可采用运放来完成0.1-N倍放大后即可。

如果你采用的AD芯片的参考电压是5V,那也就是说把这5V分成256份,每一份的大小是(5/256.)V ,注意这里要进行浮点运算,256后面加上个小数点才能得到小数,不然算出来就总是0。这样,一份是那么多,如果你读AD时得出来的是99,也就是读到了99份,然后乘以分辨率(5/256.)就可以得到电压值了。

也就是:voltage =(float)( 99*(5/256.));

voltage应该是一个foalt型的变量,因为经过上一步运算后voltage就是实际的出来的电压值了。假设算出来的是 2.786543,那要显示的时候,你直接/100势必总是得0。所以要先转换成整数。

假设我们需要保存3位小数点,这样我们先将结果乘以1000,结果赋给一个整型变量tmp = 2786

然后将它分离,tmp/1000 ;tmp%1000/100 ......(我就不写了,你懂的),转后成ASCII码,最后注意在第一个数据后面显示一个小数点就OK了。

 
友情链接
鄂ICP备19019357号-22