接上面:
- /*保密导航*/
- void passw_func(void)
- {
- uchar save,d,key;
- d=0;save=0;
- do
- {
- clear_dis();
- display_cnasc(0x81,2,"保密");
- dis_title();
- display_cnasc(0x88,8,selected[0]);
- con_disp(0xff,0xff,0x8a,0x80,5,16);
- do
- {
- display_cnasc(0x93,3,secrets_menu[index_p[save].lnum]);
- display_cnasc(0x8b,3,secrets_menu[save]);
- display_cnasc(0x9b,3,secrets_menu[index_p[save].rnum]);
- d=save;
- while(1)
- {
- key=gotkey();
- if(key==11||key==3){enter_dis();break;}
- if(key==2){save=index_p[d].rnum; key_dis(0x9a);break;}
- if(key==5){save=index_p[d].lnum; key_dis(0x92);break;}
- if(key==1){return;}
- }
- if(key==11||key==3)
- {
- if(d==3) return;
- clear_dis();
- dis_title_e();
- switch(d)
- {
- case 0:
- display_cnasc(0x82,3,"密码锁");
- display_cnasc(0x90,5,"输入密码:");
- while(1)
- {
- key=input_passwork();
- if(key==10) break;
- key=passwork_comp();
- if(key==1)
- {
- display_cnasc(0x90,8,"处开启状态,按键");
- display_cnasc(0x88,8,"□1-常开□2-关闭");
- display_cnasc(0x98,8,"■自动延时30秒 ");
- pw_oc=open;
- save1=i=0;
- lock_op=1; // 开启标记等待延时
- while(1)
- {
- key=gotkey(); // 返回255为延时时间到达
- if(key==255){ lock_op=0;pw_oc=close;break;}
- if(key==1)
- {
- display_cnasc(0x88,1,"■");
- display_cnasc(0x98,1,"□");
- lock_op=0;
- }
- if(key==2)
- {
- display_cnasc(0x88,1,"□");
- display_cnasc(0x98,1,"□");
- display_cnasc(0x8c,1,"■");
- delay(60000);
- clear_dis();
- dis_title_e();
- display_cnasc(0x82,3,"密码锁");
- display_cnasc(0x90,5,"密码锁将在");
- display_cnasc(0x8a,6," 5秒后关闭:");
- for(save=0;save<5;save++)
- {
- display_cnasc(0x99+save,1,"→");
- delay_pw();
- }
- display_cnasc(0x9e,1,"√");
- pw_oc=open;
- delay(30000);
- pw_oc=close;
- lock_op=0;
- break;
- }
- }
- break;
- }
- }
- break;
- case 1:
- display_cnasc(0x82,3,"更 改");
- display_cnasc(0x90,6,"输入旧密码:");
- while(1)
- {
- key=input_passwork();
- if(key==10) break;
- key=passwork_comp();
- if(key==1)
- {
- display_cnasc(0x92,1,"新");
- display_cnasc(0x89,6," ");
- key=input_passwork();
- if(key==10) break;
- display_cnasc(0x90,6,"确认密码: ");
- input_second_passwork();
- break;
- }
- }
- break;
- case 2:
- display_cnasc(0x82,3,"初始化");
- display_cnasc(0x91,6,"是否初始化? ");
- display_cnasc(0x89,6,"Y(OK)\\N(./S)");
- while(1)
- {
- key=gotkey();
- if(key==11)
- {
- clear_dis();
- dis_title_e();
- display_cnasc(0x82,3,"初始化");
- display_cnasc(0x90,5,"输入密码:");
- do
- {
- key=input_passwork();
- if(key==10) break;
- key=passwork_comp();
- if(key==1)
- {
- display_cnasc(0x90,5,"密码正确!");
- display_cnasc(0x89,7,"\x10 初始化中... ");
- init_ds1302();
- rds1302_data();
- delay_pw();
- display_cnasc(0x9a,6,"\x10 完成!(OK)");
- while(gotkey()!=11);
- key=10;
- break;
- }
- }while(1);
- }
- if(key==10) break;
- }
- break;
- }
- key=99;save=d;
- }
- if(key==99) break;
- }while(1);
- }while(1);
- }
- /*=====================================================================================
- 函数名称:版本信息
- 功能描述:
- 全局变量:
- 参数说明:见函数
- 返回说明:无
- 设 计 人:JZHG
- 版 本:1.0
- 说 明:
- ======================================================================================*/
- void version_func(void)
- {
- uchar save,v=0;
- display_cnasc(0x82,3,"版 本");
- dis_title_e();
- do
- {
- display_cnasc(0x90,8,version[v]);
- display_cnasc(0x88,8,version[v+1]);
- display_cnasc(0x98,8,version[v+2]);
- if(v!=0) display_cnasc(0x97,1," \x1e");
- else if(v==0)
- display_cnasc(0x97,1,"院");
- else display_cnasc(0x97,1," ");
- if(v!=7) display_cnasc(0x9f,1," \x1f");
- else display_cnasc(0x9f,1," ");
- save=gotkey();
- if(save==2&&v<7)
- {
- display_cnasc(0x9f,1," \x04");
- delay(30000);
- v++;
- }
- if(save==5&&v>0)
- {
- display_cnasc(0x97,1," \x04");
- delay(30000);
- v--;
- }
- if(save==1) return;
- if((save==11||save==3)&&v==7)
- {
- display_cnasc(0x9e,2,") \x09 ");
- delay(30000);
- return;
- }
- }while(1);
- }
- /*=====================================================================================
- 函数名称:系统主函数
- 功能描述:
- 全局变量:
- 参数说明:见函数
- 返回说明:无
- 设 计 人:JZHG
- 版 本:1.0
- 说 明:
- ======================================================================================*/
- void main()
- {
- uchar key,ys;
- init_lcd(); // 初始化lcd
- lcd_bl=als_tl=als_th=buzzer=pw_oc=close;
- key=r1302(d02_initsi+1); // 读出1302初始化标记位
- if(bl1) lcd_bl=close;
- else lcd_bl=open;
- for(ys=8;ys>0;ys--)
- {
- display_cnasc(0x92,4,"志高电子"); // 显示开机画面“志高电子”
- display_cnasc(0x9d,3,"—JZHG");
- delay_pw();
- }
- if(key!=0xb4) init_ds1302(); // DS1302初始化
- rds1302_data(); // 开机读回设置数据
- rds1302_date();
- rds1302_time(); // 读日期时间
- if(!ds18b20) init_ds18b20(); // 初始化18b20
- if(ds18b20)
- {
- ds18b20_func(); // 读出温度
- }
- time_init(); // 定时器初始化
- delay_pw();resu[11]=0;
- while(1)
- {
- EA=1;
- TR0=1;
- dis_sig=1;
- clear_dis();
- if(di0){init_d2=1;dis_mode2();init_d2=0;}
- else if(di1) dis_mode3();
- else dis_mode1();
- do
- {
- key=gotkey();
- if(key==255) // 键盘密码输入
- {
- TR0=0;
- dis_sig=0;
- clear_dis();
- dis_title_e();
- display_cnasc(0x82,3,"键盘锁");
- display_cnasc(0x90,5,"输入密码:");
- while(1)
- {
- keb=0;
- key=input_passwork();
- if(key==10) {keb=1;resu[11]=2;break;}
- key=passwork_comp();
- if(key==1) {keb=1;resu[11]=0;break;}
- }
- rds1302_date();
- rds1302_time();
- save_time=now;
- break;
- }
- if(key==11)
- {
- dis_menu_key(1);
- delay(35000);
- do
- {
- dis_sig=0;
- TR0=0;
- clear_dis();
- key=dis_menu();
- clear_dis();
- if(key==0) adjust_func();
- else if(key==1) // 调用相应程序功能S
- {
- while(1)
- {
- clear_dis();
- key=tool_func();
- if(key==4) break;
- clear_dis();
- switch(key)
- {
- case 0: calculator();
- break;
- case 1: temp_func();
- break;
- case 2: alarm_func();
- break;
- case 3: nba_timer();
- break;
- }
- }
- }
- else if(key==2) set_func();
- else if(key==3) passw_func();
- else if(key==4) version_func();
- else
- {
- rds1302_date();
- rds1302_time();
- save_time=now;
- resu[11]=0;
- dis_sig=1;
- break;
- }
- }while(1);
- }
- if(dis_sig) break;
- }while(1);
- }
- }
复制代码 |