AD7705的操作

更新时间:2023-05-17 21:42:13 阅读: 评论:0

AD7705的操作
我现在使用外部TL431(2.5V基准电压),电源电压为5V,外接晶体振荡器2.4576MHz,电路如下:
程序如下:
-------------------------- AD7705.H -----------------------------------
#ifndef _AD7705_H_
  #define _AD7705_H_
  // 引脚定义
  sbit AD7705_SCLK = P2^4;
  sbit AD7705_DRDY = P2^5;
  sbit AD7705_DOUT = P2^6;
  sbit AD7705_DIN  = P2^7;
  // 通讯寄存器地址定义
  #define  WR_SETUP_REG          0x10      //选中设置寄存器,写
  #define  RD_SETUP_REG          0x18      //选中设置寄存器,读
  #define  WR_CLOCK_REG          0x20      //选中时钟寄存器,写
  #define  RD_DATA_REG            0x38      //选中数据寄存器,读
  #define  WR_OFFSET_REG          0x60      //选中offt寄存器,写
  #define  RD_OFFSET_REG          0x68      //选中offt寄存器,读
  #define  WR_FULL_REG            0x70      //选中full scale寄存器,写
  #define  RD_FULL_REG            0x78      //选中full scale寄存器,读
  #define  SYS_ZERO_CALI          0x80      //系统零校准模式
  #define  SYS_FULL_CALI          0xC0      //系统满量程校准模式
  #define  ZERO_CALIBRATION      0x00      //系统零校准
  #define  FULL_CALIBRATION      0x01      //系统满量程校准
  #define  CLOCK_REG_SET          0x04      //CLOCK寄存器设置,无分频,50HZ输出更新速率吸血鬼日记第三季结局
  #define  DELAY()                {_nop_();_nop_();_nop_();}
  // 函数声明
  void  AD7705_Init(void);
  void  AD7705_Ret(void);
  void  AD7705_Start(void);
  uchar AD7705_ReadByte(void);
  void  AD7705_WritByte(uchar d);
  float AD7705_ReadVol(void);
 
#endif
-------------------------- AD7705.C -----------------------------------
//****************************************************************************
//功能:AD7705串行接口失步后将其复位。复位后要延时500us再访问
//参数:无
//返回:无
//备注:
//****************************************************************************
void AD7705_Ret(void)
{
  uchar data i;
  for( i=0; i<36; i++ )
  {
    AD7705_SCLK = LOW;
    AD7705_DIN = HIGH;    // DIN端口连续写36个周期的高电平,保证复位
    DELAY();
    AD7705_SCLK = HIGH;
    DELAY();
  }
  DelayMS(1);            // 复位之后等待1MS         
}
//****************************************************************************
//功能:从AD7705读一个字节的数据
//参数:无
//返回:读到的一字节数据
//备注:无
//****************************************************************************
uchar AD7705_ReadByte(void)
optium{
wellsfargo
关联词  uchar idata i, d=0;
  // 读数据,高位在前
  for( i=0; i<8; i++ )
  {
    d <<= 1;
    AD7705_SCLK = LOW;
    DELAY();
    if(AD7705_DOUT) d++;
    AD7705_SCLK = HIGH;
    DELAY();
  }
  return d;
}
//****************************************************************************
//功能:往AD7705写1个字节数据
//参数:要写入AD7705的数据
//返回:无
//备注:无
//****************************************************************************
void AD7705_WriteByte(uchar d)
{
  uchar idata i;
  for(i=0; i<8; i++)
  {
    AD7705_SCLK = LOW;
    if(d & 0x80)
      AD7705_DIN = HIGH;
成长的烦恼英文版下载    el     
      AD7705_DIN = LOW;
during怎么读    DELAY();
    AD7705_SCLK = HIGH;
    DELAY();
    d <<= 1;
  }
}
//------------------------------------------------------------------------------------------
//功能:先写offt寄存器,再写full scale寄存器,然后启动7705进行单次转换
//参数:
//返回:无
//备注:
//------------------------------------------------------------------------------------------pfw
void AD7705_Start(void)
{
  // 复位,防止接口迷失
  AD7705_Ret();
 
  // 复位之后一定要重新设置各寄存器,复位之后默认状态为等待对通信寄存器的一次操作
  // 遵循先写命令,后写数据的原则,命令默认写到通信寄存器
  //写OFFSET寄存器
  AD7705_WriteByte(WR_OFFSET_REG);
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(0xFF);
  //写满量程校准寄存器
  AD7705_WriteByte(WR_FULL_REG);
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(0xFF);logogo
  AD7705_WriteByte(0xFF);
  AD7705_WriteByte(WR_CLOCK_REG);  // next write to clock reg,AIN1,  0010 0000
  AD7705_WriteByte(0x00);          // CLKDIS=0,CLKDIV=0,CLK=0,FS1=0,FS2=0  0001 0000
  AD7705_WriteByte(WR_SETUP_REG);  // next write to tup reg,AIN1  0001 0000
  AD7705_WriteByte(0x04);          // 正常状态启动装换,GAIN=1,B/U=0,BUF=0,FSYNC=0,增益=1,双极性
}
 
void AD7705_Init(void)
{
  // 复位,防止接口迷失
流行英文名字  AD7705_Ret(); 
em用法  AD7705_WriteByte(WR_CLOCK_REG);  // next write to clock reg,AIN1,  0010 0000
  AD7705_WriteByte(0x10);          // CLKDIS=0,CLKDIV=0,CLK=0,FS1=0,FS2=0  0001 0000
                                  // 外部主时钟频率为2.4576MHz

本文发布于:2023-05-17 21:42:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/672896.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   复位   数据   选中   电压   命令
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图