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

📄 da_3.c

📁 51 单片机的c程序
💻 C
字号:
/**********************************************
*   File: DA_3.C
*   Description: DAC7614  
*   Created Date:  2007-10-01
*   Last Modified: 2007-10-01
*   Author: Jeffrey - Schicksal@126.com
*   Notes: None
**********************************************/
#include "Atmel/AT89X51.h"
#include "INTRINS.H"

//*******定义DAC7614控制端口*****************//
#define MOSI P2_0
#define SCK	P2_1
#define PCS0 P2_2
#define PDAC P2_3
#define PRESET P2_4
//*******定义DAC7614控制端口*****************//

volatile unsigned int DAC7614_Code = 0;

// 函数声明
void InitDAC7614();				  // 初始化DAC7614
void SetDAC7614();  			  // 将控制命令写入DAC7614
void Chn_Sel(unsigned char chn);  // 选择DAC输出通道
void SetDACout(unsigned int dac); // 设置DAC转换数值

/**********************************************
*   Function: delay(unsigned int t)
*   Input Variables: t
*   Return Variables: None
*   Usage: Common Delay Routine, t as the delay time ticks
**********************************************/
void delay(unsigned int t)
{
	for(;t>0;t--);		// 延时循环
}

/**********************************************
*   Function: main()
*   Input Variables: None
*   Return Variables: None
*   Usage: Program Entry
*********************************************/
void main()
{
	unsigned int x = 0;				// 通道A转换值
	unsigned int y = 1024;			// 通道B转换值
	unsigned int z = 2048;			// 通道C转换值
	unsigned int h = 3072;			// 通道D转换值
	InitDAC7614();					// 初始化ADC7614
	while(1)
	{
		Chn_Sel(0x00);			    // 选择通道A
		SetDACout(x);			    // 设置转换值为x
		SetDAC7614();				// 将设置值写入DAC7614,启动DAC转换
		
		Chn_Sel(0x01);			    // 选择通道B
		SetDACout(y);			    // 设置转换值为y
		SetDAC7614();				// 将设置值写入DAC7614,启动DAC转换
	
		Chn_Sel(0x02);			    // 选择通道C
		SetDACout(z);			    // 设置转换值为z
		SetDAC7614();				// 将设置值写入DAC7614,启动DAC转换
	
		Chn_Sel(0x03);			    // 选择通道D
		SetDACout(h);			    // 设置转换值为h
		SetDAC7614();				// 将设置值写入DAC7614,启动DAC转换
	
		if(++x==4096)
			x=0;
		if(++y==4096)
			y=0;
		if(++z==4096)
			z=0;
		if(++h==4096)
			h=0;
			
		delay(100);
	}
}

/**********************************************
*   Function: InitDAC7614()
*   Input Variables: None
*   Return Variables: None
*   Usage: Init DAC7614
*********************************************/
void InitDAC7614()
{
	PCS0 = 1;
	PDAC = 1;
	SCK = 1;
	PRESET = 0;
	_nop_();
	PRESET = 1;
}

/**********************************************
*   Function: Chn_Sel( unsigned char chn)
*   Input Variables: unsigned char chn
*   Return Variables: None
*   Usage: Select Channel of DAC7614
*********************************************/
void Chn_Sel(unsigned char chn)
{
	if(chn > 0x03) 
		return;						// chn值只能从0~3
	
	DAC7614_Code &= ~0xf000;
	DAC7614_Code |= ((unsigned int)(chn)<<14);
	
}

/**********************************************
*   Function: SetDAC7614( unsigned int dac)
*   Input Variables: unsigned int dac
*   Return Variables: None
*   Usage: Set DAC7614_Code
*********************************************/
void SetDACout( unsigned int dac)
{
	DAC7614_Code &= ~0x0fff;
	DAC7614_Code |= dac;
}

/**********************************************
*   Function: SetDAC7614()
*   Input Variables: void
*   Return Variables: void
*   Usage:  Set DAC7614
*********************************************/
void SetDAC7614()
{
	unsigned char i;
	unsigned char ps = 0x8000;
	PCS0 = 0;
	PDAC = 1;
	for(i = 0;i<16;i++)
	{
		SCK = 0;
		_nop_();
		MOSI = (ps&DAC7614_Code)?1:0;
		_nop_();
		SCK = 1;
		ps>>=1;
		_nop_();
	}
	PCS0 = 1;
	_nop_();
	PDAC = 0;
	_nop_();
}



⌨️ 快捷键说明

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