微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LCD1602密码锁设计

LCD1602密码锁设计

时间:11-10 来源:互联网 点击:

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++; // 密码错误输入计数器
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top