搜索
bottom↓
回复: 5

AD7606 C51程序

[复制链接]

出0入0汤圆

发表于 2016-11-8 16:31:43 | 显示全部楼层 |阅读模式
      最近在用AD7606来做项目,感觉这块IC不错,资料齐全,很好用,速度快。在调试过程中间也碰到很多问题,但都一一解决了,下面是C51程序。
分享给大家,高手的请绕过。手下留情。


sbit OS0=P5^2;
sbit OS1=P0^4;
sbit OS2=P0^3;

sbit RANGE=P0^2;
sbit CONVST=P0^1;
sbit ADC_RST=P0^0;

sbit RD_SCK=P4^6; //SPI=SCLK
sbit ADC_CS1=P7^5;         //U19                               
sbit ADC_CS2=P4^5;         //U15                               

sbit FRSTDAT=P7^6; //指示何时读通道1(V1)数据=1;
sbit HBEN=P4^3;   //DB14,选择输出:1=先输出高8位,后输出低8位
sbit BUSY=P7^7;   //在高电平时读取数据

sbit AD_DoutA=P2^0;  //DB7,串行模式用到,输出数据Dout A
sbit AD_DoutB=P4^4;  //DB8,串行模式用到,输出数据Dout B

/*
*****************************************************************************
*        函 数 名: ad7606_Reset
*        功能说明: 硬件复位AD7606
*        形    参:无
*        返 回 值: 无
*****************************************************************************
*/
void ad7606_Reset(void)
{
        /* AD7606是高电平复位,要求最小脉宽50ns */
       
        ADC_RST=0;
       
        ADC_RST=1;
        ADC_RST=1;
        ADC_RST=1;
        ADC_RST=1;
        Delay1ms();
        ADC_RST=0;
}
/*
*********************************************************************************************************
*        函 数 名: ad7606_StartConv
*        功能说明: 启动AD7606的ADC转换
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
void ad7606_StartConv(void)
{
        /* 上升沿开始转换,低电平持续时间至少25ns  */
        CONVST=0;
        CONVST=0;
        CONVST=0;        /* 连续执行2次,低电平约50ns */
        Delay10us();
        CONVST=1;
        Delay100us();
        Delay100us();
//        Delay100us();
}
//******************************************************************************//
void AD7606_init()
{
        Delay1ms();

        ad7606_Reset();
        OS2=1;OS1=1;OS0=0;  //设定过采样
        ADC_CS1=1;
        ADC_CS2=1;
        P2=0x80;
        RD_SCK=1;
        CONVST=1;
        RANGE=0; //选择+/- 5V 输入         
        HBEN=0;   //DB14,选择输出:1=先输出高8位,后输出低8位
}

//***************************************************************************
void AD7606C(uchar acch)//(unsigned int *adcdat)
{
        uint DoutA[4],DoutB[4];
        uint i,j,n;
        uchar TempAH,TempBH,TempAL,TempBL;

        OS2=1;OS1=1;OS0=0;  //设定过采样
        RANGE=1; //选择+/- 10V 输入       
        select_CH(acch);
        P51=1; P35=0;
        delayms(50);

        for(j=0;j<100;j++)
        {
                  
                ad7606_StartConv();        //启动AD7606的ADC转换
                  while(BUSY){;}
                ADC_CS1=0;
                ADC_CS2=1;
                TempAH=0;  TempBH=0;
                TempAL=0;  TempBL=0;

                for(n=0;n<4;n++)
                {
                        TempAH=TempAH<<1;
                        TempBH=TempBH<<1;
                        RD_SCK=0;  
                        if(AD_DoutA)TempAH|=0x01;
                        if(AD_DoutB)TempBH|=0x01;                                 
                        RD_SCK=1;

                        for(i=0;i<7;i++)
                        {               
                                RD_SCK=0;          
                                RD_SCK=1;        
                                TempAH=TempAH<<1;
                                TempBH=TempBH<<1;
                                if(AD_DoutA)TempAH|=0x01;                               
                                if(AD_DoutB)TempBH|=0x01;                                                                                          
                        }
                        for(i=0;i<8;i++)
                        {               
                                RD_SCK=0;          
                                RD_SCK=1;        
                                TempAL=TempAL<<1;
                                TempBL=TempBL<<1;
                                if(AD_DoutA)TempAL|=0x01;                               
                                if(AD_DoutB)TempBL|=0x01;                                                                                          
                        }
                        DoutA[n]=MakeWord(TempAL,TempAH); //MakeWord(L,H);
                        DoutB[n]=MakeWord(TempBL,TempBH);
                }
                //..............................................
                ADC_CS1=1;         
        }

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入4汤圆

发表于 2016-11-8 16:49:00 | 显示全部楼层
这款运放采样率有多快? 能做到多少有效位啊,楼主

出0入0汤圆

 楼主| 发表于 2016-11-8 16:59:43 | 显示全部楼层
datasheet是200K,我只做一般的用途,最小我测量过50mV DC的。精度还可以,+/-0.1mV没问题,再小没试过。

出0入0汤圆

 楼主| 发表于 2016-11-8 17:01:36 | 显示全部楼层
这款IC的亮点我觉得是8路同时测量采集功能不错

出0入0汤圆

发表于 2016-11-15 14:46:04 | 显示全部楼层
C51程序收了~

出0入0汤圆

发表于 2017-1-15 21:47:23 | 显示全部楼层
多谢分享,收下了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 11:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表