|
如图,我用STC12C5608AD芯片,做一个温度测量,电路上用MF58热敏与10K电阻分压,然后输入到单片机的P1.2口
现在的问题是,如果去掉R9这颗电阻,不连到单片机的AD输入口,那么IN这里的电压是2V多点,对应MF58的电阻查表可以得到温度约10度
把R9接上,信号输入到单片机的AD口,结果IN这里的电压变成3V多了
目前排除了硬件问题,这个分压电路肯定没有问题,在别的单片机上试了是正常的
单片机我换了三个,现象都一样
剩下就是软件的IO口配置问题
但P1.2这个端口的AD功能又是好的,我用液晶显示AD的采样结果,也的确是3V多点,和万用表测量结果一致
查手册,我的端口也配置成AD的输入模式了(P1M0和P1M1,分别是0x04和0x24,换成高阻输入也试过,未能解决)
目前就卡在这个地方,单片机的程序都是正常的,能正确采样电压,只是这个电压似乎受到了单片机AD输入管脚的影响
有没有老哥或者大佬遇到过这个问题?
问过其他人说有没有可能是AD内部有电阻分压了,但手册上也没说明
uint get_adc()
{
uint adc;
ADC_CONTR = 0xe2;
delay_20us(10);
ADC_CONTR = 0xea;
delay_20us(10);
while(!(ADC_CONTR&0x10));
ADC_CONTR = 0xe2;
delay_20us(10);
adc = ADC_DATA;
adc = adc<<2;
adc = adc + ADC_LOW2;
ADC_CONTR = 0x62;
delay_20us(10);
return(adc);
}
上面是AD函数,测试下来是可以正常运行的。
另外我也试过把AD口换到1.1或者1.3,还是出现这个问题。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|