我编写了个密码锁程序,要求输入密码正确后,液晶显示密码正确,当密码输入错误后,液晶显示密码错误,并连续输入3次错误后,蜂鸣器报警并锁定键盘一定时间,并跳转到初始界面,等待操作。主程序如下:
void main()
{
uchar jj;
uchar count_wrong; //错误次数
key_flag=0; //蜂鸣器关闭信号
init();
delay1(3);
lcd_rest();
while (1)
{
start:
dis_inputpsw(); //lcd上电显示“输入密码”
switch (getpsw()) //矩阵键盘键值输入,并判断功能
{
case 0: //键值等于 开锁
{
start1:
if (psw_check()) //验证密码
{
dis_ok(); //密码正确显示
key_open(); //按任意键可重新输入
}
else //密码不正确
{ dis_pswwrong(); 液晶显示错误
for(count_wrong=0;count_wrong>3;count_wrong++) //判断错误是否等于3次
{
goto start1; //没达到3次,重新输入并判断
}
{ //3次输入错误后,蜂鸣器报警,并锁定键盘一定时间
for(jj=0;jj<120;jj++)
{
if(!Beep_End)
{beep_beep();//蜂鸣器报警
}
else BEEP = 1; //关闭蜂鸣器
}
while (keynum>=0 && keynum<=15)//键盘锁定功能
{
if(key_flag)
{
goto start ; 跳回初始画面,等待操作
}
}
}
break;
case 1:break; //按E号键直接退出,并能清除输入的密码
case 2:psw_change();break; 键值等于 “更改密码”,跳转到修改密码
}
}
}
}
}
现程序运行时出现以下错误:
当第一次密码输入错误后,蜂鸣器就报警并锁定键盘,而不是3次错误后才报警锁定
另外,上面程序为何当第二次密码错误后,显示错误并锁定键盘,但蜂鸣器不报警了。
麻烦大家帮帮我看看程序哪里有需要修改的地方,谢谢了! |