#define RESERVE_11 0XBD ///模块内预留命令,请勿使用
#define RESERVE_12 0XBE ///模块内预留命令,请勿使用
#define RESERVE_13 0XBF ///模块内预留命令,请勿使用
sbit AMXR=P2^3; // 禁止ALE
unsigned int n0,n1,n2,n3,n4;
unsigned int SBMF;
unsigned int ad_data1 , ad_data2 , ccc1 , ccc2;
unsigned char tr_rx;
unsigned char rx[9] , rec;//发送,接收缓存 计数
unsigned int rec_tim;
unsigned char prefz;///
unsigned int pressmax;///压力峰值采样数组
unsigned int pressmin;///压力谷值采样数组
unsigned int D_dat,avedat,avedatlast;//LCD显示最大值和最小值
unsigned int pressph[2];
unsigned long press1p;///压力1采样平均值
unsigned long press2p;///压力2采样平均值
unsigned char bj,bj_jc; ///泄漏报警标志 bj=1泄漏报警 bj=2加液过程 bj=3加液结束 bj=4进行喷放 bj=5喷放结束 bj=6停止检测 bj=7开始检测
unsigned char cgf;///传感器阀标识 0:关闭传感器阀 1.打开传感器阀
void max126(unsigned int ch); //max126 AD 转换
void Value(); ///加液判断
void DP();//数据处理
void X5045wr1(unsigned char a); //写X5045指令 a:指令
void X5045wr2(unsigned int a,unsigned char b) ; //写X5045存储器 a:数据 b:起始地址
void X5045wr3(unsigned char a); //写X5045寄存器 a:寄存器数据
unsigned char X5045rd1(); //读X5045寄存器 c:命令 d:读长(位数)
unsigned int X5045rd2(unsigned char c); //读X5045存储器 c:起始地址
void BCD_chg(unsigned int dat1,unsigned char m,unsigned char n); //BCD码转换,m行 n 列
void LCD(void); ///液晶显示初始化
void LCD_DISPLAY(unsigned int disdat1,unsigned int disdat2,unsigned int disdat3,unsigned int disdat4);//LCD显示
//********************
///延迟函数1ms 100us
//********************
void Delay_1ms(unsigned int j) //对于11.0592MHz时钟延时1ms
{
unsigned char i,k;
while(j--)
{
for(k=0;k<12;k )
for(i=0;i<125;i )
{}
}
}
//*********************
////串口读写数据
//*********************
void put_char(unsigned char ch)
{
SBUF = ch;
while( TI == 0 ); //查询法
TI = 0;
}
unsigned char get_char(void)
{
unsigned char ch;
while(RI==0);
ch=SBUF;
RI=0;
return ch;
}
/*****************************************************/
/***********************液晶屏基本设置函数************/
/*****************************************************/
/*************************************************************
函数名称:Screen_Clear
函数功能:全屏清屏
调用函数:NO
被调函数:NO
输入参数:NO
输出参数:NO
函数返回:NO
其他说明:NO
*************************************************************/
void Screen_Clear(void)
{
unsigned char ch;
put_char(SCREEN_CLEAR); //0xE3 行位置0-7 列位置0-25 ASC2字符代码 9*16 0-9数字
ch=get_char();
while(ch!=0xCC); //等待返回值
}
/*************************************************************
函数名称:Back_Toggle
函数功能:背光开关
调用函数:NO
被调函数:NO
输入参数:NO
输出参数:NO
函数返回:NO
其他说明:发送一次E5命令,打开背光,发送一次E5命令,关闭背光
*************************************************************/
void Back_Toggle(void)
{
unsigned char ch;
put_char(BACK_TOGGLE);
ch=get_char();
while(ch!=0xCC); //等待返回值
}
/********************************************************************************/
/************************** LCD汉字显示函数 ****************************/
/********************************************************************************/
/*************************************************************
函数名称:Screen_Onoff
函数功能:键盘开关命令
调用函数:NO
被调函数:NO
输入参数:Switch-开关(0/1)
输出参数:NO
函数返回:NO
其他说明:NO
************************************************************/
void Screen_Onoff(unsigned char Switch)
{
unsigned char ch;
put_char(SCREEN_ONOFF);
put_char(Switch);
put_char(02);
ch=get_char();
while(ch!=0xCC); //等待返回值???
}
/********************************************************************************/
/************************** 液晶屏数字显示函数 ****************************/
/********************************************************************************/
/*************************************************************
函数名称:Number_9x16
函数功能:在指定位置显示一个9X16数字
调用函数:NO
被调函数:NO
输入参数:Y-行数(0-3),X-列数(00-13), *S-显示ASCII字符
输出参数:NO
函数返回:NO
其他说明:NO
*************************************************************/
void Number_9x16(unsigned char Y, unsigned char X, unsigned char s)
{
unsigned char ch;
put_char(ASCII_8X16);
put_char(Y);
put_char(X);
put_char(s); // 显示字符
ch=get_char();
while(ch!=0xCC); //等待返回值???
}
/********************************************************************************/
/************************** 液晶屏ASCII字符显示函数 ****************************/
/********************************************************************************/
/********************************************************************************/
/************************** 液晶屏混合字符显示函数 ****************************/
/********************************************************************************/
/*************************************************************
函数名称:Str_8x16
函数功能:在指定位置显示16X16中文和8X16ASCII字符串
调用函数:NO
被调函数:NO
输入参数:Y-行数(0-3),X-列数(0-15), *S-显示内容
输出参数:NO
函数返回:NO
其他说明:NO
*************************************************************/
void Str_8x16(unsigned char Y, unsigned char X, unsigned char *s)
{
unsigned char ch;
put_char(STR_8X16);
put_char(Y);
put_char(X);
while (*s)
{
put_char(*s); // 显示字符
s++;
}
put_char(0X00); //结束符
ch=get_char();
while(ch!=0xCC); //等待返回值???
}
void X5045wr1(unsigned char a) //写X5045指令 a:指令
{
unsigned char i ,j,c;
T0=1;
T1=1;T2=0;
T1=0;
c=6; //X5045使能写
for(i=0;i!=8;i++)
{
if((a & 0x80) == 0x80)
{
WR = 1;
T2 = 1;
}
if((a & 0x80) == 0)
{
WR = 0;
T2 = 1;
}
a = a << 1;
for(j=0;j!=10;j++){}
T2 = 0;
}
T1=1; //X5045禁止写
}
void X5045wr3(unsigned char a) //写X5045寄存器 a:寄存器数据
{
unsigned char i , c;
c=0x01;
T0=1;
T1=1;
T2=0;
T1=0; //X5045使能写
for(i=0;i!=8;i++)
{
if((c & 0x80 )== 0x80)
{
WR = 1;
T2 = 1;
}
if((c & 0x80) == 0)
{
WR = 0;
T2 = 1;
}
c = c << 1;
T2 = 0;
}
for(i=0;i!=8;i++)
{
if((a & 0x80 )== 0x80)
{
WR = 1;
T2 = 1;
}
if((a & 0x80) == 0)
{
WR = 0;
T2 = 1;
}
a = a << 1;
T2 = 0;
}
T1=1; //X5045禁止写
}
unsigned char X5045rd1() //读X5045寄存器 c:命令 d:读长度(位数)
{
unsigned char i,c,j,dat;
c=0x05;
T0=1;
T1=1;
T2=0; //读状态寄存器
T1=0;
//X5045使能写
for(i=0;i!=8;i++) //写读指令
{
if((c & 0x80) == 0x80)
{
WR = 1;
T2 = 1;
}
if((c & 0x80) == 0)
{
WR = 0;
[1] [2] [3] [4]