⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.c

📁 灭火控制盘(XMP4-2)
💻 C
📖 第 1 页 / 共 5 页
字号:
//**          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 + -