📄 huangvn9.c
字号:
delayms(60000);
alarmcon=0;
sysmode=2;//为管理员登陆解锁
clear_lcd();
}
else
{//出错次数少于3次,用户重新输入
pass1=0;
alarmcon=1;//错误一次鸣叫5S
delayms(5000);
alarmcon=0;
clear_lcd();
return;
}
}
break;
}
break;
case 1://修改密码
switch(xg)
{
case 0://管理员登陆
switch(keytemp)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
TR0=1;//启动定时器T0
write_cmd(0x8A+pass2); //密码输入起始位
//output=dispnumber[keytemp];//查找代码
//write_data(output);//显示输入密码
write_data(0xA1);//显示黑点
write_data(0xf1);
passinbuf2[pass2]=keytemp;//保存用户输入的密码
if(pass2<6)
pass2++;//调整保存下一个密码位置
//alarmcon=1;//发按键提示音200ms
//delayms(200);
//alarmcon=0;
break;
case 10://退格键
pass2=pass2-1;
write_cmd(0x8a+pass2);
write_data(0x20);//显示空白
write_data(0x20);
pass2=pass2-1;
break;
case 11://清除键
if(pass2!=0)
{
for(a=0;a<=pass2;a++)
{
write_cmd(0x8A+a); //从第一位开始清除
write_data(0x20);//显示空格
write_data(0x20);
}
a=0;
}
pass2=0;
break;
case 12 ://
break;
case 13://定义闭锁键
break;
case 14://定义确认键
for (i=0;i<6;i++)
{//比较用户输入密码与系统预设密码是否一致
if(passinbuf2[i]!=password2[i])
break;
}
if(i>=6)
{ //输入密码正确
clear_lcd();
chenggong();
pass2=0;
errorcnt=0;//错误次数清零
lockcon=1;//开锁
alarmcon=1;//开蜂鸣器
delayms(2000);//蜂鸣器鸣叫2S
alarmcon=0;//关闭蜂鸣器
delayms(3000);//延时5S自动闭锁
lockcon=1;//闭锁
clear_lcd();
xg=1;//为修改密码做准备
return;
}
break;
case 15:
break;
}
break;
case 1://保存第一次修改密码
switch(keytemp)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
TR0=1;//启动定时器T0
write_cmd(0x8A+pass3); //密码输入起始位
//output=dispnumber[keytemp];//查找代码
//write_data(output);//显示输入密码
write_data(0xA1);//显示黑点
write_data(0xf1);
passinbuf3[pass3]=keytemp;//保存用户输入的密码
if(pass3<6)
pass3++;//调整保存下一个密码位置
//alarmcon=1;//发按键提示音200ms
//delayms(200);
//alarmcon=0;
break;
case 10://退格键
pass3=pass3-1;
write_cmd(0x8a+pass3);
write_data(0x20);//显示空白
write_data(0x20);
break;
case 11://清除键
if(pass3!=0)
{
for(a=0;a<=pass3;a++)
{
write_cmd(0x8A+a); //从第一位开始清除
write_data(0x20);//显示空格
write_data(0x20);
}
a=0;
}
pass3=0;
break;
case 12 ://
sysmode=1;
break;
case 13://定义闭锁键
break;
case 14://定义确认键
xg=2;
break;
case 15:
break;
}
break;
case 2://保存第二次修改的密码并与第一次比较
switch(keytemp)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
TR0=1;//启动定时器T0
write_cmd(0x8A+pass4); //密码输入起始位
//output=dispnumber[keytemp];//查找代码
//write_data(output);//显示输入密码
write_data(0xA1);//显示黑点
write_data(0xf1);
passinbuf4[pass4]=keytemp;//保存用户输入的密码
if(pass4<6)
pass4++;//调整保存下一个密码位置
//alarmcon=1;//发按键提示音200ms
//delayms(200);
//alarmcon=0;
break;
case 10://退格键
pass4=pass4-1;
write_cmd(0x8a+pass4);
write_data(0x20);//显示空格
write_data(0x20);
pass4=pass4-1;
break;
case 11://清除键
if(pass4!=0)
{
for(a=0;a<=pass4;a++)
{
write_cmd(0x8A+a); //从第一位开始清除
write_data(0x20);//显示空格
write_data(0x20);
}
a=0;
}
pass4=0;
break;
case 12 ://
sysmode=1;
break;
case 13://定义闭锁键
break;
case 14://定义确认键
for (i=0;i<6;i++)
{//比较用户输入密码与系统预设密码是否一致
if(passinbuf4[i]!=passinbuf3[i])
break;
}
if(i>=6)
{ //修改密码正确
clear_lcd();
chenggong();
for(i=0;i<6;i++)
{
password1[i]=passinbuf4[i];//将修改的密码存到用户密码表
}
pass4=0;
errorcnt=0;//错误次数清零
lockcon=1;//开锁
alarmcon=1;//开蜂鸣器
delayms(2000);//蜂鸣器鸣叫2S
alarmcon=0;//关闭蜂鸣器
delayms(3000);//延时5S自动闭锁
lockcon=1;//闭锁
xg=0;//为管理员下次修改密码做准备
clear_lcd();
return;
}
break;
case 15:
break;
}
break;
}
break;
case 2://管理员进入开锁
switch(keytemp)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 13:
case 14:
case 15:
break;
case 12:
sysmode=3;
break;
}
break;
case 3://管理员解密输入模式
switch(keytemp)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
write_cmd(0x8A+pass2); //密码输入起始位
//output=dispnumber[keytemp];//查找代码
///write_data(output);//显示输入密码
write_data(0xA1);//显示黑点
write_data(0xf1);
passinbuf2[pass2]=keytemp;//保存用户输入的密码
if(pass2<6)
pass2++;//调整保存下一个密码位置
//alarmcon=1;//发按键提示音200ms
//delayms(200);
//alarmcon=0;
break;
case 10://退格键
pass2=pass2-1;
write_cmd(0x8a+pass2);
write_data(0x20);//显示空格
write_data(0x20);
pass2=pass2-1;
break;
case 11://清除键
if(pass2!=0)
{
for(a=0;a<=pass2;a++)
{
write_cmd(0x8A+a); //从第一位开始清除
write_data(0x20);//显示空格
write_data(0x20);
}
a=0;
}
pass2=0;
break;
case 12 ://
sysmode=1;
break;
case 13://定义闭锁键
lockcon=1;
break;
case 14://定义确认键
for (i=0;i<6;i++)
{//比较用户输入密码与系统预设密码是否一致
if(passinbuf2[i]!=password2[i])
break;
}
if(i>=6)
{ //输入密码正确
clear_lcd();
chenggong();
pass2=0;
errorcnt=0;//错误次数清零
lockcon=1;//开锁
alarmcon=1;//开蜂鸣器
delayms(2000);//蜂鸣器鸣叫2S
alarmcon=0;//关闭蜂鸣器
delayms(3000);//延时5S自动闭锁
lockcon=1;//闭锁
clear_lcd();
return;
}
break;
case 15:
break;
}
break;
}
}
//中断
void exter() interrupt 0
{
uchar keytemp,i=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
keytemp=find_key();
key_process(keytemp);//键值处理函数
keyport=0xf0;
}
void t0() interrupt 1
{
uchar tcount,second;
tcount++;
if(tcount==20)
{second++;
tcount=0;
if(second==30)
{second=0;
clear_lcd();
chaoshi();
delayms(2000);
clear_lcd();
}
}
}
//主程序
void main()
{
alarmcon=0;//关闭蜂鸣器
lockcon=1;//闭锁
lcd_int();//初始化LCD
functionset();
zhici();//开机显示题目
keyport=0xf0;//行线输出0,列线输出全1
EX0=1;//允许外部中断0
IT0=0;//电平触发方式
EA=1;//CPU开中断
while(1)
{
if(sysmode==0)
{
yonghu();//调用用户界面
}
if(sysmode==1)//管理员修改密码
{
if(xg==0)
{
guanliyuan();
}
if(xg==1)
{
xiugai();
}
if(xg==2)
{
queding();
}
}
if(errorcnt>2)
{
if(sysmode==2)
{
suoding();//调用锁定界面
}
if (sysmode==3) //等待管理员解锁
{
guanliyuan();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -