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 + -
显示快捷键?