📄 toucher.c
字号:
xszf(0x34,0x53); //时
xszf(0x34,0x54); //间
kong(0x33,0x04);
xszf(0x34,0x3f); //报
xszf(0x34,0x40); //警
xszf(0x34,0x55); //类
xszf(0x34,0x56); //型
kong(0x33,0x01);
xszf(0x34,0x3f); //报
xszf(0x34,0x40); //警
xszf(0x34,0x2a); //浓
xszf(0x34,0x2b); //度
kong(0x33,0x01);
xszf(0x34,0x28); //气
xszf(0x34,0x29); //体
xszf(0x34,0x55); //类
xszf(0x34,0x56); //型
}
/*****************故障记录界面第一行显示**************/
void bank3(void)
{
xszf(0x34,0xd6); //转
xszf(0x34,0xd7); //换
xszf(0x34,0xd8); //器
kong(0x33,0x02);
xszf(0x34,0x85); //探
xszf(0x34,0x86); //测
xszf(0x34,0x84); //器
kong(0x33,0x02);
xszf(0x34,0x3b); //故
xszf(0x34,0x3c); //障
xszf(0x34,0x53); //时
xszf(0x34,0x54); //间
kong(0x33,0x05);
xszf(0x34,0x3b); //故
xszf(0x34,0x3c); //障
xszf(0x34,0x55); //类
xszf(0x34,0x56); //型
}
/*****************开关机界面第一行显示*****************/
void bank4(void)
{
xszf(0x34,0x26); //编
xszf(0x34,0x27); //号
kong(0x33,0x02);
xszf(0x34,0x4b); //开
xszf(0x34,0x4d); //机
xszf(0x34,0x53); //时
xszf(0x34,0x54); //间
kong(0x33,0x06);
xszf(0x34,0x4c); //关
xszf(0x34,0x4d); //机
xszf(0x34,0x53); //时
xszf(0x34,0x54); //间
}
/*************控制外部设备第一行显示********************/
void bank5(void)
{
xszf(0x34,0xd6); //转
xszf(0x34,0xd7); //换
xszf(0x34,0xd8); //器
xszf(0x34,0x26); //编
xszf(0x34,0x27); //号
juxing(0xf0,0x68,0x04,0x33,0x00,0xa8,0x00,0x49);
xtzb(0x00,0xd8,0x00,0x36);
xszf(0x34,0x47); //节
xszf(0x34,0x48); //点
xszf(0x34,0x26); //编
xszf(0x34,0x27); //号
juxing(0xf1,0x28,0x04,0x33,0x01,0x68,0x00,0x49);
}
/***************节点设置界面中的第一行****************/
void bank6(void)
{
xszf(0x34,0x26);//编
xszf(0x34,0x27);//号
kong(0x33,0x03);
xszf(0x34,0x85);//探
xszf(0x34,0x86);//测
xszf(0x34,0x84);//器
kong(0x33,0x04);
xszf(0x34,0x87);//联
xszf(0x34,0x88);//动
kong(0x33,0x04);
xszf(0x34,0x6f);//不
xszf(0x34,0xa7);//使
xszf(0x34,0x9c);//用
kong(0x33,0x04);
xszf(0x34,0x34);//状
xszf(0x34,0x35);//态
}
/*******************实时界面首报显示****************/
void bank7()
{
uchar temp1=0,temp2=0,temp3=0,temp4=0;
uint temp=0;
uint addr_gas=0; //外部E2中存放气体类型的初始地址
uchar clarm_buff[2];
if(shoubao[1]==0) //无报警
juxing(0xb0,0x00,0x04,0x2d,0x02,0x80,0x00,0x4f);
else
{
xh=0xc0;
xl=0x08;
yh=0x00;
yl=0x36;
addr_gas=0x5c00;
addr_gas=addr_gas+shoubao[0]*32+shoubao[1]-1;
clarm_buff[1]= (uchar)((addr_gas>>8)&0x00ff ) ; //FM24C256片内地址高位字节
clarm_buff[2]= (uchar)(addr_gas&0x00ff) ; //FM24C256片内地址低位字节
EIMSK&=~(1<<INT6);
//do
fhz=I2cRead(SLA2_W,SLA2_R, clarm_buff[1],clarm_buff[2],1);
//while(fhz==1);
gas_type=i2c_rd_buff[0] ; //将读出的气体类型放入gas_type中
EIMSK|=(1<<INT6);
fdbs(0x04);
xtzb(xh,xl,yh,yl);
xszf(0x34,0x70); //首
xszf(0x34,0x3f); //报
kong(0x33,0x02);
temp1=shoubao[0]/10+0x30;
temp2=shoubao[0]%10+0x30;
temp3=shoubao[1]/10+0x30; //探测器编号高位
temp4=shoubao[1]%10+0x30; //探测器编号低位
fdbs(0x14); //放大
zhuanhuan7(0x40,0x00);
xtzb(xh,xl,yh,yl);
xszf(0x31,temp1); //显示转换器编号高位
xszf(0x31,temp2); //显示转换器编号低位
xszf(0x31,0x2f); //"/"
xszf(0x31,temp3); //显示探测器编号高位
xszf(0x31,temp4); //显示探测器编号低位
zhuanhuan7(0x60,0x00); //横坐标增加0x40,纵坐标不变
xtzb(xh,xl,yh,yl);
xszf(0x31,0x32); //2
xszf(0x31,0x30); //0
clock_deal(shoubao[2]); //年
xszf(0x31,0x2f); //"/"
clock_deal(shoubao[3]); //月
xszf(0x31,0x2f); //"/"
clock_deal(shoubao[4]); //日
kong(0x31,0x01);
clock_deal(shoubao[5]); //时
xszf(0x31,0x3a); //":"
clock_deal(shoubao[6]); //分
zhuanhuan7(0x80,0x00); //横坐标增加0x80,纵坐标不变
xtzb(xh,xl,yh,yl);
fdbs(0x14);
temp=(uint)(shoubao[7]);
temp=(temp<<8)+shoubao[8]; //报警浓度
xianshi(temp);
unit_common(); //浓度单位判断显示
zhuanhuan7(0x50,0x00); //横坐标增加0x50,纵坐标不变
xtzb(xh,xl,yh,yl);
fdbs(0x04); //不放大
switch(gas_type)
{
case 0xff:
{
xszf(0x34,0xe2); //天
xszf(0x34,0xe3); //然
xszf(0x34,0x28); //气
}
break;
case 0x02:
{
xszf(0x34,0xf9); //液
xszf(0x34,0xfa); //化
xszf(0x34,0x28); //气
}
break;
case 0x03:
{
xszf(0x34,0xac); //煤
xszf(0x34,0xfa); //制
xszf(0x34,0x25); //气
}
break;
case 0x04:
{
xszf(0x34,0xf1); //毒
xszf(0x34,0xf2); //性
xszf(0x34,0x28); //气
xszf(0x34,0x29); //体
}
break;
case 0x05:
{
xszf(0x34,0xf3); //可
xszf(0x34,0xf4); //燃
xszf(0x34,0x28); //气
xszf(0x34,0x29); //体
}
break;
case 0x06:
{
xszf(0x34,0xf5); //有
xszf(0x34,0xf6); //机
xszf(0x34,0xf7); //溶
xszf(0x34,0xf8); //剂
}
break;
default:
break;
}
}
}
/*******************实时记录第一行显示**************/
void bank8()
{
xszf(0x34,0x26); //编
xszf(0x34,0x27); //号
kong(0x33,0x02);
xszf(0x34,0x3f); //报
xszf(0x34,0x40); //警
xszf(0x34,0x55); //类
xszf(0x34,0x56); //型
kong(0x33,0x02);
xszf(0x34,0x3b); //故
xszf(0x34,0x3c); //障
xszf(0x34,0x55); //类
xszf(0x34,0x56); //型
}
/*********************按钮*************************/
void button_page(void) //翻页按钮
{
fdbs(0x04);
ltjx(0x8a,0x18,0x04,0xf4,0x02,0x6c,0x01,0x21); //(0x218,0x104,0x26c,0x12c);
xtzb(0x02,0x2a,0x01,0x02); //系统坐标(554,272)
xszf(0x34,0x2c);//上
xszf(0x34,0x2d);//一
xszf(0x34,0x2e);//页
ltjx(0x8a,0x18,0x05,0x3a,0x02,0x6c,0x01,0x67);
xtzb(0x02,0x2a,0x01,0x48); //系统坐标(554,342)
xszf(0x34,0x2f);//下
xszf(0x34,0x2d);//一
xszf(0x34,0x2e);//页
}
void button_can(void) //转换器按钮
{
fdbs(0x04);
ltjx(0x8a,0x18,0x04,0x68,0x02,0x6c,0x00,0x95);
xtzb(0x02,0x2a,0x00,0x76); //系统坐标(554,272)
xszf(0x34,0x2c);//上
xszf(0x34,0x2d);//一
xszf(0x34,0x8a);//块
ltjx(0x8a,0x18,0x04,0xae,0x02,0x6c,0x00,0xdb);
xtzb(0x02,0x2a,0x00,0xbc); //系统坐标(554,342)
xszf(0x34,0x2f);//下
xszf(0x34,0x2d);//一
xszf(0x34,0x8a);//块
}
void button3(void) //位置与翻页按钮相同
{
fdbs(0x04);
ltjx(0x8a,0x18,0x04,0xf4,0x02,0x6c,0x01,0x21); //(0x218,0x104,0x26c,0x12c);
xtzb(0x02,0x30,0x01,0x02); //系统坐标(554,272)
xszf(0x34,0x71);//确
xszf(0x34,0xb2);//定
ltjx(0x8a,0x18,0x05,0x3a,0x02,0x6c,0x01,0x67);
xtzb(0x02,0x30,0x01,0x48);
xszf(0x34,0x66);//退
xszf(0x34,0x67);//出
}
void button_print(void) //打印按钮
{
fdbs(0x04);
ltjx(0x8a,0x18,0x04,0x68,0x02,0x6c,0x00,0x95);
xtzb(0x02,0x30,0x00,0x76); //系统坐标(554,272)
xszf(0x34,0x7c); //打
xszf(0x34,0x7d); //印
}
/*******************背景函数******************/
void background(void)
{
juxing(0xb0,0x00,0x04,0x2d,0x02,0x80,0x00,0x4f); //(0x00,0x2d,0x280,0x4f)
juxing(0x90,0x00,0x04,0x50,0x02,0x80,0x00,0x72); //(0x00,0x50,0x280,0x72)
juxing(0xb0,0x00,0x04,0x73,0x02,0x80,0x00,0x95); //(0x00,0x73,0x280,0x95)
juxing(0x90,0x00,0x04,0x96,0x02,0x80,0x00,0xb8); //(0x00,0x96,0x280,0xb8)
juxing(0xb0,0x00,0x04,0xb9,0x02,0x80,0x00,0xdb); //(0x00,0xb9,0x280,0xdb)
juxing(0x90,0x00,0x04,0xdc,0x02,0x80,0x00,0xfe); //(0x00,0xdc,0x280,0xfe)
juxing(0xb0,0x00,0x04,0xff,0x02,0x80,0x01,0x21); //(0x00,0xff,0x280,0x121)
juxing(0x90,0x00,0x05,0x22,0x02,0x80,0x01,0x44); //(0x00,0x122,0x280,0x144)
juxing(0xb0,0x00,0x05,0x45,0x02,0x80,0x01,0x68); //(0x00,0x145,0x280,0x167)
}
/****************转换器编号***********************/
void num_conversion(void)
{
xtzb(0x01,0xe0,0x00,0x36);
fdbs(0x04);
xszf(0x34,0xd6); //转
xszf(0x34,0xd7); //换
xszf(0x34,0xd8); //器
xszf(0x34,0x26); //编
xszf(0x34,0x27); //号
}
/*********************从内部E2中读取信息******************/
uchar Read1(uint addr,uchar num) //读取转换器信息
{
uchar k1=0;
uchar temp=0;
k1=(num-1)/8;
temp=canuse[k1]; //读取can的使用情况
return temp;
}
uchar Read2(uint addr,uchar num) //读取节点使用情况
{
uchar temp1=0;
uchar k2=0;
addr=num_can*4+addr;
k2=(num-1)/8;
temp1=detuse[num_can][k2];
return temp1;
}
uchar Read3(uint addr) //读取节点探测器和联动的选择情况
{
uchar temp1=0;
addr=num_can+addr;
temp1=det_link[num_can];
return temp1;
}
//uchar Read4(uint addr)
//{
//uchar temp;
// temp=EEPROMread(addr);
// return temp;
//}
/*********************浓度显示*******************/
void chroma_disp(void)
{
uchar sum1=0;
uchar sum2=0;
uchar k1=0;
uchar ii=0;
uchar kkk=0;
uchar temp0=0;
uchar temp1=0;
uchar temp2=0;
uchar temp3=0;
//uchar temp4=0;
uchar temp5=0;
uchar temp6=0;
uchar temp7=0;
uchar counter=0;
uint temp=0;
uint addr=0;
uint addr_unit=0 ; //外部E2中存储浓度单位的初始地址
uchar rambuff[11] ;
uchar nongdu[3] ;
uchar a[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
/**************求出最后一个投用的结点号******************/
for(i=3;i>=0;i--)
{
for(k1=0;k1<8;k1++)
{
if((detuse[num_can][i]&a[k1])!=0) //如果没投用
sum1++; //没投用的节点个数
else
{
temp6=1;
break;
}
}
if(temp6==1)
break;
}
sum2=32-sum1; //投用的最大节点数
/*******************显示部分*********************/
xh=0xe0; //颜色 e0
xl=0x08;
yh=0x90;
yl=0x59;
num_det=page*num1+1;
temp7=(0x01<<((num_det-1)%8));
counter=0;
for(kkk=0;kkk<8;kkk++)
{
wdr(); //dog
if((kkk==1)||(kkk==3)||(kkk==5)||(kkk==7))
{
xh=0xc0; //换行颜色为红色
xl=0x08;
yh=yh|0x20; //将字体背景设为青色
}
else if((kkk==0)||(kkk==2)||(kkk==4)||(kkk==6))
{
xh=0xe0; //换行颜色为黄色
xl=0x08;
yh=yh&0x9f; //将字体背景设为蓝色
}
else
;
for(j=0;j<2;j++)
{
wdr(); //feed dog
fdbs(0x14); //放大1倍
addr=(uint)num_can*256+(num_det-1)*8; //探测器和节点对应的RAM地址
rambuff[1]=(uchar)(((addr&0xff00)>>8)); //高址
rambuff[2]=(uchar)(addr&0x00ff); //低址
EIMSK&=~(1<<INT6);
//do
fhz=I2cRead(SLA1_W,SLA1_R,rambuff[1],rambuff[2],8); //读出
//while(fhz==1);
for(ii=0;ii<8;ii++)
rambuff[ii]=i2c_rd_buff[ii];
EIMSK|=(1<<INT6);
/***************从外部E2中读取浓度单位**************************/
addr_unit=0x6100;
addr_unit=addr_unit+num_can*32+num_det-1;
nongdu[1]= (uchar)((addr_unit>>8)&0x00ff ) ; //FM24C256片内地址高位字节
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -