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

📄 ad7705.c

📁 Ad7705.c程序,供大家学习,希望对大家有帮助!!!
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char

uchar datah,datal;

sbit cs_7705=P1^0;		 //AD7705片选
sbit din_7705=P1^1;		 //数据输入口
sbit dout_7705=P1^2;	 //数据输出口
sbit clk_7705=P1^3;		 //同步时钟
sbit drdy_7705=P1^4;	 //转换结束标志位



void delay_7705(uchar count_7705)
{
	 uchar i;
	 for(;count_7705>0;count_7705--)
	 for(i=0;i<200;i++)			   //1ms
	 {
	  _nop_();_nop_();_nop_();_nop_();_nop_();
	 }
}

void write_7705(uchar dat)		//写入一个字节
{
	 uchar i;
	 clk_7705=1;
	 cs_7705=0;
	 for(i=0;i<8;i++)
	 {
	  dat=dat<<1;
	  din_7705=CY;
	  clk_7705=0;
	  clk_7705=1;
	 }
	 clk_7705=1;
	 din_7705=1;
	 cs_7705=1;
}


void init_7705()		  //初始化
{
	 uchar i;
	 clk_7705=1;		  //
	 din_7705=1;		  //
	 for(i=0;i<40;i++)	  // 防止接口迷失				  (011数据)
	 {					  // STBY写1进入等待			  (010时钟)
	  clk_7705=0;		  //							 (001设置)
	  clk_7705=1;		  //							(000通信)				(0:正常)
	 }					  //					   (0)(先寄存器)(0写)	(1:等待) (通道选择)
	 write_7705(0x20);	  //通道1,下一个写时钟	   DRDY RS2 RS1 RS0    R/W  STBY        CH1 CH0
	 write_7705(0x06);	  //设置时钟
	 write_7705(0x10);	  //通道1,下一个写设置
	 write_7705(0x44);	  //写设置
	 delay_7705(50);	  //延时50ms
}

uchar read_byte()
{
  uchar i,temp;
  temp=0;
  for(i=0;i<8;i++)
  {
   temp=temp<<1;
   clk_7705=0;
   if(dout_7705)temp=temp|0x01;
   clk_7705=1;
  }
  return temp;
}


void read_7705(uchar channel)
{
 write_7705(0x38|channel);
 while(drdy_7705==1);
 clk_7705=1;
 cs_7705=0;
 datal=read_byte();
 datah=read_byte();
 clk_7705=1;
 din_7705=1;
 cs_7705=1;
}


void main()
{
 init_7705();

 read_7705(0);   //0:通道1  1:通道2   读通道1的16位数据到datah,datal

}


⌨️ 快捷键说明

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