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

📄 dac7612.c

📁 AD芯片CS5529的驱动程序,包括SPI读写函数,初始化函数,校准函数,转换函数,复位函数等等.
💻 C
字号:

#include <reg52.h>
#include "include/DAC7612.h"
#include "include/time.h"
 #include "include/DataProces.h"
/*========================================================/
/														  /
/ Copyright (C), 2001-2005, Pangu Automation. Co., Ltd.	  /	
/ FileName:		DAC7612.c								  /
/ Author:		Zheng M.D.							  	  /
/ Version:		1.0										  /
/ Date:			2005.11.12								  /
/ Description:	DAC7612驱动程序			  				  /
/ Modify:												  /
/														  /
/========================================================*/



extern CALIPARAM 		idata 		pHCaliParam;						
extern TRANSMISSION 	idata 		TransData;

/*************************************************
//函 数 名:DAC7612_Write	
//功    能:ADC7612输出数据	
//输入参数:channel(unsigned char)通道号(0为pH,1为pt1000)
			outdata(unsigned short)	数据
			
//返 回 值:无	
//备    注:所有输出位均反向输出	
*************************************************/
void DAC7612_Write(unsigned char channel,unsigned short outdata)
{
		unsigned char i;
		outdata &= 0x0fff;
	   
//		outdata = 0x7ff;
		if(channel==1)
		{
			outdata |= 0x3000; 		//pt1000

		}else{
			outdata |= 0x2000; 		//pH
		}
 		__DAC7612_CS = 1;			//Chip Select
		__DAC7612_SCLK = 1;					 					
 		__DAC7612_LOAD = 0;			//停止加载							


		//传入码值
		for(i = 0; i < 14; i++)				 
		{
			
			if(outdata & 0x2000)
			{
				__DAC7612_SDI = 0;
			}
			else
			{
				__DAC7612_SDI = 1;
			}
			__DAC7612_SCLK	= 1;  	//时钟低电平时放数据,实际输出取反
			delay_us(DAC7612_DELAY);
			//加入延时(注:光耦521传输速度10K)
			__DAC7612_SCLK = 0;
			delay_us(DAC7612_DELAY);
			outdata <<= 1;
		}
		__DAC7612_CS = 0;  
		delay_us(DAC7612_DELAY);
		__DAC7612_LOAD = 1;	  		//加载DA值
		delay_us(DAC7612_DELAY);
		__DAC7612_LOAD = 0;
		delay_us(DAC7612_DELAY);
		__DAC7612_LOAD = 1;
}
/*************************************************
//函 数 名:ProcessDAOutput()	
//功    能:输出对应的4~20mA
//输入参数:无
			
//返 回 值:无	
//备    注:
*************************************************/
void ProcessDAOutput(void)
{
	short	outdata;
	float	temp;
	//pH->mA
	temp=(float)(TransData.pHPercent-pHCaliParam.pHto4mA)*30000.0/
			(pHCaliParam.pHto20mA-pHCaliParam.pHto4mA);
	if(temp<0.0)
	{
		temp=0.0;
	}
	if(temp>30000.0)
	{
		temp=30000.0;
	}				
	temp =(float)(pHCaliParam.pHDAUpper - pHCaliParam.pHDALower) * temp/
			30000.0 + pHCaliParam.pHDALower;
	outdata = (short)temp;
	DAC7612_Write(0,outdata);
	//pt1000->mA
	
	//temp=(float)(TransData.pHPercent-pHCaliParam.pt1000to4mA)*30000.0/
	//		(pHCaliParam.pt1000to20mA-pHCaliParam.pt1000to4mA);
	//if(temp<0.0)
	//{
	//	temp=0.0;
//	}
	//if(temp>30000.0)
	//{
	//	temp=30000.0;
	//}		
	temp = (float) (pHCaliParam.pt1000DAUpper - pHCaliParam.pt1000DALower) * TransData.Pt1000Percent 
		   /30000.0 + pHCaliParam.pt1000DALower;
	outdata = (short)temp;
	DAC7612_Write(1,outdata);

}

⌨️ 快捷键说明

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