打印
[其它应用]

一般情况下AD采集不到数据怎么回事啊

[复制链接]
829|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选择了内部参考电压,有些冲突。

使用特权

评论回复
5
lium| | 2016-6-9 16:55 | 只看该作者
ADCON是控制位,应该在选择好了通道等设置后再设置第7位启用AD功能。请再试试!

使用特权

评论回复
6
guoyt| | 2016-6-9 16:57 | 只看该作者
手册上写的:选择内部基准电压,VREFOS需置1。

使用特权

评论回复
7
langgq|  楼主 | 2016-6-9 16:59 | 只看该作者
是啊,我也说啊

使用特权

评论回复
8
hanwe| | 2016-6-9 17:01 | 只看该作者
那就不知道了。。。

使用特权

评论回复
9
langgq|  楼主 | 2016-6-9 17:02 | 只看该作者
算了,明天再说吧,先结贴了

使用特权

评论回复
10
寻思远| | 2016-8-3 10:47 | 只看该作者
你的ADC问题搞定了吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

932

主题

8762

帖子

1

粉丝