for(i=0;i<5;i++)
{
tp=0;
ADC_RES=0; //高八位数据清零
ADC_RESL=0; //低两位清零
ADC_CONTR|=0x08; //启动AD转换
while(!tp) //判断AD转换是否完成
{
tp=0x10;
tp&=ADC_CONTR;
}
ADC_CONTR&=0xe1; //置ADC_FLAG和ADC_START 为零 p1.1 是输入端
ad_average_result=ADC_RES;
q=q+ad_average_result;
}
ad_average_result=q/5;
Vin=ad_average_result;
ad1=Vin*1.9804;
temp1=(int)ad1;
ge1=(temp1%1000)/100; //个位
n1=((temp1%1000)%100)/10; //小数点后一位
m1=(((temp1%1000)%100)%10) ; //小数点后二位
现在可以实现采样精度才到小数点后一位,第二位始终是零。八位ad的话精度应该是1/256应该可以精确到小数点后两位啊?哪位高人明白为什么啊?
变量我好像都是定义的整型的,如果定义成float,最后转换成十进制的时候怎么转换啊,是不是那个ad1=Vin*1.9804; 乘的系数也要改变啊。ad1=Vin*1.9804;
vin应该是二进制数吧,二进制跟十进制相乘结果是什么啊,temp1=(int)ad1;这个是不是强制把ad1变成十进制整型数啊?
adc_data=(ADC_RES&0x03)*256+ADC_RESL中的&0x03是什么意思啊