[其它应用] 一般情况下AD采集不到数据怎么回事啊

[复制链接]
1100|9
 楼主| langgq 发表于 2016-6-9 16:47 | 显示全部楼层 |阅读模式
一般情况下AD采集不到数据怎么回事啊
wangzsa 发表于 2016-6-9 16:48 | 显示全部楼层
具体看情况啊,你得程序呢
 楼主| langgq 发表于 2016-6-9 16:50 | 显示全部楼层

#include <SH79F6488.H>
#include"periphral.h"
ulong data ADC_Data;

unsigned long data ADCData;
uchar data Temp;
unsigned long data ADvalue;
void ad_init(void)
{
           REGCON=0x01;        //2.7V
        //ADCON=0x80;                //AN2-AIN0   基准电压vref1,和VDDR同源
        //ADCON=0xa0;                //AN2-AIN0   基准电压vref2=1.19        ,和VDDR不同源
        ADCON=0xC4;                //AN0单端输入,VREF=2.7
        //ADCON=0x85;                //AN1单端输入,VREF=2.7
        //ADCON=0x86;                //AN2单端输入,VREF=2.7
        //ADCON=0x87;                //AN3单端输入,VREF=2.7
        //ADCON=0x80;                //差分输入AIN0+和AIN0-
        //ADCON=0x87;                //差分输入AIN1+和AIN1-
        //ADCON=0x87;                //差分输入AIN2+和AIN2-

        

        //ADT=0xFC;                //ADC=XXXHz@12MHz
    //ADT=0xFD;                //ADC=500Hz@12MHz
        //ADT=0xFB;                //ADC=300Hz@12MHz
        //ADT=0xF9;                //ADC=214Hz@12MHz
    ADT=0xF1;                //ADC=100Hz@12MHz
        //ADT=0xE2;                //ADC=50Hz@12MHz  
        //ADT=0xA0;                //ADC=10Hz@12MHz
        //ADCH=0x3F;          //VREF=0.15*VDDR,AIN0
        //ADCH=0x7F;          //VREF=0.22*VDDR,AIN0
        //ADCH=0xBF;          //VREF=0.3*VDDR,AIN0
        ADCH=0xFF;          //VREF=0.4*VDDR,AIN0
        //ADCDS=0x03;            //VINOS=1,ADCDF=1
          PGAM=0x04;            //PGA Gain=1,chop=1K
        //PGAM=0x14;            //PGA Gain=2,chop=1K
        //PGAM=0x24;            //PGA Gain=4,chop=1K
        //PGAM=0x64;            //PGA Gain=8,chop=1K
        //PGAM=0x84;            //PGA Gain=16,chop=1K
        //PGAM=0x94;        //PGA Gain=32,chop=1K
    //PGAM=0xA4;        //PGA Gain=64,chop=1K
        //PGAM=0xE4;        //PGA Gain=128,chop=1K  


        
}

unsigned long ScanADCData(void)
{


        while(1)
        {
                Temp=ADCON&0x40;
                if(Temp==0x40)break;
        }
        ADCON&=0xBF;
        
        ADCData=ADDH;
        ADCData=ADCData*256;
        ADCData=ADCData+ADDM;
        ADCData=ADCData*16;
        ADCData=ADCData+ADDL;

        return ADCData;
}

void main()
{

   ad_init();
   {
      ADvalue=ScanADCData();
   }
}
zhuww 发表于 2016-6-9 16:51 | 显示全部楼层
ADCH的第5位设置为1,表示P1.0作为外部参考电压输入口,而ADCON选择了内部参考电压,有些冲突。
lium 发表于 2016-6-9 16:55 | 显示全部楼层
ADCON是控制位,应该在选择好了通道等设置后再设置第7位启用AD功能。请再试试!
guoyt 发表于 2016-6-9 16:57 | 显示全部楼层
手册上写的:选择内部基准电压,VREFOS需置1。
 楼主| langgq 发表于 2016-6-9 16:59 | 显示全部楼层
是啊,我也说啊
hanwe 发表于 2016-6-9 17:01 | 显示全部楼层
那就不知道了。。。
 楼主| langgq 发表于 2016-6-9 17:02 | 显示全部楼层
算了,明天再说吧,先结贴了
寻思远 发表于 2016-8-3 10:47 | 显示全部楼层
你的ADC问题搞定了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

932

主题

8762

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部