1、基于 51 单片机密码锁的设计电子密码锁是一种通过输入密码来控制芯片或电路工作,从而控制机械开关的闭合,完成密码锁的开 锁、闭锁任务的电子产品。它有很多的种类,包括简易的电路产品,也有性价比比较高的基于芯片的 产品。 现在应用比较多的电子密码锁主要以芯片为主,内部通过编程实现实际功能。 本次毕业设计通过单片机 C51 语言编写密码程序,用 3-8 译码器和74LS138 驱动的数码管来显示密码数字数码管以 “”来实时显示当前输入密码的个数。 94 %: 当输入密码正确时,对应的指示灯变亮; 当密码不正确时,另一个对应的指示灯变亮并且发出蜂鸣声报警。 关键词: AT89S51; 单元电路; 密码
2、程序; C51 语言; 电子密码锁 目录 第一章 绪论 1 1.1 电子密码锁的背景 1 1.2 电子密码锁的发展趋势 1 1.3 本设计要实现的目标 2 第二章 系统方案对比与确认 4 2.1 系统基本方案 4 2.1.1 系统框图 4 2.1.2 各模块方案选择与论证 5 2.1.3 系统各模块的最终方案 5 第三章 系统的硬件设计与实现 11 3.1 系统硬件概述 11 3.2 主要单元电路的设计 12 3.2.1 键盘扫描模块电路的设计 11 3.2.2 单片机控制模块电路的设计 11 3.2.3 声光报警模块电路的设计 11 3.2.4 数码显示模块电路的设计 11 第四章 系统软件
3、设计 17 4.1 系统软件的概述 17 4.2 子程序的设计 19 4.2.1 自检子程序 17 4.2.2 键盘扫描子程序 17 4.2.3 位移子程序 18 4.2.4 开锁子程序 17 4.2.5 修改密码子程序 18 第五章 系统仿真与调试 21 5.1 系统仿真过程 21 5.2 仿真调试过程中遇到的困难及解决方法 21 致谢 22 参考文献 22 附录 1 系统电路图 22 附录 2 系统程序 22 附录 3 系统使用说明书 22 第一章绪论1.1 电子密码锁的背景 44 %: 由于应用科技的不断发展,锁的成员已经包括声控锁、电子锁、磁性锁、密码锁、机械锁等等。 46 %: 开锁
4、时,在金属钥匙的基础上,添加一种或多种密码,并组合不同图像,不同声音等(如视网膜、指纹等 )来控制锁的开启。 大大提高了锁的安全等级,人们对自己的财产安全也有了更多的保障。 现如今越来越多 的人开始应用安全信息系统,尤其是在财产安全、隐私保护。 机密保护等方面发挥了重大的作用。 41 %: 在 安全系统的组成部分中,电子密码锁是不可或缺的,因此对于电子密码锁的研究和设计是有很大价值的。 1.2 电子密码锁的发展趋势 在实际生活中,家庭住宅和公司的安全防范,以及公司文档文件,各种收据报表等的存储安全都需要用锁来进 行保证。 传统锁具主要有弹子锁,机械密码锁等,结构简单的安全性得不到保证,结构复杂
5、的成本却不是一般人 能负担得起的。 46 %: 如果使用多个传统锁具的时候,用户就需要携带多把钥匙。 66 %: 携带不方便且一 旦钥匙丢失,安全性也会大打折扣。 正是由于传统锁具功能的不完善和一些无法改进的特性,用“密码”来代 替传统锁具的关键“钥匙”的功能,这种新的概念一被人提出,就受到很大的关注。 47 %:密码锁的出现为人 们的工作生活带来了极大的便利,带来的是锁具行业的一次全面升级。 当然。 由于前期电子器件的限制,只 能依靠最简单的模拟电子开关来控制锁的开关,制作工序也相对简单,所以初期的电子锁的安全性差,种类也比较 少。 87 %: 后来出现基于 EDA 来实现的电路,结构复杂电
6、子元件繁多,也有使用早先的 20 引角的 2051 系列单片 机来实现的,缺点是密码简单,易破解。 89 %: 随着电子元件的进一步发展,电子密码控制系统也出现了很 多种类,功能日益强大, 使用更加方便,安全保密性更强,出现了感应原件加密码的双重保护,真正意义上实 现了电子加密, 70 %: 用户使用密码或电子钥匙其中的任意一种,都是打不开锁的。 66 %: 随着电子元件 的发展和人们对安全性要求的不断提高出现了各种各样类型的电子密码锁。 包括更多的特定需求的电子密码锁 逐渐被发明出来,它们同样具有安全,方便等特性。 56 %: 但这类产品有自己的局限性,只能针对特定声音、 指纹或有效卡有效,
7、且不能实现远程控制,适应于小众,即安全性要求高并且由个人使用的柜、箱、房门等。 实际生活中人体生物特征、图形图像和数字、字符、时间等要素均能成为钥匙的电子信息,对这些电子信息进行实 际业务需求的组合和融合, 64 %: 可以使电子密码锁获得更高等级的安全性。 目前应用此类电子密码锁比 较多的有银行金库等,其安全等级要求高,且防范非常严,需要使用多种组合信息密码吗才能打开相应的电子密码 锁, 这对于不法之徒来说就是不可跨过的鸿沟。 组合使用各种电子密码锁的开锁信息,对于电子密码锁产品的 多样化有很大的促进作用, 60 %: 可以预见,组合各种电子信息将是电子密码锁的未来发展方向。 1.3 设计实
8、现功能和效果 43 %: 此次设计的电子密码锁的核心芯片为 AT89 S51,结合数码管显示电路、声光报警电路、键盘扫描电路 等, 74 %: 实现电子密码锁的基本功能,主要具有如下功能: 73 %: (1 )密码通过数字键盘输入,当输入密码正确时,将锁打开。 (2)键盘锁定和报警。 69 %: 首次密码输入错误数码管显示错误提示,密码输入次数超过 3 次,蜂鸣器报 警同时锁定键盘。 (3)输入密码功能: 57 %: 当按下一位数字键时,最右边的数码管显示一个“” ,同时将已经输入的所 有“”依次向左移动一位。 (4)清除密码功能: 73 %: 按下清除键时清除输入的所有值并清除所有显示。 第
9、二章 系统方案对比与确认 2.1 系统基本方案 2.1.1 系统设计框图 91 %: 电子密码锁由以下 5 个部分组成,如图 2.1 所示: 图 2.1 电子密码锁系统图 键盘部分: 由 44 数字按键开关组成。 电源部分: 79 %: 由+5V 的直流稳压电源给整个系统运行供电。 单片机控制部分: 60 %: 采用单片机 AT89S51,支持 ISP 在线编程技术,便于烧写程序。 显示部分: 79 %: 采用六个数码管实时显示输入的数据; 报警部分: 采用发光二极管和蜂鸣器做声光报警。 2.1.2 各部分方案对比与确认 (1)单片机的选择 方案一: 采用 AT89C51 单片机,它可以与其它
10、 51 系列的单片机兼容、内部 ROM 全部采用 FLASH ROM、最高 时钟频率可达 24MHz 且能以 3V 超低压工作。 但不支持 ISP 在线编程技术、内部ROM 仅为 4KB 不利于 功能扩展。 方案二: 采用 AT98S51 单片机,它具同时被 AT98C51 的全部功能外,还支持 ISP 在线编程技术且内部 ROM 为 8KB 有利于功能扩展。 (2)键盘的选择 方案一: 使用独立式按键来控制 93 %: 使用独立式按键来控制数码管的显示,这样需要很多的按键,每个按键实现一个能够实现,易于控制 , 程序编写简单,但是每个按键都要接上拉电阻,占用了单片机大量的 I/ O 接口资源
11、,要对单片机外 扩 I/ O 口, 并且在电路焊接方面又不方便,还要浪费大量的资源,提高了成本。 方案二: 采用矩阵式键来控制 把按键按行列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,为判定有无键被按下 以及被按键的位置,这种称为键扫描法。 这样虽然提高了编程难度,但是节约了单片机大量的 I/O 口 ,免去了上拉电阻为焊接带来了方便,提高了整块电路板的美观度。 (3)显示模块的选择 方案一: 数码管静态显示 采用 LED 数码管静态显示方法,电路容易理解,驱动程序简单,但需要每个数码管都要一块 74 LS47 来驱动显示, 增高了成本,浪费系统硬件资源,而需要占用单片机多个 I/
12、 O 口。 方案二: 数码管动态显示 采用 LED 数码管动态扫显示方法,只需一块数码管驱动器芯片和一块译码器芯片就可以驱动多个数码 管, 价格便宜,只需要 7 个 I/ O 口就可以同时驱动 8 个数码管显示。 硬件利用效率高,驱 动程序容易理解和编程。 方案三: 液晶显示 采用 LCD 液晶显示,显示的位数多,由单片机驱动。 此方案有美观、显示清晰多样的优点。 但同时液晶显示器的驱动程序复杂,编程困难,成本高,价格昂贵,浪费大量的资源。 (4)数码管驱动选择 采用 74 LS47 驱动数码管和 74 LS138 译码器来控制数码管的 COM 端, 因为 74 LS47 只能驱动 共阳数码管
13、,而 74 LS138 的输出为低电平有效。 因此,在 74LS138 的输出端加入反向器才可以接到数码 管的 COM 端。 方案一: 74LS04 芯片的选择 采用 74 LS04 芯片做反向器,74 LS47 是集成六反向器芯片,刚好可驱动六个数码管,但是它的输入输 出引脚两边均分布, 造成跳线较多给电路焊接时带来麻烦影响了整块电路的美观度。 方案二: 三极管的选择 三极管也具有反向的功能,采用的是 PNP 管,电路的连接中又方便,减少了跳线提高美观度。 (5)报警模块的选择 方案一: 采用语音报警,虽然可以使整个系统更加完美,但是会使程序更加复杂而且提高了整个系统的造价。 方案二: 采用
14、发光二极管和蜂鸣器来报警,可以发出声光报警且降低了成本。 2.1.3 系统各模块的最终方案 结合整个系统的功能、成本、美观度等综合考虑,用 AT89 S51 单片机为 主控模块、用 44 键盘输 入、用 74 LS47、74 LS138 和三极管来 驱动六个数码管做显示模块、用发光二极管和蜂鸣器做为报警模块 。 系统框图如图 2.2 图 2.2 系统框图 第三章 系统的硬件设计与实现 3.1 系统硬件概述 97 %: 本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码具有强大的功能,通过键 盘扫描模块输入到单片机控制系统 AT89S52 中。 然后通过数码显示模块来显示我们所要
15、有数据,还有 一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,绿灯点亮,报警模块立 刻发出声音报警。 为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、数码管显示模块 ,声光报警模块等 4 模块组成。 3.2 主要单元电路的设计 3.2.1 键盘扫描模块电路的设计 如图 3.1 所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下, 然后再判定 被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通, 使得开关之间接通。 当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动, 软件 方法则是采用时间延迟以躲过
16、抖动,待行线上状态稳定之后,再进行行状态输入 图 3.1 键盘扫描模块 3.2.2 单片机控制模块电路的设计 单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用,其中采用的 是 AT89 S51, AT89 S51 是标准的 40 引脚双列直插式集成电路芯片,有 4 个八位的并行双向 I/ O 端口, 分别记作 P0、 P1、 P2、 P3。 第 20 引脚为接地端; 第 40 引脚为电源端; 第 31 引脚需要接高电位使 单片机选用内部程序存储器; 第 18、19 脚之间接上一个 12MHz 的晶振为单片机提供时钟信号; 第 9 脚为复位脚,当其接高电位时,单片机停
17、止工作。 P0 口接两个发光二极管和一个蜂鸣器以 实现声光报警功能, P2 口连接一片七段译码器和一片 3-8 译码器以动态扫描方式同时驱动六个数码管, P1 口与 16 个阵列式按键相连实现对键盘的扫描。 通过编程既能识别从译码器来驱动数码 管来显示数据,同时也通过运行指令来达到完成声光报警及动态显示数码管等功能。 如图 3.2 所示 图 3.2 单片机控制模块 3.2.3 声光报警模块电路的设计 图 3.3 声光报警模块 如图 3.3 所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当 输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。 3.2.4
18、数码显示模块电路的设计 如图 3.4 所示,该模块主要由 74 LS47 译码器, 74 LS138 译码器和 6 个 8 段数码显示管组成, 如图所示,从编码器输送过来的数据经过两片 74 LS47 芯片和 74 LS138 蕊片译码后,传送到 8 段数码显示管, 100 %: 显示管根据接收到数据电平的高低来显示不同的数据。 图 3.4 数码显示模块 从图中可以看到单片机 P2 口低 4 位连接一片 74 LS47 七段译码器, 由于 74 LS47 是共阳极数 码管的七段译码器,因此要选用共阳极的数码管。 单片机 P2.0- P21.3 的输出信号经过 74 LS47 译码后就 可以驱动
19、数码管的段码显示相应的数字, 另外在 74 LS47 的输出与数码管之间还要接上 7 个 470 欧姆的限 流电阻,以防止有过大的电流流过时烧坏数码管。 P2.4- P2.6 口接于 3-8 译码器 74 LS138的三个输入端, 100 %: 而 74 LS138 的输出端通过三极管分别接于八个数码管的公共极。 通过由 P1.4-P1.6 口的输出量来控制 74LS138 选择点亮某一个数码管。 由于 74 LS138 是低电位有效,所以应该采用 PNP型的三极管来驱动数 码管,在 此三极管相当于一个开关的作用依靠这两块芯片就可以控制数码管实现动态扫描显示。 例如: 使六个数码管显示 123
20、456。 在第一时刻输出“0001 ”给 74 LS47,让数码管显示“1” ,同 时输出“000”给 74 LS138, 选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个 数码管显示“1” , 其余数码管均不显示。 同理第二时刻也只有第二个数码管显示“2”,依次类推 第 N 时刻就只有第 N 个数码管显示 “N”。 人的肉眼只能分辨 0.1 秒内的变化,所以如果以每一时刻 0.01 秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“123456” 。 第四章系统软件设计 4.1 系统软件的概述 本系统的工作流程为: 通过键盘扫描来实现三种不同的功能,刚开始是设置的初
21、始密码 123456 通过 数码管来显示,用 10 个按键来输入 0 到 9 这从右到左依次输入, 还用三个按键来显示密码,修改密码 ,开锁等。 当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮 LED1; 当数码 管值不同时,则点亮 LED2,并且立刻发出报警声音。 主程序流程图: 图 4.1 主程序流程图 主程序说明: 单片机复位后进入初始化把初始密码 “123456”依次存放到 40 H到 45 H 六个单元中, 把 30 H 到 35 H 六个单设置为六位数码管显示数据的存放地址,设置完毕调用自检子程序进入自检状态 , 自检完毕调用扫描子程序对键盘进行扫描,如果有按键被按下则跳转
22、到相应的子程序, 100 %: 再调用显示子程序把 30 H 到 35 H 六个单元的数据给六个数码管显示出来。 显示完毕就跳加扫描子 程序继续对键盘进行扫描,如此循环。 4.2 子程序的设计 ID: 5730AECA37D3BIOMH 11 / 22 4.2.1 自检子程序 图 4.2 自检子程序流程图 自检子程序说明: 进入自检子程序后先把循环次数 30 赋给 38 H 单元,把移位次数 6 赋给 R0, 再 把 08 H 赋给 P2 口显示,把 08 H 移位后再赋给 P2 口, 循环 6 次完成一次显示,循环显示完 30 次完成自检。 4.2.2 键盘扫描子程序 图 4.3 键盘扫描
23、子程序流程图 键盘扫描程序说明: 给键盘所连接的 P2 口赋扫描码,例如: MOV P2,#0FEH, 则扫描最后一行按键。 写入这个扫描码后 P2 口的高 4 位写入“1” ,被设为输入状态,低 4 位中只有 P2.0 为 “0”。 而 P2 口的高 4 位通过按键与低 4 位相连,所以此时从 P2 口的高 4位就可以读入低 4 位的数 据。 与被按下的键相连接的高位口,读入的数据为“0 ”,其它高位口读入的为“1”从而识别出是哪 一个按键被按下。 随后再依次对 P2 口写入 FDH、FBH、07H,分别扫描第三、第二、第一行,这样交 替循环便可完成对 44 键盘的扫描。 4.2.3 位移子
24、程序 图 4.4 移位子程序流程图 移位程序说明: 进入移位子后就把 30H 到 35H 六个单元里的数据向右移一位,移位完毕后把 35H 单 元里的数据推出去,把 30H 单元空出。 4.2.4 开锁子程序 开锁程序说明: 判断 30H 到 35H 单元里的数据与 40H 到 45H 单元里的数据是否相同,如果相同,开锁 成功绿灯亮; 如果不相同,开锁不成功报警红灯亮且蜂鸣器响。 如图 4.5 所示 图 4.5 开锁子程程序流程图 4.2.5 修改密码子程序 图 4.6 修改密码子程序流程图 第五章 系统仿真与调试 5.1 系统仿真过程 开始时的数码管显示“-” ,等待输入密码。 如图 5.
25、1 所示: ID: 5730AECA37D3BIOMH 12 / 22 图 5.1 数码管显示 密码输入时显示 F 并依次左移,如密码输入错误可以使用 “clr”键进行清除,然后可以从新输入。 如图 5.2 所示: 图 5.2 数码管显示 F 密码输入正确时,数码管显示简单的便是 “pass”,同时绿色指示灯亮起,开锁电路运行,锁被打开 。 如图 5.3 所示: 图 5.3 数码管显 pass 密码是输入错误时,数码管提示“ error1”,如果继续输入第二次、第三次错误的时,数码管将提示 “ error2”和“ error3”, 同时报警器报警提示,红色指示灯闪烁,键盘锁死,防止继续操作。
26、 如 图 5.4 所示: 图 5.4 数码管显示 当需要关闭密码锁的时候,直接按下键盘上的“lock”键即可锁定。 数码管恢复初始“- -”,黄色指示灯亮起。 如图 5.5 所示: 图 5.5 5.2 仿真调试中遇到的困难及解决方法 (1)问题描述: 密码在未输入 6 位的情况下,摁下 “enter”键, 数码管显示“false”,无法返回初始 输入界面“-” 。 解决办法: “enter”键跳转时,跳转到开始即可。 (2)问题描述: 密码正确输入, “enter”键确认后,数码管显示“pass” ,这时直接按“clr” 键,屏 幕上显示“error 1”,并且报警,数码管无法恢复正常状态。 原因及解决办法: “clr”的后面跳转不对,需要加一个标志位使数码管的显示恢复“pass ”。 (3)问题描述: 在系统正常运行后,如果密码锁被用户打开,此时用户可以按下“ lock”键对其重 新上锁,但在运行过程中, 虽然系统可以重新上锁,但会在重新上锁前,出现报警,并且数码管显示 “ error1”。 原因及解决办法: 因为系统运行的速度较快,按键还没有复原,键盘的检测便又一次检测到了该按 键,重复的操作了“lock”键,系统提示错误。 所以应在检测按键时,等待按键的复原,再进行跳转 执行该按键的程序指令。 致谢