单片机AD0至255的值如何转换成电压

2024年12月01日 10:46
有3个网友回答
网友(1):

如果你采用的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了。

网友(2):

0~255 ----> 0~500,这个转换,应该先乘以 500,再除以 255。

先除,会损失精度。

网友(3):

如果采用的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了。