本帖最后由 DIY小幸福 于 2017-6-2 16:20 编辑
采用片上的10位ADC采集端口实际电压为3.3V,但测到的电压为4.02V左右,上下跳动的很厉害,大约在0.3V上下跳动,很奇怪,求大神指教。代码如下:
unsigned int ADC_P11()
{
unsigned int i;
unsigned char status;
unsigned int AD_Dat=0;
unsigned char Tmp;
ADC_CONTR|=0x80;
for (i=0;i<10000;i++);
P1ASF|=0x02;
ADC_CONTR=0xE1;
for (i=0;i<1000;i++);
ADC_CONTR|=0x08;
status=0;
while(status==0)
{
status=ADC_CONTR&0x10;
}
ADC_CONTR&=0xE7; // 将ADC_FLAG清0, 0xE7=1110 0111B,ADC_FLAG=0,ADC_START=0。
AD_Dat = ADC_RES; // 默认高字节高8位。
AD_Dat <<= 2;
Tmp = ADC_RESL;
Tmp &= 0x03;
AD_Dat |= Tmp;
return AD_Dat;
}
int main(void)
{ u8 t;
float Vin;
unsigned int ADvalue; // 存放AD转换返回的结果
while(1)
{
ADvalue=ADC_P11(); // 采样P1.1口模拟输入电压
Vin=VCC*ADvalue/1023*100; // 注意是1023才正确
OLED_ShowNum(103,6,Vin,3,16); //显示电压值
}
}
|