找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 895|回复: 0
打印 上一主题 下一主题
收起左侧

AD程序不知道对不对,求大神指导

[复制链接]
跳转到指定楼层
楼主
ID:273783 发表于 2018-1-9 14:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式


#include "INTRINS.H"
#include"reg51.h"
#include"ADC.h"




sbit         AD_SCLK        =    P1^3;
sbit     AD_CS                =         P1^4;
sbit         AD_DIN                =    P1^0;
sbit         AD_DOUT        =    P1^1;
sbit         AD_DRDY        =    P1^2;


#define Delay2us()         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
         
//=================================================================================================
/******************************************************************
名称:void AD7705_Write_Reg(uchar Data_byte);
功能:写AD7705寄存器
指令:无
调用:无
返回:无
/******************************************************************/
void AD7705_Write_Reg(UINT8 Data_byte)
{
        UINT8 i;
        AD_CS=0;
        Delay2us()
        AD_SCLK = 0;
          Delay2us()
        for(i = 0; i < 8; i++)
        {       
                AD_SCLK = 0;
                  if(Data_byte & 0x80)AD_DIN = 1;
                else
                        AD_DIN = 0;
                 
                  Delay2us()
                  AD_SCLK = 1;
      
          Data_byte <<= 1;
        }
          Delay2us()
       
        AD_CS=1;
}
/******************************************************************
名称:uchar AD7705_Read_Reg();
功能:读AD7705寄存器
指令:无
调用:无
返回:Data_read
/******************************************************************/
UINT8 AD7705_Read_Reg(void)
{
        UINT8 i,Data_read;
        UINT16 j;
        AD_SCLK = 1;
        Delay2us()  
        AD_DRDY=1;
        for(j=0;j<10000;j++)if(AD_DRDY)break;
       
        Delay2us()
        AD_CS=0;
        for(i = 0; i < 8; i++)
        {
             AD_SCLK = 0;
             Delay2us()
               
                  Data_read <<= 1;
                AD_SCLK = 1;
                if(AD_DOUT)
                                  Data_read = Data_read|0x01;
                else
                                Data_read = Data_read&0xfe;
                  Delay2us()
           
            Delay2us()
        }
           Delay2us()


          AD_DRDY = 1;
        AD_CS=1;
          return(Data_read);
}
//===================================================================


//===================================================================
void AD7705_Start(UINT8 temp )
{
          if(temp==1)
        {
                AD7705_Write_Reg(0x21);        //选择时钟寄存器,写寄存器,正常模式
                AD7705_Write_Reg(0x08);        //时钟寄存器,二分频,主频2.4576MHz,所以CLK=0;
                AD7705_Write_Reg(0x11);        //选择设置寄存器,写寄存器,正常模式
                  AD7705_Write_Reg(0x70);        //自校准,增益为1,单极性
        }
        else
        {
                AD7705_Write_Reg(0x20);        //选择时钟寄存器,写寄存器,正常模式
                AD7705_Write_Reg(0x08);        //时钟寄存器,二分频,主频2.4576MHz,所以CLK=0;


                AD7705_Write_Reg(0x10);        //选择设置寄存器,写寄存器,正常模式
                  AD7705_Write_Reg(0x78);        //自校准,增益为1,单极性
        }
}
//====================================================================================
void AD7705_Reset(UINT8 temp)  
{
        UINT8 i;
        AD_DIN=1;
        for(i=1;i<=50;i++)
        {
                Delay2us()
                AD_SCLK = !AD_SCLK;
                Delay2us()
        }
        AD7705_Start(temp);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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