📄 dac.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 + -