📄 syssetup.c
字号:
//*************************************************************************
//**模 块 名: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 + -