51单片机密码锁设计LCD屏幕
正在利用空闲的时间制作一个51单片机控制,LCD1602显示,矩阵按键的电子密码锁。制作时间可能会很多,会不定期记录制作过程。
于2023年8月2日之前已经开始制作一部分:1、已完成LCD1602屏幕成功显示;2、矩阵按键成功运行;3、OK键能控制屏幕翻页。
下一步完成矩阵按键的密码输入,密码输入函数的建立。


目前问题1:矩阵按键数值输入到LCD屏幕显示位置错位;
预期效果为:输入面后,短暂显示,再以*隐藏。即整个输入密码过程。

2023/8/3,周四晚21.00:
昨日问题1解决,完成密码输入及删除。

插入完整输入密码函数。
void Input_PW() //输入密码子程序
{if(KeyValue!=0x7e) //{ if(DisFlag == 1) //1-9按下标志{ DisFlag = 0;if(Password_num<6) //{
// Input_Password[Password_num]=KeyNumber; //将密码存起来 LCDLine2[Password_num+5] = KeyNumber + 0x30; //把密码显示500msLCD_Display();Delay10ms(10); //延时一下LCDLine2[Password_num+5] = '*'; //将输入的密码以 “*” 隐藏Password_num++; //密码位数 +1}}else {if(Delete_Flag==1) //删除标志 将密码进行删除或者回退{Delete_Flag=0; Password_num--; //密码位数 -1if((Password_num>=0)&&(Password_num<7)){Input_Password[Password_num] = 0;LCDLine2[Password_num+5] = ' ';}else if(Password_num == -1) //没有密码时 ,再按一次删除(返回)键,回到1屏 或6屏{if(Screen_No == 2){WriteCmd(0x01); //清屏Screen_No=1;}}} }}else Input_suc_flag=1;
}
代码的精简读一直是我的痛点 ,缺乏一定的逻辑性。
2023年8月4日 周五晚22:00:
修改密码输入函数,并插入密码校对函数(密码校对函数分为正常输入密码时校对和修改密码时前后密码的校对,目前仅使用0),如下:
void PasswordCompare(bit x) //密码校对子函数 将输入的密码与当前正确密码进行比对
{unsigned char i,j=0;if(x==0) //0 正常的面校对{for(i=0;i
目前基本完成密码的输入和删除、密码校对。还需设计在输入正确密码后的UI页面设计,虽然就两行字。以及输入正确密码后,定时器完成页面跳转。

电子密码锁LCD1602版, 一切正常执行。
2023年8月7日 星期一晚上22:00
添加 大返回按键。
2023年8月10日星期四晚上22:18
无题(一) ——ChatGPT
月明星稀夜深沉, 枕边鼾声似雷霆。 寤寐难安梦断绝, 心怀愁苦无止宁。
无奈之下出门行, 离舍背井求宁静。 陌路街头寻避隐, 避开鼾声觅宿舍。
无题(二) ——ChatGPT
皎月当空照夜静,鼾声又至梦难成。忧心忡忡睡不得,情绪郁结倍困扰。
寂夜无眠思纷乱,打鼾声响似奇冤。床前明月似无辜,只我独受睡意攀。
盼晓星沉睡时分,鼾声终止入梦心。锁住烦忧这一刻,寻觅宁静恢复真。
2023年8月13日星期日晚上21:59
确认显示效果 ,并添加第五屏“已开锁”页面。

添加:输入错误密码超过3次后,并锁定。

2023年8月15日星期二晚22:05:36
添加返回锁定倒计时和输入密码界面的无操作倒计时。
2023年8月16日 星期三晚21:00

添加继电器、指示灯等外围电路。开锁指示灯工作,继电器、关锁指示灯、报警知识灯还需要进一步调试。
2023年8月17日 星期四晚21:39
调试开锁电路。
门锁状态。

门开状态。

目前还差的功能:
1、AT24C02掉电存储
2、报警程序
3、修改密码程序。
晚22:00 添加sound2 子程序 bug,还需要调试。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
