51单片机A/D转换器程序问题
//连续读5次,输入通道后多读几次,取最后一次值,以便读出稳定值for(i=0;i<5;i++)num=ReadADC(0);//x10表示把实际值扩大10,如4.5变成...
//连续读5次,输入通道后多读几次,取最后一次值,以便读出稳定值 for(i=0;i<5;i++) num=ReadADC(0);// x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理 x5 表示基准电压5V num=num*5*10/256; TempData[0]=DuanMa[num/10]|0x80; TempData[1]=DuanMa[num%10];这个程序的num=num*5*10/256; 怎么回事啊 看不懂 求大神指点迷津
展开
展开全部
先说下简单的常识:对于8位ADC,单极性输入0-5V时,数字量为0-255,能够分辨的最小电压为20mV,分辨率为2的8次方即256位;接下来看下STC片内8位ADC的转换公式:DATA=256*Vin/Vcc;这个公式可以理解为:转换结果/分辨率=输入电压/基准电压 ;即:DATA/256=Vin/5;变化这个公式后就会得到:Vin=DATA*5/256;当语句num=ReadADC(0);运行后,num=DATA它是二进制数据;待到语句num=num*5*10/256;运行结束后就变成了num=Vin了这时已经转换成十进制数据了,而那个放大10备你是知道的了。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
num=num*5*10/256;
如果是num*5/256就是真实电压值,如果是num=num*5*10/256;就是将电压扩大十倍,因为如果你没有将变量定义成浮点的话,那么算出的结果就只有个位,小数点后面的都给忽略了
如果是num*5/256就是真实电压值,如果是num=num*5*10/256;就是将电压扩大十倍,因为如果你没有将变量定义成浮点的话,那么算出的结果就只有个位,小数点后面的都给忽略了
追问
他为啥转化为电压值啊? 直接用num不可以吗 我把num=num*5*10/256;去掉,数码管就显示不正常。为啥单通道时候
num=ReadADC(0);
TempData[6]=DuanMa[(num%100)/10];
TempData[7]=DuanMa[(num%100)%10];
没有啊???
追答
那不转换怎么显示在数码管上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这说明你是8位AD,基准5V的话,每个码字代表5/256V,另外的10是你要求的乘系数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询