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

📄 dac.c

📁 0-30v
💻 C
字号:
#include"reg52.h"
#include"function.h"

#define DBUS P0
sbit clk_574_1 = P2^3;
//sbit clk_574_2 = P1^3;
//sbit lcd_rs    = P1^4;
static uchar data_574;  //74574输出数据 
static uchar data_5741 = 0x10;//------------加了临时保存数据的寄存器才避免了DA操作时干扰背光  

/************************************************************************************
                              DAC输出转换函数 
************************************************************************************/
void dac(uint c)
{
	uint i;    
	data_574 =  data_5741;

	data_574 &= 0xfe;
	DBUS = data_574;
	clk_574_1 = 0;
	clk_574_1 = 1;//574输出锁存数据,选通DAC 	 9月8日加上的,以前忘记了 

	for(i = 0x8000;i > 0;i >>= 1)
	{
		if((c & i) == 0)
		{data_574 &= 0xFB;}//数据输出为0还是1	//0xf7  	
		else
		{data_574 |= 0x04;}//if和else后的大括号我后加的   
		DBUS = data_574;	
		clk_574_1 = 0;	
		clk_574_1 = 1;
				 
		data_574 &= 0xFD;
		DBUS = data_574;	
		clk_574_1 = 0;								    
		clk_574_1 = 1;		
		data_574 |= 0x02;
		DBUS = data_574;	
		clk_574_1 = 0;	
		clk_574_1 = 1;

	}
	data_574 |= 0x01;
	DBUS = data_574;
	clk_574_1 = 0;
	clk_574_1 = 1;//574输出锁存数据,选通DAC

	if(c <= 0x06c9) 
	   RL_ONOFF(0);  //吸合低压继电器 0 ~ 15  
	else 
	   RL_ONOFF(1);  //吸合高压继电器  15 ~ 30
 			  
}

/************************************************************************************
                   继电器切换 1: 高压吸合   0: 低压吸合     
************************************************************************************/
void  RL_ONOFF(bit i)
{
    if(i==1)
	{
		data_574  |= 0x20;
		data_574  &= 0xbf;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
	}
	else
	{
		data_574  |= 0x40;
		data_574  &= 0xdf;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
		data_5741 =  data_574;
	}  	
}

/************************************************************************************
                   蜂鸣器    1: 开   0: 关      
************************************************************************************/
void  BELL_ONOFF(bit i)
{
    if(i == 0)
	{
		data_574  |= 0x10;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
	}
	else
	{
		data_574  &= 0xef;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
		data_5741 =  data_574;
	}  	
}
/************************************************************************************
                   实际输出电压转换成DA输出值 ,返回整形数        
************************************************************************************/
uint conver(float x)
{
    float temp;
	temp = 14.995 / 0x0745;
	temp = x / temp;
	return(uint)temp;
}

/************************************************************************************
                   控制背光开关 1:开   0:关         
************************************************************************************/
void  LED_ONOFF(bit i)
{
	if(i==1)
	{
		data_574  |= 0x80;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
	}
	else
	{
		data_574  &= 0x7f;
		DBUS      =  data_574;	
		clk_574_1 =  0;	
		clk_574_1 =  1;
	} 
	data_5741 =  data_574; 
}

/************************************************************************************
                   输出补偿调整          
************************************************************************************/
void change(void)
{
	
}





⌨️ 快捷键说明

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