新手求救!单片机电压值的计算问题

主程序为
void main()
{
uint adNum[5];
uint dat0 = 0;
long buf, temp;
uint k, count;
EA = 1;
TMOD = 0x00;
ET0 = 1;
TR0 = 0;
LcdInit();
while(1)
{
count++;
if(count>1)
{
count=0;
k++;
}
if(k >= 96)
k = 0;
dat0 = Read_ADC();
if(dat0 == 0)
LcdInit();
temp = buf = (50 * (dat0 - 32768) / 32767 ) * 1000;
if(buf < 0) buf = -buf;
adNum[4] = buf%10;
adNum[3] = (buf/10)%10;
adNum[1] = (buf/1000)%10;
adNum[2] = (buf/100)%10;
adNum[0] = (buf/10000)%10;
LcdWriteCom(0x80);
LcdWriteData('V');
LcdWriteData('O');
LcdWriteData('L');
LcdWriteData('T');
LcdWriteData('S');
LcdWriteData(':');
if(temp < 0) LcdWriteData('-');
if(adNum[0]) LcdWriteData('0'+adNum[0]);
LcdWriteData('0'+adNum[1]);
LcdWriteData('.');
LcdWriteData('0'+adNum[2]);
LcdWriteData('0'+adNum[3]);
LcdWriteData('0'+adNum[4]);
LcdWriteData('V');
LcdWriteData(0x20);
}
}
计算的数值通过LCD1602只显示整数,小数被舍去。应该怎么办?
...全文
相关推荐
51单片机AD0804模数转换检测电压并显示电压值
本教程将重点讲解如何利用51单片机进行模拟信号到数字信号的转换,即模数转换(Analog-to-Digital Conversion, ADC),并展示如何通过AD0804芯片检测电压,并在单片机上显示电压值
51单片机测电压,输出指定电压
软件方面,开发人员需要编写C或汇编语言程序来控制51单片机,包括初始化I2C通信、读取AD转换结果、计算DA转换所需的数字值以及发送控制指令到PCF8591。
STC单片机AD基准电压问题
之后,再测量待测电压,假设得到的AD转换值为0x190(十进制400)。根据这些数据,可以计算出实际的电压值:V实际 = 基准电压 * 待测电压的AD值 / 基准电压的AD值。
51单片机Protues,通过ADC0809芯片仿真8路电压表,并且在数码管显示电压值。
当51单片机通过控制线选择某个通道并启动转换后,ADC0809会将对应的模拟电压转换为8位数字值,这个数字值随后被读取并用于后续处理。
如何利用单片机ADC模块得到ADC管脚实际电压值
ADC值和实际电压值的换算:若我们已知单片机的VDD是3.3V,那么ADC值从0到4095对应的实际电压范围就是0V到3.3V。换算公式为:实际电压(V)= (ADC读数 / 4095) × VDD。


单片机/工控
