找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6214|回复: 1
收起左侧

[求助]谁有AD7705的程序啊

[复制链接]
ID:11238 发表于 2009-6-22 10:44 | 显示全部楼层 |阅读模式
[求助]谁有AD7705的程序啊

网上找了很多,好像都不行啊
回复

使用道具 举报

ID:14687 发表于 2009-6-25 15:49 | 显示全部楼层

这是我当初毕业设计的程序可以直接用的包含两个文件:
AD7705.H文件:

 #include <reg51.h>

#ifndef _AD7705_
#define _AD7705_
   
sbit AD7705_CLK  = P3^6;   //AD7705时钟
sbit AD7705_DIN  = P3^4;   //AD7705数据输入端
sbit AD7705_DOUT = P3^3;   //AD7705数据输出端
sbit AD7705_DRDY = P3^2;   //AD770准备好信号
sbit AD7705_REST = P3^5;     //AD7705复位信号,低电平复位

#endif

extern    unsigned int AD_data;
extern void Write_7705(unsigned char Byte);
extern void Read_7705();
extern void Init_7705();




AD7705.C文件:

#include<includes.h>
#define nop _nop_()

   unsigned int AD_data;

void Write_7705(unsigned char Byte)
{
    unsigned char i;
    AD7705_CLK  = 1;
    for(i=8;i>0;i--)
     {
        if(Byte&0x80) AD7705_DIN = 1;
        else   AD7705_DIN = 0;
        AD7705_CLK = 1;
        nop;
        AD7705_CLK = 0;
        nop;
        AD7705_CLK = 1;
        Byte <<= 1;
     }
    AD7705_CLK = 1;
    nop;
    AD7705_DIN = 0;
}

/********************************************************************
**函数原形:uint Read_7705()
**功能:读AD7705转换后数据
**参数:无
**返回值:转换结果
********************************************************************/

void Read_7705(void)
{
   unsigned  char i,j,k=400;

   long int  sum_data=0;
   for(j=0;j<4;j++)      //采集8次
     {
        Write_7705(0x39);
        AD7705_CLK=1;
        while(AD7705_DRDY&&(k--)) ;
  
  //    Display();

      for(i=16;i>0;i--)   //读16位数据
             {
            AD_data=AD_data<<1;
         AD7705_CLK=0;
               nop;
         AD7705_DOUT=1;
          if(AD7705_DOUT) AD_data|=0x0001;
         else           AD_data|=0x0000;
         AD7705_CLK=1;
             }
    AD7705_CLK=1;
       nop;
    AD7705_DIN=1;
    sum_data+=AD_data;
       AD_data=0x0000;
    }
 AD_data=(sum_data>>2);
}

/*********************************************************
**函数原形: void Init_7705(void)
**功能:初始化AD7705,设置为20HZ更新率、双极性、自校准、增益128
**参数:无
**返回值:无
***********************************************************/

void Init_7705(void)    //初始化7705
{
      unsigned char i;
      AD7705_CLK=1;
      nop;
      AD7705_DIN=1;
      for (i=0;i<40;i++) // AD7705复位
        {
         AD7705_CLK=0;
         nop;
         AD7705_CLK=1;
     }
      Write_7705(0x21);    //写通信寄存器设置通道2择下一个操作是写时钟寄存器
      Write_7705(0x0C);    //写时钟寄存器设置更新速率为20Hz
      Write_7705(0x11);    //通道2,下一个写设置寄存器
      //Write_7705(0x7a);  //写设置寄存器,设置成双极性、增益为128、自校
   Write_7705(0x44);
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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