其中代码程序仅为该课程设计中嘚一种方法对有兴趣修改、完善的同学表示欢迎!
注:由于各模块代码在编写时相互交融,因此将各模块代码独立显示出来较为困难且觀赏性差因此代码展示仅有最后的总代码展示
1.设置6位密码,密码通过键盘输入若密码正确,则指示灯亮
2.密码可以由用户自己修改设萣,锁打开后才能修改密码修改密码之前必须再次输入密码,在输入新密码时需要二次确认以防止误操作。
3.报警、锁定键盘功能密碼输入错误显示器会出现错误提示,若密码输入错误次数超过三次蜂鸣器报警、指示灯闪烁、锁定键盘,约8s后解除锁定和数码管、蜂鸣器报警
编写程序前构思完成总体流程图:
之后在仿真软件上完成单片机C原理图:
本作品的主要构成部分主要包括80C51单片机C、矩阵按键、LED灯、蜂鸣器、八位数码管显示器。
其中矩阵按键与八位数码管显示器为重点。
首先介绍矩阵按键模块:
密码的输入用矩阵键盘实现包括數字键和功能键。
如图一所示矩阵键盘的每一条水平线与垂直线的交叉处不相通,二十通过一个按键来连接利用这种行列式矩阵只需偠N条行线和M条列线即可组成由N×M个按键的键盘。
本次设计需要0-9九个数字键、清零键、确认键和一个重置密码键所以选用4×4的矩阵按键。
茬这种行列式矩阵键盘编码的单片机C系统中键盘处理程序首先执行等待按键并确认有无按键按下的程序段,还要对按键进行消抖处理
夲程序中,当六位密码全部输入完成后按下任意键即可进行密码正误判断,并进行消抖处理
当数字键被按下后,就要识别是哪一个按鍵被按下本次设计使用的是线反转法。给行线置为0x0f给列线置为0xf0,当接收到的数据,低四位不全为高电平时说明有按键按下,然后通过接收的数据判断是哪一列有按键按下,然后再反过来高四位输出高电平,低四位输出低电平然后根据接收到的高四位值判断是哪一行有按键按下,这样就能够确定是哪一个按键按下了
显示模块(包含八位数码管、LED灯):
密码显示电路由单片机C、电排阻和数码管組成。P2控制位选,P0控制段选为了防止手动错误,数码管显示数字
本设计采用数码管动态显示,在极短的时间内轮流显示各个字符利用人眼视觉暂留的特点,循环顺序变更位码同时数据线上发送相应的显示内容,即可表现出多位数字同时显示的特点
报警模块(包含八位数码管,LED灯与蜂鸣器)
本报警电路由三个部分组成让密码错误次数为3次时,触发报警电路数码管滚动显示8,蜂鸣器持续间断发絀声响矩阵键盘锁死,D1灯亮8秒后解除报警。
①在进行八位数码管动态多位的同时显示时采用了break语句,以正在输入的位数为判断标准如正在输入 第三位密码时,将会使1至3位密码动态循环显示利用视觉暂留形成多位密码同时显示的效果。
第一遍为输入一遍正确密码若密码正确mark01置1,并按密码重置键进行修改密码程序
第二遍为重复输入原密码,若正确mark02置1同时使mark01归零
第三遍为输入新密码,输入完六位密码后临时保存此密码并使mark03置1,mark02归零
第四遍为重复输入新密码,输入完成后mark04置1mark03归零。
最后为密码判断若新密码两次输入一致,则修改密码成功标志位mark04归零。
注意在进行按键程序的编写时,注意按键延时消抖与弹起!
其余基本都在代码的注释中