AD转换的问题//show_value(uchar ad_data){ //0是第二位小数,1是第一位小数,2是整数部分

AD转换的问题
//
show_value(uchar ad_data)
{ //0是第二位小数,1是第一位小数,2是整数部分
dis[2]=ad_data/51; //AD值转换为3为BCD码,最大为5.00V.
dis[2]=dis[2]+0x30; //转换为ACSII码
dis[3]=ad_data%51; //余数暂存
dis[3]=dis[3]*10; //计算小数第一位
dis[1]=dis[3]/51;
dis[1]=dis[1]+0x30; //转换为ACSII码
dis[3]=dis[3]%51;
dis[3]=dis[3]*10; //计算小数第二位
dis[0]=dis[3]/51; //
dis[0]=dis[0]+0x30; //转换为ACSII码
}
以上为程序代码
一、uchar ad_data是pcf8951通过ad转换来的电压值,请问这个电压值是16进制的吗?还是几进制?
二、转换为ACSII码的过程能不能给分析一下,为什么除以51,为什么加0x30?最好举个实数的例子.
yu2121 1年前 已收到1个回答 举报

被冷落的烟灰 幼苗

共回答了22个问题采纳率:90.9% 举报

1 电压值是16进制
2 首先跟你adc的位数有关.假如你adc是8位的,基准电压为3.3v,假如你输入电压为1v
那么adc采样得到的数为:1/3.3x(2e8)
你可以反推过去51是为什么来的.这个51和单片机的位数,基准电压有关.
3 加0x30是因为要转换为ACSII码.这个你可以差ACSII码表.

1年前

4
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.102 s. - webmaster@yulucn.com