?? syssetup.c
字號(hào):
//*************************************************************************
//**模 塊 名:syssetup.c
//**說 明:系統(tǒng)設(shè)置功能函數(shù)
//*************************************************************************
#include <AT89x55.H>
#include <INTRINS.H>
#include <STRING.H>
#include "main.h"
//*************************************************************************
//**函 數(shù) 名:Sys_Setup
//**輸 入:無
//**輸 出:無
//**功能描述:系統(tǒng)設(shè)置
//*************************************************************************
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; //關(guān)閉菜單計(jì)數(shù)
while(1)
{
key_num=0xff;
Read_Key();
if((MenuCount == 1)||(key_num==SETUP))
{
//回到正常狀態(tài)下
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)
{
//進(jìn)入到設(shè)置時(shí)間功能
if(fun_num==1) setup_clock();
//進(jìn)入到設(shè)置延時(shí)時(shí)間功能
if(fun_num==2) setup_delay_clock();
//進(jìn)入到設(shè)置所帶區(qū)數(shù)
if(fun_num==3) setup_qu_online();
Clr_Scr(0);
Disp_Setup_Menu(fun_num);
}
}
}
//*************************************************************************
//**函 數(shù) 名: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;
}
//*************************************************************************
//**函 數(shù) 名: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);
}
//顯示“按設(shè)置鍵退出”
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);
}
//*************************************************************************
//**函 數(shù) 名:Disp_Setup_Menu
//**輸 入:
//** dpoint:反白顯示的位置號(hào)
//**輸 出:無
//**功能描述:
//** 1.顯示系統(tǒng)菜單
//*************************************************************************
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;
}
}
//*************************************************************************
//**函 數(shù) 名:Disp_Setup_Menu
//**輸 入:
//** ONp:0正常 1反白 顯示
//** TWp:0正常 1反白 顯示
//** THp:0正常 1反白 顯示
//** FOp:0正常 1反白 顯示
//** FRp:0正常 1反白 顯示
//**輸 出:無
//**功能描述:
//** 1.顯示系統(tǒng)菜單數(shù)據(jù)
//*************************************************************************
void Disp_Setup_Menu_One(bit ONp,bit TWp,bit THp)
{
uchar xdata i;
//時(shí)間設(shè)置
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);
//延時(shí)設(shè)置
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);
//在線開關(guān)
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);
}
//*************************************************************************
//**函 數(shù) 名:setup_qu_online
//**輸 入:無
//**輸 出:無
//**功能描述:滅火區(qū)設(shè)置菜單
//*************************************************************************
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);
//一 到 四 區(qū)
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);
//顯示“按設(shè)置鍵退出”
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);
//四個(gè)區(qū)的開關(guān)狀態(tài)
disp_qu_online(fun_num-1);
MenuCount=3000;
while(1)
{
key_num=0xff;
Read_Key();
if(MenuCount == 1)
{
//回到正常狀態(tài)下
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;
}
//*************************************************************************
//**函 數(shù) 名:disp_qu_online
//**輸 入:無
//**輸 出:無
//**功能描述:滅火區(qū)狀態(tài)顯示
//*************************************************************************
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]);
}
//*************************************************************************
//**函 數(shù) 名:Clock_Num_Cl
//**輸 入:fum_num 時(shí)間代號(hào)
// add_dec 時(shí)間加或減 1 加 0 減
//**輸 出:無
//**功能描述:系統(tǒng)時(shí)間修改
//*************************************************************************
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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -