ad7707.c

来自「16位3通道AD7707基本源码」· C语言 代码 · 共 85 行

C
85
字号
#include <AT89X51.H>
#include<math.h>
#include<INTRINS.h>
#define uchar unsigned char
#define uint unsigned int

sbit AD7707_DRDY=P3^3;
sbit AD7707_DIN=P1^5;
sbit AD7707_DOUT=P1^6;
sbit AD7707_SCLK=P1^7;

bdata uchar WtrByte;
sbit WtrBit=WtrByte^7;


void Init_AD7707(void) /*初始化AD7707*/
{
	uchar i;
	AD7707_SCLK=1;
	AD7707_DIN=1;
	for(i=0;i<100;i++) /*防止接口迷失*/
	{
		AD7707_SCLK=0;
		AD7707_SCLK=1;
	}
}

void WriteToReg_AD7707(uchar RegByte) /*写AD7707寄存器*/
{
	uchar i;
	WtrByte=RegByte;

	for(i=0;i<8;i++)
	{
		AD7707_SCLK=0;
		AD7707_DIN=WtrBit;
                AD7707_SCLK=1;
		WtrByte=WtrByte<<1;

 	}
}
void AD_AINT1(void)  //通道1初始化
{

	WriteToReg_AD7707(0x20); /*激活通道 AIN1/LOCOM, 下一步操作为写 Clock Register*/
	WriteToReg_AD7707(0x18); /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
	WriteToReg_AD7707(0x10); /*激活通道 AIN1/LOCOM, 下一步操作为写 Setup Register*/
	WriteToReg_AD7707(0x44); /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/

}


void AD_AINT2(void)     //通道2初始化
{
  	WriteToReg_AD7707(0x21); //*激活通道 AIN2/LOCOM, 下一步操作为写 Clock Register*/
	WriteToReg_AD7707(0x18); /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
	WriteToReg_AD7707(0x11); /*激活通道 AIN2/LOCOM, 下一步操作为写 Setup Register*/
	WriteToReg_AD7707(0x44); /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/
}
void AD_AINT3(void)   //通道3初始化
{       WriteToReg_AD7707(0x23); /*激活通道 AIN3/HICOM, 下一步操作为写 Clock Register*/
	WriteToReg_AD7707(0x18); /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/
	WriteToReg_AD7707(0x13); /*激活通道 AIN3/HICOM, 下一步操作为写 Setup Register*/
	WriteToReg_AD7707(0x44); /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/

 }
uint Read_AD7707(void) /*读取AD7707数据*/
{
	uchar i;
	uint Data=0;

       while(AD7707_DRDY==1);

	for(i=0;i<16;i++)
	{
		Data=Data<<1;
		AD7707_SCLK=0;
		Data=Data|AD7707_DOUT;
		AD7707_SCLK=1;

         }
	return Data;
}

⌨️ 快捷键说明

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