fangjikun 发表于 2013-2-26 16:19:16

请教:PIC18F4520的AN0口电压采集问题

本帖最后由 fangjikun 于 2013-2-26 16:22 编辑

请教:
8路温度传感器的电压(热敏电阻测温,10K热敏电阻上拉,再接个10K电阻到地)经过HCF4051后接到PIC18F4520的19脚AN0口,但采集结果为零,万用表量AN0口确实为0伏。再往前量4051的8个输入端电压在2点几伏,说明测温部分来的电压也差不多对。(4051的6脚INH接地,7脚VEE接地   9、10、11脚选择端是否上拉不影响这个奇怪的现象)
问题来了:将4051的随便那一路输入和输出端3脚短接,原来的2点几伏就降为0.4伏左右,将输出端3脚和5V电源短接,输出端为电源电压,PIC18F4520的AN0口输入有什么要求吗?

fangjikun 发表于 2013-2-26 16:29:19

补充:不同的电压加到AN0脚,采集结果有变化

caochunhua 发表于 2013-2-26 16:39:20

确认AN0设为模拟输入了吗?即ADCON1设置正确了吗?

fangjikun 发表于 2013-2-26 16:50:40

caochunhua 发表于 2013-2-26 16:39 static/image/common/back.gif
确认AN0设为模拟输入了吗?即ADCON1设置正确了吗?

ADCON1=0b00001110;//AN0即19为模拟,参考电压VCC\VSS

fangjikun 发表于 2013-2-26 16:53:35

         
   #define ADC_CASE_A   LATC1//RC1//数模转换选择信号A
   #define ADC_CASE_B   LATC2//RC2//数模转换选择信号B
   #define ADC_CASE_C   LATD0//RD0//数模转换选择信号C


         ADCON1=0b00001110;//AN0即19为模拟,参考电压VCC\VSS
       ADCON0=0b00000001;//选择采集通道AN0,GODONE暂为0,ADON=1:启动AD模块               
       ADCON2=0b10010001;//结果右对齐,采样时间4TAD,时钟FOSC/2

                //HV_A
               ADC_CASE_A=1;
               ADC_CASE_B=1;
               ADC_CASE_C=0;//        CD4051通道7
               GODONE=1; //启动转换
              while(GODONE);//等待转换完成
               HV_A=(ADRESH<<8)|ADRESL;
               
               //HV_C
               ADC_CASE_A=1;
               ADC_CASE_B=1;
               ADC_CASE_C=0;//        CD4051通道6
               GODONE=1; //启动转换
              while(GODONE);//等待转换完成
               HV_C=(ADRESH<<8)|ADRESL;
               
               //HV_B
               ADC_CASE_A=1;
               ADC_CASE_B=1;
               ADC_CASE_C=0;//        CD4051通道4
               GODONE=1; //启动转换
              while(GODONE);//等待转换完成
               HV_B=(ADRESH<<8)|ADRESL;
.。。。。。。。。

topdog 发表于 2013-2-26 17:01:39

fangjikun 发表于 2013-2-26 22:12:55

问题已经找到,单片机初始化时19脚IO口设置为输入(原来搞成输出了)、再ADCON1=0b00001110;//AN0设置为19为模拟,即可
页: [1]
查看完整版本: 请教:PIC18F4520的AN0口电压采集问题