1. 设计任务要求
1.通过该电路的焊接,应熟练掌握焊接技术;
2.掌握MCS51的工作原理,基于C51的程序设计和程序下载方法。
3.以此最小系统板作为控制核心,设计简易密码锁。
4.简易密码锁要求有密码设置功能、密码输入开锁功能、输入错误报警功能、输入错误锁屏功能等。
5.开发板有六个按键,如何设置各个按键的功能;如何用数码管进行显示等。
2. 设计方案及论证
2.1. 实验方案比较
基于52单片机的简易密码锁有多种实现方案,比如使用数码管可以做,使用点阵可以做,使用1602和12864液晶都可以做,关键在于用户界面,我的单片机只有数码管和1602液晶,数码管只有四位,并且只能显示数字,这不仅对密码锁用户很不友好,而且只有四位密码安全性不高所以最终选择使用液晶。
对于二者之间的区别,实际上只有界面的不同,液晶可以显示16x2的英文,这可以用来设置一些提示,而数码管只能显示数字,通过对应关系来判断此时密码锁的状态,比较麻烦,对于密码的输入与存储其实大同小异,我在创建了两个数组,一个用来存储初始设置的密码,同时也是修改密码存储的数组,而另一个数组则用来存储用户输入的密码,再对二者进行判断密码是否正确。对于实现细节将在后面讲到
2.2. 原理图
2.3. 运行效果图
如下提示输入密码
2.4. 操作注意
- 我这密码锁只用到了两个按键,实际上只用一个也可以。
- 初始密码为234567,在输入的时候可以长按设置的key1键,这个在你自己的开发板中按键肯定不同,直接拿我的源码估计是用不了,毕竟每块开发板的接口对应的资源不一样,你需要把按键以及接口以及其他需要更改的内容重新定义就可以,程序的核心是可以不用修改的。
- 修改密码在输入密码正确的后的2.5s内长按我定义的key2会进入改密码的界面,同输入密码一样,使用key1键,单片机会按顺序一直输入密码,也可以一个一个地输入,改密之后会再次进入输密码验证如此一直循环,当然这只是一个象征意义,距离真正的密码锁还比较远,我只是把核心功能做出来了,其他外设,比如提示灯、继电器、蜂鸣器、锁屏等等比较简单的东西大家自己去琢磨吧。
2.5. 源码
详见 github:电子密码锁
3. 附
代码里面那个yanchi函数实际上就是延时函数,因为在我自己的机子上我把它写进了reg52的库里,所以代码中没有函数声明。———— 2020.6.30 -23:14