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

📄 ad7714.c

📁 AD7714 AD转换keil C51 源代码
💻 C
字号:
//-----------------------------------------------------------------------------
// AD7714.C
//-----------------------------------------------------------------------------
// AUTH: wjxiao
// DATE: 2006.3.27
//
// (1) AD7714应用程序
// (2) CPU: C8051F020
// (3) SPI0 查询方式
// (4) 硬件连接
//		P0.0 - SCK  (connected to SCK on EEPROM)
// 		P0.1 - MISO (connected to SI on EEPROM)
// 		P0.2 - MOSI (connected to SO on EEPROM)
// 		P0.3 - NSS  (unconnected, but pulled high by on-chip pull-up resistor)
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------

#include <c8051f020.h>                 // SFR declarations

//======================================================================================
// SPI 写指令
//--------------------------------------------------------------------------------------

void SPI_Write(uchar dat)
{
   // transmit read MSB-first

   SPIF = 0;                           // transmit MSB of address
   SPI0DAT = dat;
   while (SPIF == 0);
}		 
//======================================================================================
// SPI 读一个字节
//--------------------------------------------------------------------------------------
uchar SPI_Read(void)
{
   // initiate dummy transmit to read data
   SPIF = 0;
   SPI0DAT = 0xff;
   while (SPIF == 0);

   return SPI0DAT;
}
//======================================================================================
// AD7714 初始化
//--------------------------------------------------------------------------------------
sbit INT1 = P0^7;

uint AD7714_AD(char ch)
{
	uint idata ad;

	SPI_Write(0x58+ch);	
	while(!INT1);
	while(INT1);
	while(!INT1);
	while(INT1);
	ad = (SPI_Read())<<8;
	ad += SPI_Read();
	return ad;
}
void AD7714_Init(void)
{
	char i,a,b;
	INT1 = 1;									 
	for(i=0;i<7;i++)	//	五个通道相同 
	{
		if(i==4 || i==5) continue;

		SPI_Write(0x20 + i);	// 设置滤波器高寄存器:16位数据、单极性
		SPI_Write(0x81);
		SPI_Write(0x30 + i);	// 设置滤波器低寄存器:第一个凹口频率为50HZ
		SPI_Write(0x80); 
	}
	
	for(i=0;i<3;i++)	
	{
		SPI_Write(0x10 + i);	// 模式寄存器: 自校准
		SPI_Write(0x28);		// 增益=4
		while(INT1);  
		while(!INT1); 
	}
	/*
	SPI_Write(0x12);			// 模式寄存器: 自校准
	SPI_Write(0x20);			// 增益=1
	while(INT1);  
	while(!INT1); 
	*/
	SPI_Write(0x28); 
	a=SPI_Read();
	SPI_Write(0x38); 
	b=SPI_Read();	
}

⌨️ 快捷键说明

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