LCD1602密码锁设计
if(sign==0)
PasswordComparison(0); // 输入按键与原始密码比较
else PasswordComparison(1); // 输入按键与新密码比较
}
}
/*****************************************************
函 数 名:void Scan_starnumber(void)
功 能:显示密码位为星号
说 明:在密码显示区显示 " ****** "
入口参数:无
返 回 值:无
*****************************************************/
void Scan_starnumber(void)
{
switch(Count) // 在相应的地方显示"*"
{
case 1:DisplayOneChar(5,1,42);break; //-----*-----------//
case 2:DisplayOneChar(6,1,42);break; //------*----------//
case 3:DisplayOneChar(7,1,42);break; //-------*---------//
case 4:DisplayOneChar(8,1,42);break; //--------*--------//
case 5:DisplayOneChar(9,1,42);break; //---------*-------//
case 6:DisplayOneChar(10,1,42);break; //----------*------//
} //-----*******-----//
}
/*****************************************************
函 数 名:void PasswordComparison(bit mark)
功 能:密码比较程序
说 明:对输入密码进行比较
入口参数:mark:当mark=1时,对原始密码进行比较;当mark=0时,对原始密码进行比较
返 回 值:无
*****************************************************/
void PasswordComparison(bit mark1)
{
uchar Number=0;
if(mark1==0) // 输入按键与原始密码比较
{
while((T_Password[Number]==O_Password[Number])&(Number<6)) // 密码比较
{
Number++; // 计数值加1
}
}
else // 输入按键与新密码比较
{
ReadFromROM(N_Password,0,6);
while((T_Password[Number]==N_Password[Number])&(Number<6)) // 密码比较
{
Number++; // 计数值加1
}
}
if(Number>=6) // 密码正确
{
mark0=1; // 进入新密码设置
Password_OK(); // 调用密码输入正确提示函数
REL=0; // 继电器开启,即密码锁开启
Delay400Ms();
Beep();Beep(); // 正确提示音
Delay400Ms();
Beep();Beep();
Delay1s(); // 延时2s
Delay1s();
REL=1; // 继电器关闭,即密码锁开启
mark=0; // 退出循环
num=0;
}
else // 密码错误,报警
{
mark0=0; // 新密码输入控制位
Password_ERROR(); // 调用密码输入错误提示函数
Delay400Ms();
Beep();Beep();Beep();Beep(); // 错误提示音
Delay400Ms();
Beep();Beep();Beep();Beep();
Delay1s(); // 延时1s
mark=0; // 退出循环
num++; // 密码错误输入计数器
}
}
LCD1602密码 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)