|
ADC使用的是内部的基准电压1.2v。
/*ADC初始化*/
ADCMDE = BIT0 + BIT7; //连续转换模式,ADC时钟频率为512khz
ADCFLT = 0x7; //SF = 7,
ADCCFG = 0;
for (i = 1; i <= 5; i++)
{
/*内部短路至ADC1*/ // 选择ADC1/ADC5单端模式。 电路中ADC5接AGND
ADC0CON = BIT7 + BIT10 + BIT15;
while ((ADCSTA&BIT0) == BIT0) {}
//Delay_ms(1000);
ADC0Data = ADC0DAT;
printf("ADC0Data[%d] = %5d\n", i, ADC0Data);
Delay_ms(1000);
/*内部短路至ADC0*/ //选择ADC0/ADC5单端模式。 电路中ADC5接AGND
//ADC0CON = BIT6 + BIT9 + BIT10 + BIT15;
ADC0CON = BIT6 + BIT10 + BIT15;
while ((ADCSTA&BIT0) == BIT0) {}
//Delay_ms(1000);
ADC1Data = ADC0DAT;
printf("ADC1Data[%d] = %5d\n\n", i, ADC1Data);
Delay_ms(1000);
}
这样采样到的电压:(如下图)
我的想法是:
第一、ADC采样的数据应该是随机变化的才对啊,为什么一直是1.2v呢?
第二、在读取ADC0DAT之后加上Delay_ms()会影响到采集的数值。
第三、我这样在for循环中配置ADC0CON,有什么问题吗?(硬件那边要求,先配置ADC0/ADC5,采集一组数据,然后在配置ADC1/ADC5,采集一组数据,循环)
请大家给些意见!谢谢
[ 本帖最后由 zhoouauruheng 于 2012-10-29 16:26 编辑 ]
|
|