7705.c

来自「AD7705驱动程序」· C语言 代码 · 共 144 行

C
144
字号
#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 + =
减小字号Ctrl + -
显示快捷键?