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

📄 syssetup.c

📁 灭火控制盘(XMP4-2)
💻 C
📖 第 1 页 / 共 2 页
字号:
//*************************************************************************
//**模 块 名:syssetup.c
//**说    明:系统设置功能函数
//*************************************************************************
#include <AT89x55.H>
#include <INTRINS.H>
#include <STRING.H>
#include "main.h"
//*************************************************************************
//**函 数 名:Sys_Setup
//**输    入:无
//**输    出:无
//**功能描述:系统设置
//*************************************************************************
void Sys_Setup()
{
 uchar xdata fun_num=0;
 uchar xdata input_password=0;
 uchar xdata password_err=0;
 EA=1;
 Clr_Scr(0);
 fun_num=1;
 if(!PassWord_OK())
    {
     Clr_Scr(0);
     Disp_Setup_Menu(fun_num);
     }
 else
    {
     return;
     }
 MenuCount=3000; //关闭菜单计数
 while(1)
      {
       key_num=0xff;
       Read_Key();
       if((MenuCount == 1)||(key_num==SETUP))
          {
           //回到正常状态下
           if(machine_status != 0x10)have_report = 1;
           break;
           }
       if(key_num==DOWN)
          {
           fun_num++;
           if(fun_num>3) fun_num=1;
           Disp_Setup_Menu(fun_num);
           }
       else
          if(key_num==UP)
             {
              fun_num--;
              if(fun_num<1) fun_num=3;
              Disp_Setup_Menu(fun_num);
              }
       else
          if(key_num==OK)
             {
              //进入到设置时间功能
              if(fun_num==1) setup_clock();
              //进入到设置延时时间功能
              if(fun_num==2) setup_delay_clock();
              //进入到设置所带区数
              if(fun_num==3) setup_qu_online();
              Clr_Scr(0);
              Disp_Setup_Menu(fun_num);
              }
       }
}
//*************************************************************************
//**函 数 名:PassWord_OK
//**输    入:无
//**输    出:无
//**功能描述:
//**          1.读取密码
//*************************************************************************
uchar PassWord_OK(void)
{
uchar xdata fun_num=0;
uchar xdata password_err=1;
uchar xdata input_password=0;
Clr_Scr(0);
Disp_Password_Menu(fun_num);
while(1)
      {
       key_num=0xff;
       Read_Key();
       if(key_num == DOWN)
          {
           input_password|=(0x01<<(4-fun_num-1));
           fun_num++;
           if(fun_num==4)
              {
               if((input_password&0x0f)==(PASSWORD&0x0f))
                  {
                   Disp_Password_Menu(fun_num);
                   password_err=0;
                   DelayMS(10);
                   break;
                   }
               else
                  {
                   Disp_Password_Menu(fun_num);
                   DelayMS(10);
                   fun_num=0;
                   Clr_Scr(0);
                   Disp_Password_Menu(fun_num);
                   continue;
                   }
               }
           Disp_Password_Menu(fun_num);
           }
       else
          if(key_num == UP)
             {
              input_password&=(0xFE<<(4-fun_num-1));
              fun_num++;
              if(fun_num==4)
                 {
                  if((input_password&0x0f)==(PASSWORD&0x0f))
                     {
                      Disp_Password_Menu(fun_num);
                      password_err=0;
                      DelayMS(10);
                      break;
                      }
                  else
                     {
                      Disp_Password_Menu(fun_num);
                      DelayMS(10);
                      Clr_Scr(0);
                      fun_num=0;
                      Disp_Password_Menu(fun_num);
                      continue;
                      }
                  }
              Disp_Password_Menu(fun_num);
              }
         else
            if(key_num == SETUP)
               {
                if(machine_status!=0x10)have_report=1;
                password_err=1;
                break;
                }
         }
return password_err;
}
//*************************************************************************
//**函 数 名:Disp_Password_Menu
//**输    入:无
//**输    出:无
//**功能描述:
//**          1.显示输入密码的界面
//*************************************************************************
void Disp_Password_Menu(uchar number)
{
    uchar xdata iii;
    HzDisp1216(2,20,hz_mi,0);
    HzDisp1216(2,40,hz_ma,0);
    for(iii=0;iii<number;iii++)
        {
         HzDisp1216(4,60+iii*12,hz_xinghao,0);
         }
    //显示“按设置键退出”
    HzDisp1216(6,0+55,hz_an,0);
    HzDisp1216(6,12+55,hz_she,0);
    HzDisp1216(6,24+55,hz_zhi3,0);
    HzDisp1216(6,36+55,hz_jian3,0);
    HzDisp1216(6,48+55,hz_tui,0);
    HzDisp1216(6,60+55,hz_chu,0);
}
//*************************************************************************
//**函 数 名:Disp_Setup_Menu
//**输    入:
//**     dpoint:反白显示的位置号
//**输    出:无
//**功能描述:
//**          1.显示系统菜单
//*************************************************************************
void Disp_Setup_Menu(uchar dpoint)
{
 switch(dpoint)
      {
       case 1:Disp_Setup_Menu_One(1,0,0);
              break;
       case 2:Disp_Setup_Menu_One(0,1,0);
              break;
       case 3:Disp_Setup_Menu_One(0,0,1);
              break;
       default:break;
       }
}
//*************************************************************************
//**函 数 名:Disp_Setup_Menu
//**输    入:
//**     ONp:0正常 1反白 显示
//**     TWp:0正常 1反白 显示
//**     THp:0正常 1反白 显示
//**     FOp:0正常 1反白 显示
//**     FRp:0正常 1反白 显示
//**输    出:无
//**功能描述:
//**          1.显示系统菜单数据
//*************************************************************************
void Disp_Setup_Menu_One(bit ONp,bit TWp,bit THp)
{
    uchar xdata i;
    //时间设置
	HzDisp1216(0,0,hz_number1,ONp);
    HzDisp1216(0,12,hz_shi3,ONp);
    HzDisp1216(0,24,hz_jian2,ONp);
    HzDisp1216(0,36,hz_she,ONp);
    HzDisp1216(0,48,hz_zhi3,ONp);
    //延时设置
	HzDisp1216(2,0,hz_number2,TWp);
    HzDisp1216(2,12,hz_yan,TWp);
    HzDisp1216(2,24,hz_shi3,TWp);
    HzDisp1216(2,36,hz_shi3,TWp);
    HzDisp1216(2,48,hz_jian2,TWp);
    //在线开关
	for(i=0;i<5;i++)
        HzDisp1216(4,i*12+1,hz_space,THp);
    for(i=0;i<5;i++)
        HzDisp1216(4,i*12+3,hz_space,THp);
    HzDisp1216(4,0,hz_number3,THp);
    HzDisp1216(4,12,hz_zai,THp);
    HzDisp1216(4,24,hz_xian,THp);
    HzDisp1216(4,36,hz_shu,THp);
    HzDisp1216(4,48,hz_liang,THp);
}
//*************************************************************************
//**函 数 名:setup_qu_online
//**输    入:无
//**输    出:无
//**功能描述:灭火区设置菜单
//*************************************************************************
void setup_qu_online(void)
{
    uchar xdata fun_num,on_off;
    fun_num=1;
    on_off=1;
    ReadSysSetup();
    Clr_Scr(0);
    HzDisp1216(0,12,hz_she,0);
    HzDisp1216(0,25,hz_zhi3,0);
    HzDisp1216(0,38,hz_mie,0);
    HzDisp1216(0,51,hz_huo,0);
    HzDisp1216(0,64,hz_qu,0);
    HzDisp1216(0,77,hz_de1,0);
    HzDisp1216(0,90,hz_kai,0);
    HzDisp1216(0,103,hz_guan,0);
    //一 到 四 区
    HzDisp1216(2,12,hz_yi ,0);
    HzDisp1216(2,25,hz_qu ,0);
    HzDisp1216(2,64,hz_er ,0);
    HzDisp1216(2,77,hz_qu ,0);
    HzDisp1216(4,12,hz_san,0);
    HzDisp1216(4,25,hz_qu ,0);
    HzDisp1216(4,64,hz_si ,0);
    HzDisp1216(4,77,hz_qu ,0);
    //显示“按设置键退出”
    HzDisp1216(6 ,0+55  ,hz_an    ,0);
    HzDisp1216(6 ,12+55 ,hz_she   ,0);
    HzDisp1216(6 ,24+55 ,hz_zhi3  ,0);
    HzDisp1216(6 ,36+55 ,hz_jian3 ,0);
    HzDisp1216(6 ,48+55 ,hz_tui   ,0);
    HzDisp1216(6 ,60+55 ,hz_chu   ,0);
    //四个区的开关状态
    disp_qu_online(fun_num-1);
    MenuCount=3000;
    while(1)
          {
           key_num=0xff;
           Read_Key();
           if(MenuCount == 1)
              {
               //回到正常状态下
               if(machine_status != 0x10)have_report = 1;
               break;
               }
           if((key_num==UP)||(key_num==DOWN))
              {
               Qu_online[(fun_num-1)]=Qu_online[(fun_num-1)]?0:1;
               disp_qu_online(fun_num-1);
               }
           else
              if(key_num==OK)
                 {
                  if(fun_num<4)
                     {
                      fun_num++;
                      disp_qu_online(fun_num-1);
                      }
                  else
                     {
                      fun_num=1;
                      disp_qu_online(fun_num-1);
                      }
                  }
              else
                 if(key_num==SETUP)
                    {
                     SaveSysSetup();
                     Clr_Scr(0);
                     break;
                     }
           }
    key_num=0xff;
}
//*************************************************************************
//**函 数 名:disp_qu_online
//**输    入:无
//**输    出:无
//**功能描述:灭火区状态显示
//*************************************************************************
void disp_qu_online(uchar fun_num)
{
 uchar xdata i[4];
 i[0]=0;i[1]=0;i[2]=0;i[3]=0;
 i[fun_num]=1;
 if(Qu_online[0])
    HzDisp1216(2,51,hz_kai,i[0]);
 else
    HzDisp1216(2,51,hz_guan,i[0]);
 if(Qu_online[1])
    HzDisp1216(2,103,hz_kai,i[1]);
 else
    HzDisp1216(2,103,hz_guan,i[1]);
 if(Qu_online[2])
    HzDisp1216(4,51,hz_kai,i[2]);
 else
    HzDisp1216(4,51,hz_guan,i[2]);
 if(Qu_online[3])
    HzDisp1216(4,103,hz_kai,i[3]);
 else
    HzDisp1216(4,103,hz_guan,i[3]);
}
//*************************************************************************
//**函 数 名:Clock_Num_Cl
//**输    入:fum_num  时间代号
//            add_dec  时间加或减  1 加  0 减
//**输    出:无
//**功能描述:系统时间修改
//*************************************************************************
void Clock_Num_Cl(uchar fun_num,bit add_dec)
{
switch(fun_num)
       {
        case 0://10年
               if(add_dec)
                  {
                   if(Clock_Time[6]<0x8f) Clock_Time[6]=Clock_Time[6]+0x10;
                   }
               else
                  {
                   if(Clock_Time[6]>=0x10) Clock_Time[6]=Clock_Time[6]-0x10;
                   }
               break;
        case 1://1年
               if(add_dec)
                  {
                   if((Clock_Time[6]&0x0f)<0x09) Clock_Time[6]=Clock_Time[6]+0x01;
                   }
               else
                  {
                   if((Clock_Time[6]&0x0f)>=0x01) Clock_Time[6]=Clock_Time[6]-0x01;
                   }
               break;
        case 2://10月
               if(add_dec)
                  {
                   if(Clock_Time[5]<0x0f) Clock_Time[5]=Clock_Time[5]+0x10;
                   if(Clock_Time[5]>0x0f) Clock_Time[5]=(Clock_Time[5]&0xf0)|0x02;
                   }
               else
                  {
                   if(Clock_Time[5]>=0x10) Clock_Time[5]=Clock_Time[5]-0x10;
                   }
               break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -