早教吧 育儿知识 作业答案 考试题库 百科 知识分享

AD转换的问题//showvalue(ucharaddata){//0是第二位小数,1是第一位小数,2是整数部分dis[2]=addata/51;//AD值转换为3为BCD码,最大为5.00V.dis[2]=dis[2]+0x30;//转换为ACSII码dis[3]=addata%51;//余数暂存dis[3]=dis[3]

题目详情
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?最好举个实数的例子.
▼优质解答
答案和解析
1 电压值是16进制
2 首先跟你adc的位数有关.假如你adc是8位的,基准电压为3.3v,假如你输入电压为1v
那么adc采样得到的数为:1/3.3x(2e8)
你可以反推过去51是为什么来的.这个51和单片机的位数,基准电压有关.
3 加0x30是因为要转换为ACSII码.这个你可以差ACSII码表.