锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

单片机压力传感器的实时监测和报警程序

时间:2023-02-24 23:30:00 y力传感器9370c型传感器

#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;

c2c9ed493cd281aa86d8a6f5178c4c01.gif [1] [2] [3] [4]

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章