⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad7705.c

📁 C51 AD7705程序源码 本源码已经过调试,工作正常,为2005年所编
💻 C
字号:
/*************************************************************************************
* 编程人员:徐松亮 qq:5387603          email:5387603@qq.com
*************************************************************************************/
#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit sclk_7705=P2^3;
sbit dat_7705=P2^0;
sbit drdy=P2^2;        //转换结束标志DRDY=0;
//sbit ret=P1^6;

void delay(uint i)
{
	while(--i);
}

void wr_7705(uchar x)   //写命令字
{
	uchar i;
  dat_7705=1;
  sclk_7705=1;
  for(i=8;i>0;i--)
	 {
	  sclk_7705=0;
	  dat_7705=x&0x80;
	  sclk_7705=1;
	  x<<=1;
   }
 dat_7705=1;
}

uchar rd_7705_b()    //读8位数据
{
	uchar x=0;
	uchar i;
  dat_7705=1;
  sclk_7705=1;
	for(i=8;i>0;i--)
	 {
	  x<<=1;
	  sclk_7705=0;
	  if(dat_7705)x|=0x01;
	  sclk_7705=1;
   }
  return x;
}

uint rd_7705()   //读16位数据
{
	uint x=0;
	uchar i;
  dat_7705=1;
  sclk_7705=1;
	for(i=16;i>0;i--)
	 {
	  x<<=1;
	  sclk_7705=0;
	  if(dat_7705)x|=0x01;
	  sclk_7705=1;
   }
  return x;
}

/*void ret_7705()
{
	uchar i;
	ret=0;
	for(i=0;i<200;i++);
	ret=1;
}*/
union
{
	uint a;
	uchar b[2];
}abc;
/*
void main()
{
  P2=0xff;
  //ret_7705();
  wr_7705(0xff);      //发至少32个1使芯片复位
  wr_7705(0xff);
  wr_7705(0xff);
  wr_7705(0xff);
  wr_7705(0xff);
    wr_7705(0x20);      //通信    选通写时钟寄存器
	wr_7705(0x02);      //时钟    晶振2.4576MHZ 输出更新频率100HZ 
	wr_7705(0x10);      //通信    选通写设置寄存器
	wr_7705(0x46);
//	wr_7705(0x44);      //设置        01     000     1       0       0 
	while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使)
	wr_7705(0x38);
	rd_7705();
  do{
  while(drdy==1);
  wr_7705(0x38);
  abc.a=rd_7705();
  //P0=abc.b[0];
  P0=abc.b[1];
 // P2=abc.b[1];
  }while(1);
}
*/
void main()
{
  P2=0xff;
  //ret_7705();
  wr_7705(0xff);      //发至少32个1使芯片复位
  wr_7705(0xff);
  wr_7705(0xff);
  wr_7705(0xff);
  wr_7705(0xff);
    
    wr_7705(0x00);      //通讯寄存器
    wr_7705(0x00);      //校准寄存器对A+,A-
 
    wr_7705(0x10);      //设置寄存器  MD1 MD0 G2 G1 G0 B/U BUF FSYNC
//    wr_7705(0x7e);      //01 111 1 1 0  自校准 128增益 单极性 缓冲(允许处理高阻抗源) 滤波器同步
    wr_7705(0x46);      //01 000 1 1 0  自校准 0增益   单极性 缓冲(允许处理高阻抗源) 滤波器同步
  
    wr_7705(0x20);      //时钟寄存器  0 0 0 clkdis clkdiv clk fs1 fs0
	wr_7705(0x04);      //000 0 0 1 10    主时钟不禁止 时钟不分频 晶振1MHZ      输出更新频率50HZ 
//	wr_7705(0x02);      //000 0 0 0 10    主时钟不禁止 时钟不分频 晶振2.4576MHZ 输出更新频率100HZ 
	
//	wr_7705(0x10);      //通信    选通写设置寄存器
//	wr_7705(0x46);      //01 000 1 1 0

	//	wr_7705(0x44);      //设置        01     000     1       0       0 
	while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使)
	wr_7705(0x38);
	rd_7705();
  do{
  while(drdy==1);
  wr_7705(0x38);
  abc.a=rd_7705();
  //P0=abc.b[0];
  P0=abc.b[1];
 // P2=abc.b[1];
  }while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -