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

📄 ad7715.c

📁 AD7715转换的程序其他人不需帐号就可自由下载此源码
💻 C
字号:

#include	<p18f4680.h>
#include	<delays.h> 
//本程序未经过测试,需要测试调整
//-------------------------------------------------------
#define   	RD_SET_REG 0x18		//读设置寄存器 
#define   	WR_SET_REG 0x10		//写设置寄存器 
#define   	WR_TEST_REG 0x20  	//写测试寄存器
#define  	DAT_SET_REG 0x66   	//设置寄存器数据
#define  	RD_COMM_REG 0x08    //读信息寄存器      
#define  	RD_DATA_REG 0x38    //从AD7715读数据
#define  	AD_BUF_LENTH  10    //AD缓冲区长度
//-------------------------------------------------------
unsigned int  ad_buf[AD_BUF_LENTH];      //AD缓冲区
unsigned char ad_numb=0;                 //AD计数
//-------------------------------------------------------
#define		AD_CLK		PORTCbits.RC0
#define		AD_DIN		PORTCbits.RC1
#define		AD_DOUT		PORTCbits.RC2
#define		AD_DRDY		PORTCbits.RC5	
//-------------------------------------------------------
union ADRES7715					
	{
	unsigned int AD;
	unsigned char ADRE[2];
	}AD7715_result;			//A/D转换结果
//-------------------------------------------------------
float AD_dis;
unsigned int check_voltage;	//要显示的电压值
unsigned char dis_z;		//电压值整数部份
unsigned char dis_x;		//电压值小数部份
unsigned char ADvalue_zf;	//AD值正负标志
//-------------------------------------------------------
/*==============================================================================
  函数原型: unsigned char write_AD7715 ( unsigned char write_data );
  函数功能: AD7715写入数据程序
  参数说明: write_data-------要写入的数据
  返回参数:	无输出参数
==============================================================================*/
unsigned char write_AD7715 ( unsigned char write_data )
	{
	unsigned char i;
	for ( i=0;i<8;i++ )
		{
		AD_CLK = 0;//CLK=0
		Delay10KTCYx(5);
		if ( (write_data&0x80)!= 0 ) AD_DIN = 1;
		else AD_DIN = 0;
		write_data = write_data << 1;
		Delay10KTCYx(5);
		AD_CLK = 1;
		Delay10KTCYx(5);
		}
	}
/*==============================================================================
  函数原型: unsigned char read_AD7715 ( void );
  函数功能: AD7715读出数据程序
  参数说明: 无输入数据
  返回参数:	r_data-------读出的数据字节
==============================================================================*/
unsigned char read_AD7715 ( void )
	{
	unsigned char i,r_data;
	for ( i=0;i<8;i++ )
		{
		AD_CLK=0;
		Delay10KTCYx(5);
		r_data = r_data<<1;
		if ( AD_DOUT ) r_data+=0x01;
		Delay10KTCYx(5);
		AD_CLK = 1;
		Delay10KTCYx(5);
		}
	return (r_data);
	}
/*==============================================================================
  函数原型: void Initial_AD7715 (void);
  函数功能: AD7715初始化程序
  参数说明: 无输入参数
  返回参数:	无输出参数
==============================================================================*/
void Initial_AD7715 (void)
	{
	PORTC = 0x00;
	TRISC = 0x14;	  
    write_AD7715(0x10);//0x10通讯寄存器:向设定寄存器中写数
	while ( AD_DRDY == 1 );//等待转换结束					//等待转换结束
    write_AD7715(0x04);//0x04设定寄存器:设定自校验模式,时钟1MHZ,更新速度20HZ,不加缓冲,不加同步信号	  
						//0x04 为正常模式
	//--------------------------  
	}
/*==============================================================================
  函数原型: AD_converse7715(void);
  函数功能: AD7715转换程序
  参数说明: 无输入参数
  返回参数:	无输出参数
==============================================================================*/
void  AD_converse7715(void)  
	{
	write_AD7715(0x18);
	while ( AD_DRDY == 1 );//等待转换结束
	AD7715_result.ADRE[0]=read_AD7715();
//-----------------------------
	while ( AD_DRDY == 1 );//等待自标定结束
	write_AD7715(0x38);
	while ( AD_DRDY == 1 );//等待转换结束
	AD7715_result.ADRE[1]=read_AD7715();
	AD7715_result.ADRE[0]=read_AD7715();

	/*write_AD7715(0x13);//0x10通讯寄存器:向设定寄存器中写数
	while ( AD_DRDY == 1 );//等待转换结束					//等待转换结束
    write_AD7715(0x04);//0x04设定寄存器:设定自校验模式,时钟1MHZ,更新速度20HZ,不加缓冲,不加同步信号	  
						//0x04 为正常模式

	while ( AD_DRDY == 1 );//等待自标定结束
	write_AD7715(0x3b);
	while ( AD_DRDY == 1 );//等待转换结束
	AD7715_result.ADRE[1]=read_AD7715();
	AD7715_result.ADRE[0]=read_AD7715();*/
	//-------------------------
	if ( AD7715_result.AD > 32767 )
		{
		ADvalue_zf = 0;
		//置正值标志
		}
	else
		{
		ADvalue_zf = 1;
		//置负值标志
		}	
	//-------------------------
	check_voltage = (int)(((float)AD7715_result.AD/32767.0)*165.0);
	}


//-----------------------------------------------------------------------------
/*void main(void)
	{
    Initial_AD7715 ();
	AD_converse7715(); 
	LATD = 2;

	//-----------------------
	write_AD7715(0x13);//0x10通讯寄存器:向设定寄存器中写数
	while ( AD_DRDY == 1 );//等待转换结束					//等待转换结束
    write_AD7715(0x62);//0x04设定寄存器:设定自校验模式,时钟1MHZ,更新速度20HZ,不加缓冲,不加同步信号	  
						//0x04 为正常模式

	while ( AD_DRDY == 1 );//等待自标定结束
	write_AD7715(0x3b);
	while ( AD_DRDY == 1 );//等待转换结束
	AD7715_result.ADRE[1]=read_AD7715();
	AD7715_result.ADRE[0]=read_AD7715();


	//------------------------
	LATD = 2;
	
	while (1)
		{
		AD_converse7715(); //51d3
		}
	}
*/

⌨️ 快捷键说明

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