📄 function.c
字号:
//** 1.将某一区的故障号转换成设备类型
//*************************************************************************
uchar Turn_Type(uchar TempData)
{
uchar xdata return_data;
switch(TempData)
{
case 0://设备类型为钢瓶
return_data=0x08;
break;
case 1://设备类型为声光
return_data=0x03;
break;
case 2://设备类型为喷洒灯
return_data=0x04;
break;
case 3://设备类型为联动设备
return_data=0x0a;
break;
case 4://设备类型为压力开关
return_data=0x0b;
break;
case 5://设备类型为停止键
return_data=0x0c;
break;
case 6://设备类型为启动键
return_data=0x0d;
break;
default:break;
}
//返回转换后的数据
return return_data;
}
//*************************************************************************
//**函 数 名:ReadQuFault
//**输 入:
//** QuNumber:故障检测的区号
//**输 出:无
//**功能描述:
//** 1.检测某一个区的故障
//*************************************************************************
void ReadQuFault(uchar QuNumber)
{
uchar xdata fault_test;
uchar xdata temp_alreadly_fault;
uchar xdata DeNumber;
uchar xdata I;
switch(QuNumber)
{
case 1:CS_FAULT=ONEPORTFAULTEST; temp_alreadly_fault=alreadly_fault1;break;
case 2:CS_FAULT=TWOPORTFAULTEST; temp_alreadly_fault=alreadly_fault2;break;
case 3:CS_FAULT=THREEPORTFAULTEST;temp_alreadly_fault=alreadly_fault3;break;
case 4:CS_FAULT=FOURPORTFAULTEST; temp_alreadly_fault=alreadly_fault4;break;
default:break;
}
//读取报警时间
Read12887(Clock_Time);
for(I=0;I<7;I++)
{
fault_test=CS_FAULT>>I;
if(((fault_test&0x01)==0x00)&&(((temp_alreadly_fault>>I)&0x01)==0x00))
{
if(fault_count[QuNumber][I]<20)fault_count[QuNumber][I]++;
else
{
DeNumber=Turn_Type(I);
SaveAlarmToBUFF(QuNumber,DeNumber,2);
//存入打印缓冲区
SaveAlarmToPrintBUFF(QuNumber,DeNumber,2);
//点亮故障灯
FaultLED(1);
fault_number++;
disp_fault_number = fault_number;
//灭消音灯
Mute_LED_CTRL(0);
//故障声响设置
if(SoundType != 1 && SoundType != 2 && SoundType != 3 && SoundType != 4)
SoundType = 4;
if(machine_status<=0x30)
{
machine_status=0x30;
have_report=1;
}
switch(QuNumber)
{
case 1:alreadly_fault1|=(0x01<<I);break;
case 2:alreadly_fault2|=(0x01<<I);break;
case 3:alreadly_fault3|=(0x01<<I);break;
case 4:alreadly_fault4|=(0x01<<I);break;
default:break;
}
}
}
else
{
fault_count[QuNumber][I]=0;
}
}
}
//*************************************************************************
//**函 数 名:Read_Key
//**输 入:无
//**输 出:无
//**功能描述:读取键值
//*************************************************************************
void Read_Key()
{
JP_DET=0;
KEYCOL_SCAN=CS_OUT2;
Delay123(5);
if((KEY_PORT&0x7f)!=0x7f)
{
Delay123(1000);
if((KEY_PORT&0x7f)!=0x7f)
{
//读取键值
key_num=KEY_PORT;
key_num=~key_num;
key_num&=0x7f;
//如果没有其它声响
if(SoundType == 0)
{
//设置声响类型
SoundType = 5;
}
MenuCount=3000;
backlamp_delay=3000;
}
}
}
//*************************************************************************
//**函 数 名:Key_Manage
//**输 入:无
//**输 出:无
//**功能描述:键盘处理主程序
//*************************************************************************
void Key_Manage()
{
uchar xdata hj_led_temp = 0;
uchar xdata gz_led_temp = 0;
uchar xdata zqd_led_temp = 0;
uchar xdata ys_led_temp = 0;
uchar xdata temp_led = 0;
//////////////////读键盘操作//////////////////////
key_num=0xff;
Read_Key();
//按下自检键
if(key_num==TEST)
{
Clr_Scr(0xff);
Test_flag = 1;
//发出声响
BeepCtrl(1);
//开液晶背光
LCDLAMPCTRL(1);
Self_TEST_CTRL(1);
if(HJLED == 1) hj_led_temp = 1;
else hj_led_temp = 0;
if(GZLED == 1) gz_led_temp = 1;
else gz_led_temp = 0;
if(ZQDLED == 1) zqd_led_temp = 1;
else zqd_led_temp = 0;
if(YSLED == 1) ys_led_temp = 1;
else ys_led_temp = 0;
//点亮火警、故障、总启动和延时灯
HJLED = 0;
GZLED = 0;
ZQDLED = 0;
YSLED = 0;
temp_led = CS_OUT2;
temp_led = temp_led&0xC7;
KEYCOL_SCAN = temp_led;
DelayMS(4000);
Self_TEST_CTRL(0);
HJLED = hj_led_temp;
GZLED = gz_led_temp;
ZQDLED = zqd_led_temp;
YSLED =ys_led_temp;
KEYCOL_SCAN = CS_OUT2;
//恢复显示界面
if(machine_status!=0x10)have_report=1;
//消除声响
BeepCtrl(0);
Test_flag = 0;
}
//消音键按下,并且有火警、故障、启动、反馈。
if((key_num==MUTE)||((alarm_number!=0)&&(fault_number!=0)&&(start_number!=0)&&(feedback_number!=0)))
{
if(SoundType!=0&&SoundType!=5)
{
//读取报警时间
Read12887(Clock_Time);
CD[0] = 0x20;
CD[1] = Clock_Time[6];
CD[2] = Clock_Time[5];
CD[3] = Clock_Time[4];
CD[4] = Clock_Time[2];
CD[5] = Clock_Time[1];
CD[6] = Clock_Time[0];
//打印时钟
PrintClock(CD);
//打印换行
PrintTo(0x0d);
//设置汉字打印方式
PrintTo(0x1c); PrintTo(0x26);
PrintDoubleWord("消");PrintDoubleWord("音");
//取消汉字打印方式
PrintTo(0x1c); PrintTo(0x2e);
//打印换行
PrintTo(0x0d);
//消音灯亮
Mute_LED_CTRL(1);
//消除声响
BeepCtrl(0);
//开关液晶背光的计数器清零
backlamp_delay=3000;
//开背光
LCDLAMPCTRL(1);
//声音类型清零
SoundType = 0;
//声音计数器清零
SoundCount = 0;
}
}
if((key_num==UP)) //向上键
{
//开关液晶背光的计数器清零
backlamp_delay=3000;
switch(machine_status)
{
case 0x30:if(disp_fault_number>1)
{
disp_fault_number--;
have_report=1;
}
break;
case 0x40:if(disp_stop_number>1)
{
disp_stop_number--;
have_report=1;
}
break;
case 0x50:if(disp_alarm_number>1)
{
disp_alarm_number--;
have_report=1;
}
break;
case 0x60:if(disp_feedback_number>1)
{
disp_feedback_number--;
have_report=1;
}
break;
case 0x70:if(disp_start_number>1)
{
disp_start_number--;
have_report=1;
}
break;
default: break;
}
}
//向下键
if((key_num==DOWN))
{
//开关液晶背光的计数器清零
backlamp_delay=3000;
switch(machine_status)
{
case 0x30:if(disp_fault_number<(fault_number))
{
disp_fault_number++;
have_report=1;
}
break;
case 0x40:if(disp_stop_number<(stop_number))
{
disp_stop_number++;
have_report=1;
}
break;
case 0x50:if(disp_alarm_number<(alarm_number))
{
disp_alarm_number++;
have_report=1;
}
break;
case 0x60:if(disp_feedback_number<(feedback_number))
{
disp_feedback_number++;
have_report=1;
}
break;
case 0x70:if(disp_start_number<(start_number))
{
disp_start_number++;
have_report=1;
}
break;
default: break;
}
}
//复位键
if(((key_num==RESET)&&(machine_status!=0x10)))
{
//读取时间
Read12887(Clock_Time);
CD[0] = 0x20;
CD[1] = Clock_Time[6];
CD[2] = Clock_Time[5];
CD[3] = Clock_Time[4];
CD[4] = Clock_Time[2];
CD[5] = Clock_Time[1];
CD[6] = Clock_Time[0];
//打印时钟
PrintClock(CD);
//打印换行
PrintTo(0x0d);
//设置汉字打印方式
PrintTo(0x1c); PrintTo(0x26);
PrintDoubleWord("复");PrintDoubleWord("位");
//取消汉字打印方式
PrintTo(0x1c); PrintTo(0x2e);
//打印换行
PrintTo(0x0d);
//系统初始化,变量初始化
InitializeSystem();
//程序指针跳转到地址0运行
((void (code *) (void)) 0x0000) ();
}
//设置键
if(key_num==SETUP)
{
//开背光
LCDLAMPCTRL(1);
Sys_Setup();
}
//上,下键
if((key_num==QUERY)&&(machine_status>=0x30))
{
machine_status+=0x10;
if(machine_status>0x70)machine_status=0x30;
//看是否有故障信息
if(machine_status==0x30)
{
if(fault_number==0) //信息为0类型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
//看是否停止信息
if(machine_status==0x40)
{
if(stop_number==0) //信息为0类型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
//看是否有火警信息
if(machine_status==0x50)
{
if(alarm_number==0) //信息为0类型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -