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

📄 7705.c

📁 AD7705驱动程序
💻 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 + -