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

📄 7705.c

📁 我电赛时编写的AD7705模块的51驱动代码
💻 C
字号:
#include"7705.h"

/* AD7705通信端口复位 */ 
void Reset7705(void) 
{
    unsigned char i;
	sclk=1;
    for(i=0;i<40;i++)	//*多于连续32个 din=1 使串口复位
    {  
        sclk=0; 
        din =1; 
        sclk=1; 
    }
}

//写入寄存器8位数据
void Write(unsigned char dat)	
{
	
	unsigned i;
	for(i=0;i<8;i++)
	{
		din=(bit)(dat&0x80);
		sclk=1;
		sclk=0;
		sclk=1;
		dat<<=1;//保证t13延时
	}
	din=1;	//为保证不乱写程序,此语句非常重要,否则试验表明很不稳定
}

//从数据寄存器中读出16位数据
unsigned int Read(void)		
							//低电平拉下t5后出数据
{
	unsigned int rtval=0;
	unsigned i;

	for(i=0;i<16;i++)
	{
		sclk=0;
		rtval<<=1;//i=0时,此操作不妨碍
		rtval+=(0x0001&(unsigned int)dout);
		sclk=1;	//程序执行完后sclk仍为高电平
	}
	din=1;	//为保证不乱写程序,此语句非常重要,否则试验表明很不稳定
	return rtval;
}

/*****************************************************
此函数测试用,用于读8位的寄存器
通过修改Write();中的参数值可选择不同的寄存器
*****************************************************/
unsigned Read8bit(void)		//从寄存器中读出8位数据
							//低电平拉下t5后出数据
{
	unsigned rtval=0;
	unsigned i;

	while(drdy==1);
	Write(0x28);			//修改此处值可从不同寄存器中读数
	sclk=1;
	for(i=0;i<8;i++)
	{
		sclk=0;
		rtval<<=1;
		//if(dout)rtval|=0x01;
		rtval+=(0x01&(unsigned)dout);//保证t5
		sclk=1;	//程序执行完后sclk仍为高电平
	}
		sclk=1;
		din=1;
	return rtval;
}
//////////////////////////////////////////////////////

void Adc7705Init(unsigned char range)
{
	range<<=3;
	Reset7705(); 	//复位
	
	//写时钟寄存器
	Write(0x20);	//0x20:00100000 下一个时钟寄存器;写;正常工作模式;通道AN1
	Write(0x07);	//0x07:00000111 主时钟打开;晶振2M;不分频;500Hz;
	
	//写设置寄存器
	Write(0x10);	//0x10:00010000 下一个设置寄存器;写;正常工作模式;通道AN1
	Write(0x46|range);	//0x46:01000110 自校准;单极性;接缓冲,允许处理高阻电源;非复位
}


//返回一次采样值
unsigned int Adc7705(void)	
{
	while(drdy==1);
	Write(0x38);	//0x38:00111000 下一个16位数据寄存器;读;正常工作模式;通道AN1
	return Read();
}

unsigned int AverAdc7705(void)
{
	unsigned long rtval=0;
	unsigned int i;
	
	for(i=0;i<100;i++)
	{
		rtval+=(unsigned long)Adc7705();
	}
	return (unsigned int)(rtval/100);
}

⌨️ 快捷键说明

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