📄 7705.c
字号:
#include "p89v51.h"
#include "7705.h"
/************************************************
功能:延时
************************************************/
void delayAD(unsigned char NUM)
{
for(;NUM>0;NUM--);
}
/************************************************
功能:向AD7705写入一个字节
************************************************/
void AD7705Write(unsigned char chr)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCLK = 0;
chr=chr<<1;
MOSI = CY;
SCLK = 1;
}
SCLK = 1;
}
/************************************************
功能:从AD7705读出一个字(16位)
************************************************/
unsigned int AD7705Read(void)
{
unsigned char i;
unsigned int coder = 0;
for(i=0;i<16;i++)
{
SCLK = 0;
coder = coder<<1;
if(MISO)coder+=1;
SCLK = 1;
}
SCLK = 1;
return(coder);
}
/************************************************
功能:AD芯片1初始化
************************************************/
void CH1_AD_Init(void)
{
AD1CS = 0;
AD7705Write(0xFF);
AD7705Write(0xFF);
AD7705Write(0xFF);
AD7705Write(0xFF);
AD1CS = 1;
delayAD(100);
AD1CS = 0;
AD7705Write(0x20); //写ch0 Clock Register
AD1CS = 1;
delayAD(100);
AD1CS = 0;
AD7705Write(0x04); //2.4576MHz时钟,50Hz数据更新速率
AD1CS = 1;
delayAD(100);
AD1CS = 0;
AD7705Write(0x10); //写 Setup Register
AD1CS = 1;
delayAD(100);
AD1CS = 0;
AD7705Write(0x78); //自校准,128 PGA
AD1CS = 1;
}
/************************************************
功能:AD芯片2初始化
************************************************/
void CH2_AD_Init(void)
{
AD2CS = 0;
AD7705Write(0xFF);
AD7705Write(0xFF);
AD7705Write(0xFF);
AD7705Write(0xFF);
AD2CS = 1;
delayAD(100);
AD2CS = 0;
AD7705Write(0x20); //写ch0 Clock Register
AD2CS = 1;
delayAD(100);
AD2CS = 0;
AD7705Write(0x04); //2.4576MHz时钟,20Hz数据更新速率
AD2CS = 1;
delayAD(100);
AD2CS = 0;
AD7705Write(0x10); //写 Setup Register
AD2CS = 1;
delayAD(100);
AD2CS = 0;
AD7705Write(0x78); //自校准,1 PGA
AD2CS = 1;
}
/************************************************
功能:读AD芯片1的1通道AD码(返回为0表示芯片正忙)
************************************************/
unsigned int CH1_AD_Read(void)
{
unsigned int ADcode;
if(!AD1DRY)
{
AD1CS = 0;
AD7705Write(0x38); //
AD1CS = 1;
//delay(1);
AD1CS = 0;
ADcode = AD7705Read();
AD1CS = 1;
return ADcode;
}
else
{
return 0;
}
}
/************************************************
功能:读AD芯片2的1通道AD码(返回为0表示芯片正忙)
************************************************/
unsigned int CH2_AD_Read(void)
{
unsigned int ADcode;
if(!AD2DRY)
{
AD2CS = 0;
AD7705Write(0x38); //
AD2CS = 1;
//delay(1);
AD2CS = 0;
ADcode = AD7705Read();
AD2CS = 1;
return ADcode;
}
else
{
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -