STC单片机AD转换问题
如下图:1、此电AD硬件检测电路接入XPT2046再进入单片机,显示正常,大概为5V的55%2、此硬件电路如下图接入单片机,显示为5V的90%,此时,单片机的P10端口接...
如下图:1、此电AD硬件检测电路接入XPT2046再进入单片机,显示正常,大概为5V的55%2、此硬件电路如下图接入单片机,显示为5V的90%,此时,单片机的P10端口接GND显示为0,接5V也可以显示5V。但不按硬件电路分压的2.6V左右显示。当硬件电路中的电阻值发生变化时,显示值也变化。就是不按硬件分压来显示。3、单片机为STC12C5A60S2,自10位AD转换。P1M1和P1M0在程序中设置为高阻或是开漏都是这样的结果。4、请大家帮忙分析一下,问题 出现在哪里?
void GETAD()
{
P1M0|=0x00;
P1M1|=0x01;
AUXR1|=0x04;
ADC_CONTR |= ADC_POWER; //打开AD转换电源
delay1ms();
ADC_RES=0; //
ADC_RESL=0; //ADC转换结果寄存器清0
P1ASF=0x01; //设置相应的I/O口为ADC模拟通道 P1.0
delay1ms();
ADC_CONTR=ADC_POWER|ADC_START|ADC_SPEEDLL|0x00;
_nop_();_nop_();_nop_();_nop_(); //Must wait before inquiry
while (!(ADC_CONTR&ADC_FLAG)); //Wait complete flag
ADC_CONTR&=0x00; //Close ADC
batvol=ADC_RES*256+ADC_RESL; //Return ADC result
} 展开
void GETAD()
{
P1M0|=0x00;
P1M1|=0x01;
AUXR1|=0x04;
ADC_CONTR |= ADC_POWER; //打开AD转换电源
delay1ms();
ADC_RES=0; //
ADC_RESL=0; //ADC转换结果寄存器清0
P1ASF=0x01; //设置相应的I/O口为ADC模拟通道 P1.0
delay1ms();
ADC_CONTR=ADC_POWER|ADC_START|ADC_SPEEDLL|0x00;
_nop_();_nop_();_nop_();_nop_(); //Must wait before inquiry
while (!(ADC_CONTR&ADC_FLAG)); //Wait complete flag
ADC_CONTR&=0x00; //Close ADC
batvol=ADC_RES*256+ADC_RESL; //Return ADC result
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询