摘 要
电子密码锁己广泛的应用于日常生活中,随着电子产品向智能化和微型化的 不断发展,单片机已成为电子产品研制和开发中首选的控制器。由于单片机具有 体积小,耗电少,控制精度高,运行可靠等的特点,所以广泛应用于生产实际中。电 子密码锁是每个行业和生活中的重要参数之一。为了更好地推广电子锁在各领域 中的应用,在此根据任务要求设计了一种基于ATS52单片机控制的电子密码锁。并介绍了单片机控制的矩阵式开关与数码管控制装置及其工作原理、设计思想、以及硬件电路和软件程序等。装置应用ATS52单片机,通过单片机编写密码程序,并用74LS47和3-8译码器74LS138驱动的数码管来显示密码。数码管可以时时显示当前输入的六位数字。当输入密码正确时,对应的指示灯亮;当密码不正确时,另一个对应的指示灯亮且并且发出声音报警。
关键词:矩阵式键盘,单片机,数码管显示,电子密码锁,译码器
Abstract
Electronic locks have been widely used in daily life, as electronic products to intelligent and miniaturization, SCM has become electronic product research and development in the preferred controller。Since the microcontroller with small, low power consumption, high precision control, reliable, and more features,it is widely used in production。Electronic code lock is the life of each industry and one of the important parameters。In order to better promote electronic locks in all areas of application,we designed an application MCU ATS52 microcontroller-based control design of a matrix switch with digital control devices and their working principle, design, and hardware and software of electronic lock。ATS52 microcontroller device applications, the password program written by SCM, and 3-8 with 74LS47 Decoder 74LS138-driven digital control to display the password。Digital tube can always display the current input of six digits。When you enter the password correctly, the corresponding indicator light;When the password is incorrect, the other, and the corresponding indicator
Iword格式支持编辑,如有帮助欢迎下载支持。
light and sound alarm。
Key word:Matrix keyboard,SCM,Digital display ,Electronic locks
目录
摘 要 ............................................................... Ⅰ Abstract ............................................................ Ⅱ 引 言 ............................................................... 1 第1章.系统方案选择和论证 .......................................... 2
1.1 设计要求 ..................................................... 2 1.2 系统基本方案 ................................................. 2
1.2.1 系统框图 ............................................. 2 1.2.2 各模块方案选择和论证 ................................... 3 1.2.3 系统各模块的最终方案 ................................... 4
第2章. 系统的硬件设计与实现 ....................................... 6
2.1 系统硬件概述 ................................................. 6 2.2 主要单元电路的设计 ........................................... 6
2.2.1 键盘扫描模块电路的设计 ............................... 6 2.2.2 单片机控制模块电路的设计 ............................. 7 2.2.3 声光报警模块电路的设计 ............................... 8 2.2.4 数码显示模块电路的设计 ............................... 9
第3章. 系统的软件设计 ............................................ 11
3.1 系统软件概述 ................................................ 11
3.1.1 软件系统分析 ........................................ 11 3.1.2 主程序流程图: ...................................... 12 3.2 子程序的设计 ................................................ 13
3.2.1 自检子程序 .......................................... 13 3.2.2 键盘扫描子程序 ...................................... 14 3.2.3 移位子程序 .......................................... 15 3.2.4 显示子程序 .......................................... 16 3.2.5 密码显示子程序 ...................................... 17 3.2.6 开锁子程序 .......................................... 18 3.2.7 修改密码子程序 ...................................... 19
第4章.分析与结论 .................................................. 20 第5章.致谢辞 ..................................................... 20
II
第6章.参考文献 ................................................... 21 附录A:系统电路图 .................................................. 22 附录B:系统主要元件清单 ............................................ 24 附录C:系统程序清单 ................................................ 25 附录D:系统使用说明书 .............................................. 36
引 言
在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜。电子密码锁是由电子电路控制锁体的新型锁具,它采用触摸键盘方式输入开锁密码,操作方便。触摸式电子锁的输入部分采用触摸开关(键盘输入),其优势在于传统的机械开关之出在于其保密性高,使用灵活性好,安全系数高,无活动零件,不会磨损,寿命长等受到了广大用户的亲呢。出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。而且卡片式IC卡还有易丢失等特点,加上其成本一般较高,一定程度上了这类产品的普及和推广。
在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用也日趋重要。一般来说大部分电子密码锁设计采用单片机为核心单元,设计一款具有本机开锁和报警功能的电子密码锁,既简单又实用。在设计此类系统中主要由单片机系统、矩阵键盘、液晶显示、密码存储和报警系统组成。设置开锁密码,利用软件与硬件结合的方法来实现。系统能完成本机开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,有的电子密码锁系统还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能,此类系统成本低廉,功能实用。
III
第1章.系统方案选择和论证
1.1 设计要求
1.1.1 初始密码统一设定为“123456”。 1.1.2 要求电子密码锁具有开机自检功能。
1.1.3 16 个阵列式分别代表“1”—“9”数据、显示密码按钮、修改密码按钮、开
锁按钮、关闭报警按钮、清除最高按钮、退格按钮。 1.1.4 用六位数码管时时显示阵列式开关输入的数据。
1.1.5 当开锁按钮被按下时,如果数码管当前显示值与密码值相同则点亮绿灯;如果与密码值不同则点亮红灯,并发出报警。
1.2 系统基本方案
1.2.1 系统框图
简易电子密码锁是由5 个部分组成,如图1.1 所示:
键盘模块 单 片 机 控 制 模 块 报警模块 电源模块 显示模块
图1.1 电子密码锁控制系统
电源模块:由+5V 的直流稳压电源供电给整个系统工作。
1
键盘模块:由16 个轻触式开关组成。
单片机控制模块:采用支持ISP 在线编程技术的单片机ATS52 便于烧写程序。 显示模块:采用六个数码管时时显示当前输入数据; 报警模块:采用发光二极管和蜂鸣器做声光报警。
1.2.2 各模块方案选择和论证
(1)单片机的选择
方案一:
采用ATC51 单片机,它可以与其它51 系列的单片机兼容、内部ROM 全部采用FLASH ROM、最高时钟频率可达24MHz 且能以3V 超低压工作。但不支持ISP 在线编程技术、内部ROM 仅为4KB 不利于功能扩展。
方案二:
采用AT98S52 单片机,它具同时被AT98C51 的全部功能外,还支持ISP 在线编程技术且内部ROM 为8KB 有利于功能扩展。 (2)键盘的选择
方案一:使用式按键来控制
使用式按键来控制数码管的显示,这样需要很多的按键,每个按键实现一个能,易于控制,程序编写简单,但是每个按键都要接上拉电阻,占用了单片机大量的I/O 接口资源,要对单片机外扩I/O 口,并且在电路焊接方面又不方便,还要浪费大量的资源,提高了成本。
方案二:采用矩阵式键来控制
把按键按行列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,为判定有无键被按下以及被按键的位置,这种称为键扫描法。这样虽然提高了编程难度,但是节约了单片机大量的I/O 口,免去了上拉电阻为焊接带来了方便,提高了整块电路板的美观度。 (3)显示模块的选择
方案一:数码管静态显示
采用LED 数码管静态显示方法,电路容易理解,驱动程序简单,但需要每个数码管都要一块74LS47 来驱动显示,增高了成本,浪费系统硬件资源,而需要占用单片机多个I/O 口。
方案二:数码管动态显示
采用LED 数码管动态扫显示方法,只需一块数码管驱动器芯片和一块译码器芯片就可以驱动多个数码管,价格便宜,只需要7 个I/O 口就可以同时驱动8 个
1
数码管显示。硬件利用效率高,驱动程序容易理解和编程。
方案三:液晶显示
采用LCD 液晶显示,显示的位数多,由单片机驱动。此方案有美观、显示清晰多样的优点。但同时液晶显示器的驱动程序复杂,编程困难,成本高,价格昂贵,浪费大量的资源。 (4)数码管驱动选择
采用74LS47 驱动数码管和74LS138 译码器来控制数码管的COM 端,因为74LS47 只能驱动共阳数码管,而74LS138 的输出为低电平有效。因此,在74LS138 的输出端加入反向器才可以接到数码管的COM 端。
方案一:74LS04 芯片的选择
采用74LS04 芯片做反向器,74LS47 是集成六反向器芯片,刚好可驱动六个数码管,但是它的输入输出引脚两边均分布,造成跳线较多给电路焊接时带来麻烦影响了整块电路的美观度。
方案二:三极管的选择
三极管也具有反向的功能,采用的是PNP 管,电路的连接中又方便,减少了跳线提高美观度。 (5)报警模块的选择
方案一:
采用语音报警,虽然可以使整个系统更加完美,但是会使程序更加复杂而且提高了整个系统的造价。
方案二:
采用发光二极管和蜂鸣器来报警,可以发出声光报警且降低了成本。
1.2.3 系统各模块的最终方案
结合整个系统的功能、成本、美观度等综合考虑,用ATS52 单片机为主控模块、用4×4 键盘输入、用74LS47、74LS138 和三极管来驱动六个数码管做显示模块、用发光二极管和蜂鸣器做为报警模块。系统框图如图1.2
2
4×4键盘输入 六位数码管显示 ATS52 直流稳压电源 声光报警
图1.2 系统框图
第2章. 系统的硬件设计与实现
2.1 系统硬件概述
本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码, 具有强大的功能,通过键盘扫描模块输入到单片机控制系统ATS52 中。然后通 过数码显示模块来显示我们所要有数据,还有一个就是报警模块,当输入的密码 相同时,则显示模块的灯点亮,当输入的密码是错误时,绿灯点亮,报警模块立 刻发出声音报警。为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、 数码管显示模块,声光报警模块等4 模块组成。
2.2 主要单元电路的设计
2.2.1 键盘扫描模块电路的设计
图2.1 键盘扫描模块
如图2.1 所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下,然后再判定被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使得开关之间接通。当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动,软件方法则是采用时间延迟以躲过
1
抖动,待行线上状态稳定之后,再进行行状态输入。
2.2.2 单片机控制模块电路的设计
图2.2 单片机控制模块
如图2.2 所示,单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用,其中采用的是ATS52,ATS52 是标准的40 引脚双列直插式集成电路芯片,有4 个八位的并行双向I/O 端口,分别记作P0、P1、P2、P3。第20 引脚为接地端;第40引脚为电源端;第31 引脚需要接高电位使单片机选用内部程序存储器;第18、19 脚之间接上一个12MHz 的晶振为单片机提供时钟信号;第9 脚为复位脚,当其接高电位时,单片机停止工作。P0 口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P2 口连接一片七段译码器和一片3-8 译码器以动态扫描方式同时驱动六个数码管,P1 口与16 个阵列式按键相连实现对键盘的扫描。通过编程既能识别从译码器来驱动数码管来显示数据,同时也通过运行指令来达到完成声光报警及动态显示数码管等功能。
2.2.3 声光报警模块电路的设计
图2.3 声光报警模块
如图2.3 所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。
2.2.4 数码显示模块电路的设计
图2.4 数码显示模块
如图2.4 所示,该模块主要由74LS47 译码器,74LS138 译码器和6 个8 段数码显示管组成,如图所示,从编码器输送过来的数据经过两片74LS47 芯片和74LS138 蕊片译码后,传送到8 段数码显示管,显示管根据接收到数据电平的高低来显示不同的数据。
从图中可以看到单片机P2 口低4 位连接一片74LS47 七段译码器,由于74LS47 是共阳极数码管的七段译码器,因此要选用共阳极的数码管。单片机P2.0-P21.3 的输出信号经过74LS47 译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47 的输出与数码管之间还要接上7 个470 欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。P2.4-P2.6 口接于3-8 译码器74LS138 的
2
三个输入端,而74LS138 的输出端通过三极管分别接于八个数码管的公共极。通过由P1.4-P1.6 口的输出量来控制74LS138 选择点亮某一个数码管。由于74LS138 是低电位有效,所以应该采用PNP 型的三极管来驱动数码管,在此三极管相当于一个开关的作用依靠这两块芯片就可以控制数码管实现动态扫描显示。
例如:使六个数码管显示123456。在第一时刻输出“0001”给74LS47,让数码管显示“1”,同时输出“000” 给74LS138,选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个数码管显示“1”,其余数码管均不显示。同理第二时刻也只有第二个数码管显示“2”,依次类推第N 时刻就只有第N 个数码管显示“N”。人的肉眼只能分辨0.1 秒内的变化,所以如果以每一时刻0.01 秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“123456”。
第3章. 系统的软件设计
3.1 系统软件概述
3.1.1 软件系统分析
本系统的工作流程为:通过键盘扫描来实现三种不同的功能,刚开始是设置的初始密码123456 通过数码管来显示,用10 个按键来输入0 到9 这从右到左依次输入,还用三个按键来显示密码,修改密码,开锁等。当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮LED1;当数码管值不同时,则点亮LED2,并且立刻发出报警声音。
3
3.1.2 主程序流程图:
开始 初始化 自检子程序 键盘扫描子程序 有按键按下 相应子程序 显示子程序 循环
图3.1 主程序流程图
主程序说明:单片机复位后进入初始化把初始密码“123456”依次存放到40H 到45H六个单元中,把30H 到35H 六个单设置为六位数码管显示数据的存放地址,设置完毕调用自检子程序进入自检状态,自检完毕调用扫描子程序对键盘进行扫描,如果有按键被按下则跳转到相应的子程序,再调用显示子程序把30H 到35H 六个单元的数据给六个数码管显示出来。显示完毕就跳加扫描子程序继续对键盘进行扫描,如此循环。
1
3.2 子程序的设计
3.2.1 自检子程序
开始 30H→38H 移位次数6→R0 08H→P1显示 移位 NO R0=0? YES NO (38H)=0? YES 关闭自检 返回
图3.2 自检子程序流程图
自检子程序说明:进入自检子程序后先把循环次数30 赋给38H 单元,把移位次数6 赋给R0,再把08H 赋给P2 口显示,把08H 移位后再赋给P2 口,循环6 次完成一次显示,循环显示完30 次完成自检。
1
3.2.2 键盘扫描子程序
开始 初始化 输入扫描码 YES 防抖 YES 取出键值 YES 跳转相应子程序 YES 第四列按键 NO 下一行 NO 超过四行 YES 第三列按键 NO 第二列按键 NO 第一列按键 NO
图3.3 键盘扫描子程序流程图
键盘扫描程序说明:给键盘所连接的P2 口赋扫描码,例如:MOV P2,#0FEH, 则扫描最后一行按键。写入这个扫描码后P2 口的高4 位写入“1”,被设为输入状态,低4位中只有P2.0 为“0”。而P2 口的高4 位通过按键与低4 位相连,所以此时从P2 口的高4位就可以读入低4 位的数据。与被按下的键相连接的高位口,读入的数据为“0”,其它高位口读入的为“1”从而识别出是哪一个按键
1
被按下。随后再依次对P2 口写入FDH、FBH、07H,分别扫描第三、第二、第一行,这样交替循环便可完成对4×4 键盘的扫描。
3.2.3 移位子程序
开始 (34H)→ (35H) (33H)→ (34H) (32H)→ (33H) (31H)→ (32H) (30H)→ (31H) 相应数据→(30H) 返回
图 3.4 移位子程序流程图
移位程序说明:进入移位子后就把30H 到35H 六个单元里的数据向右移一位,移位完毕后把35H 单元里的数据推出去,把30H 单元空出。
1
3.2.4 显示子程序
开始 循环次数40 →(3AH) (30H) → P2 (31H) → P2 (32H) → P2 (33H) → P2 (34H) → P2 (35H) → P2 NO 3AH减一为0? YES 返回
图 3.5 显示子程序流程图
显示程序说明:进入显示子程序后把显示次数40 次赋给3AH 单元,把30H 到35H 六个单元里的数据赋给P2 口显示完一次,显示完40 次返回。
1
3.2.5 密码显示子程序
开始 循环次数250 →(4AH) (40H) → P2 (41H) → P2 (42H) → P2 (43H) → P2 (44H) → P2 (45H) → P2 NO 4AH减一为0? YES 返回
图 3.6 密码显示子程序流程图
密码显示程序说明:进入密码显示子程序后把显示次数250 次赋给4AH 单元,把30H 到35H 六个单元里的数据赋给P2 口显示完一次,显示完250 次返回。
1
3.2.6 开锁子程序
开始 (30H)~ (35H) = (40H ) ~ (45H) ? NO YES 报警 开锁 返回
图 3.7 开锁子程程序流程图
开锁程序说明:判断30H 到35H 单元里的数据与40H 到45H 单元里的数据是否相同,如果相同,开锁成功绿灯亮;如果不相同,开锁不成功报警红灯亮且蜂鸣器响。
1
3.2.7 修改密码子程序
开始 成功开锁 NO 不修改 YES 修改密码 返回
图 3.8 修改密码子程序流程图
修改密码程序说明:判断绿灯是否已点亮,点亮则说明已开锁成功可修改密码,否则不修改。
第4章.分析与结论
总体来看,已经完成了题目所要求的基本功能,在完成成基本功能外还有解除报警功能和退格功能,这样使整个系统的功能更加完美,成本也不高,应用更加方便。整个电路从整体上看电路已基本稳定,经多次检查已复合要求,加上软件
1
上的功能对于电子密码锁来说已完美。
我设计的是基于单片机控制的电子密码锁。经过一段时间的努力,我基本上完成了题目的要求设计和制作。
在设计过程中,我首先进行方案的设计,然后是电路的布局和设计,最后是对电路进行仔细检查。在方案的设计过程中,经过了理论验证和筛选,才确定最终的方案。比如键盘扫描的设计,就考虑过二种不同的方案;对数码显示模块的使用,也使用了两种不同的芯片来驱动数码管。而电路的制作更是成功完成制作的保证,因此在整个过程中,我从始至终都秉着严谨、认真的态度来完成特别是在编程的时,开始是一点不懂,看到编程有种头痛的感觉,但在老师的指导下和同组的帮助下,我的设计程序己基本上实现了。
总之,在这次毕业设计当中,尽管时间有些紧迫,却使我们学到了许 多知识,不管是专业基础知识还是动手制作能力,都得到了很大的提高,既 开拓了思维也积累了经验,更重要的是使我们看到自己的不足和今后更需要努力的方向。以后我们将更加努力学好专业知识,不断地积累更丰富的经验,进一步提高动手技能。
第5章.致谢辞
感谢河南城建学院给予我们这个毕业设计的机会,提供了一个让我们展示才能,开拓创新思维,激发创新灵感,交流学习的平台。我们通过这次毕业设计,极大地提高了动手能力,磨练了意志,同时也培养了自主创新的意识。感谢我的指导老师和在此设计过程中帮助我的一些同学,在你们指导和帮助下,我才能顺利的完成这次毕业设计。
第6章.参考文献
[1] 刘勇. 《数字电路》. 电子工业出版社,2004
[2] 王法能.《单片机原理及应用》.(简明修订版) 科学出版社出版发行, 2001 [3] 赵伟军.PROTEL 99 SE 教程.人民邮电出版社,2004 [4] 黄 强.模拟电子技术.科学出版社,2003
[5] 王磊,PLC 控制的多功能磁卡式电子密码锁设计,河南大学学报,1998 [6] 祖龙起,刘仁杰, 一种新型可编程密码锁 大连轻工业学院学报 ,2002 [7] 宁爱民,应用ATC2051单片机设计电子密码锁 淮海工学院学报 12(2):
2
28-31,2003
[8] 曾咭昭, 外遥控电子密码锁应用研究 国外电子元器件,4:7-8,2002 [9] 赵克林,姜春茂,韩忠东.《C语言程序设计教程》.北京工业大学出版 [10]李晓白,秦红磊等主编.《凌阳16位单片机C语言开发》.北京航空航天大学出版
[11] 胡汉才. 单片机原理及其接口技术. 清华大学出版社.1996年
[12] 余永权. ATMEL系列(MCS-51兼容)FLASH单片机原理及应用. 电子工业出版社. 1997
[13] 刘树林,高树德.《低频电子线路》.电子工业出版社。 [14] 21ic,美信的MAX7219的资料。
[15] 杨鸣,毛婕,冯文利.《max7219与单片机的驳接》.发布时间2006.06 [16] ATmega.ATmega8L-8AC,2006,(01);
[17] Wireless World,1998,vol、84,No、1509,p69;
附录A:系统电路图
附录B:系统主要元件清单
3
附录C:系统程序清单
ORG 0000H LJMP START START:
MOV 40H,#06H ;设置初始密码为“123456”并分别存放到45H~~40H MOV 41H,#15H MOV 42H,#24H
4
MOV 43H,#33H MOV 44H,#42H
MOV 45H,#51H ;六位密码存放地址
MOV 30H,#0FFH ;六个数码管显示数据存放地址 MOV 31H,#0FFH MOV 32H,#0FFH MOV 33H,#0FFH MOV 34H,#0FFH MOV 35H,#0FFH
MOV R0,#06H ;LCALL ZIJIAN ;CHENGXU:
LCALL SAOMIAO ;LCALL XIANSHI ;LJMP CHENGXU ;ZIJIAN: ;MOV 38H,#30 ;A3: SETB P0.0 SETB P0.1 SETB P0.2
MOV A,#00001000B ;A4: MOV P2,A
ADD A,#00010000B ;LCALL DELE ;DJNZ R0,A4 DJNZ 38H,A3
MOV P1,#0FFH ;CLR P0.0 CLR P0.1 CLR P0.2 RET
自检移位次数 调用自检子程序 调用扫描子程序 调用显示子程序 循环 自检子程序 循环次数 给数码管显示为\"8\" 移位
调用显示延时子程序 自检完毕,关闭自检 5
DELE: ;显示延时子程序 MOV 36H,#250 DJNZ 36H,$ RET
XIANSHI: ;显示子程序 MOV 3AH,#40 ;显示循环次数 XS2:
MOV P2,30H ;LCALL DELE ;MOV P2,31H LCALL DELE MOV P2,32H LCALL DELE MOV P2,33H LCALL DELE MOV P1,34H LCALL DELE MOV P1,35H LCALL DELE
DJNZ 3AH,XS2 ;RET
SAOMIAO: ;MOV R7,#0F7H ;MOV R6,#00H ;HANGSAO:MOV A,R7
MOV P1,A ;MOV A,P2 SETB C
MOV R5,#04H ;LIESAO: RLC A
JNC PANDUAN ;序
把30H 到35H 的数据给P1 口显示 调用显示延时子程序 循环显示 扫描子程序
输出扫描码(列:1111)(行:0111),扫描第一行 用于检测哪个按键被按下 开始扫描行 扫描同一行的4 个按键 检测当前按键是否被下,如果有马上跳到判断子程 6
INC R6 ;如果当前没有按键被按下则检测下一个 DJNZ R5,LIESAO ;检测完本行的4 个按键,则跳出 MOV A,R7 SETB C RRC A
MOV R7,A ;扫描码右移一位,开始扫描下一行
JC HANGSAO ;描完4 行就返回RET
PANDUAN: ;LCALL DEL ;MOV A,R6 XRL A,#00H
JZ KAIGUAN1 ; MOV A,R6 XRL A,#01H
JZ KAIGUAN2 ; MOV A,R6 XRL A,#02H
JZ KAIGUAN3 ; MOV A,R6 XRL A,#03H
JZ KAIGUAN4 ; MOV A,R6 XRL A,#04H
JZ KAIGUAN5 ; MOV A,R6 XRL A,#05H
JZ KAIGUAN6 ; MOV A,R6 XRL A,#06H
JZ KAIGUAN7 ; MOV A,R6 XRL A,#07H
没有扫描完4 行则跳到HANGSAO 继续扫描,已扫判断是那个开关被按下 调用消抖延时子程序 开关被按下跳转按键1 功能子程序 开关被按下跳转按键2 功能子程序 开关被按下跳转按键3 功能子程序 开关被按下跳转按键4 功能子程序 开关被按下跳转按键5 功能子程序 开关被按下跳转按键6 功能子程序 开关被按下跳转按键7 功能子程序 7
JZ KAIGUAN8 ; 开关被按下跳转按键8 功能子程序 MOV A,R6 XRL A,#08H
JZ KAIGUAN9 ; 开关被按下跳转按键9 功能子程序 MOV A,R6 XRL A,#09H
JZ KAIGUAN10 ; MOV A,R6 XRL A,#0AH
JZ KG11 ; MOV A,R6 XRL A,#0BH
JZ KG12 ; MOV A,R6 XRL A,#0CH
JZ KG13 ; MOV A,R6 XRL A,#0DH
JZ KG14 ; MOV A,R6 XRL A,#0EH
JZ KG15 ; MOV A,R6 XRL A,#0FH
JZ KG16 ; LJMP SAOMIAO KG11:
LJMP KAIGUAN11 KG12:
LJMP KAIGUAN12 KG13:
LJMP KAIGUAN13 KG14:
LJMP KAIGUAN14
开关被按下跳转按键10 功能子程序 开关被按下跳转按键11 功能子程序 开关被按下跳转按键12 功能子程序 开关被按下跳转按键13 功能子程序 开关被按下跳转按键14 功能子程序 开关被按下跳转按键15 功能子程序 开关被按下跳转按键16 功能子程序8
KG15:
LJMP KAIGUAN15 KG16:
LJMP KAIGUAN16
DEL: ;消抖延时子程序 MOV 3FH,#5 D1:
MOV 3EH,#200 DJNZ 3EH,$ DJNZ 3FH,D1 RET
KAIGUAN1: ;LCALL YIWEI ;MOV 30H,#01H ;RET ;KAIGUAN2: LCALL YIWEI MOV 30H,#02H RET
KAIGUAN3: ;LCALL YIWEI MOV 30H,#03H RET
KAIGUAN4: ;LCALL YIWEIMOV 30H,#04H RET
KAIGUAN5: ;LCALL YIWEI MOV 30H,#05H RET
KAIGUAN6: ;LCALL YIWEI MOV 30H,#06H
按键1 功能子程序 调用移位子程序
把“1”给30H 让数码管显示 按键2 功能子程序 按键3 功能子程序 按键4 功能子程序 按键5 功能子程序 按键6 功能子程序 9
RET
KAIGUAN7: ;按键7 功能子程序 LCALL YIWEI MOV 30H,#07H RET
KAIGUAN8: ;按键8 功能子程序 LCALL YIWEI MOV 30H,#08H RET
KAIGUAN9: ;LCALL YIWEI MOV 30H,#09H RET
KAIGUAN10: ;LCALL YIWEI MOV 30H,#00H RET
KAIGUAN11: ;MOV 4AH,#250 ;XX:
MOV P2,40H ;LCALL DELE MOV P2,41H LCALL DELE MOV P2,42HLCALL DELE MOV P2,43H LCALL DELE MOV P2,44H LCALL DELE MOV P2,45H LCALL DELE DJNZ 4AH,XX RET
按键9 功能子程序 按键10 功能子程序 显示密码子程序(按键11 功能子程序) 显示循环次数 把40H~~45H 里的数据给P1 口让数码管显示 10
KAIGUAN12: ;开锁子程序(按键12 功能子程序) MOV A,30H
XRL A,40H ;检查输入密码是否正确 JNZ BAOJING ;不正确调用报警子程序报警2S MOV A,31H XRL A,41H JNZ BAOJING MOV A,32H XRL A,42H JNZ BAOJING MOV A,33H XRL A,43H JNZ BAOJING MOV A,34H XRL A,44H JNZ BAOJING MOV A,35H XRL A,45H JNZ BAOJING
SETB P0.0 ;RET
KAIGUAN13: ;JNB P0.0,BUGAI ;MOV 40H,30H ;MOV 41H,31HMOV 42H,32H MOV 43H,33H MOV 44H,34H MOV 45H,35H
CLR P0.0 ;BUGAI: RET
KAIGUAN14: ;MOV P0,#00H ;输入密码正确绿灯点亮 修改密码确认子程序(按键13 功能子程序) 判断绿是否点亮 把当前显示数据设为密码 密码修改成功,关闭绿灯 关闭子程序 (按键14 功能子程序) 关闭报警
11
RET
BAOJING: ;报警子程序 SETB P0.1 ;启动报警 SETB P0.2 RET
KAIGUAN15: ;清除当前显示的最高位子程序(按键15 功能子程序) MOV A,35H XRL A,#0FFH
JNZ G1 ;MOV A,34H XRL A,#0FFH
JNZ G2 ;MOV A,33H XRL A,#0FFH
JNZ G3 ;MOV A,32H XRL A,#0FFH
JNZ G4 ;MOV A,31H XRL A,#0FFH
JNZ G5 ;MOV A,30H XRL A,#0FFH
JNZ G6 ;GG:
MOV @R1,#0FFH ;RET G1: MOV R1,#35H LJMP GG G2: MOV R1,#34H LJMP GG G3:
判断35H 是否有显示,有则跳转 判断34H 是否有显示,有则跳转 判断33H 是否有显示,有则跳转 判断32H 是否有显示,有则跳转 判断31H 是否有显示,有则跳转 判断30H 是否有显示,有则跳转 把0FFH 赋给当前显示的最高位 12
MOV R1,#33H LJMP GG G4: MOV R1,#32H LJMP GG G5: MOV R1,#31H LJMP GG G6: MOV R1,#30H LJMP GG
KAIGUAN16: ;MOV A,31H CLR C SUBB A,#10H
MOV 30H,A ;MOV A,32H CLR C SUBB A,#10H
MOV 31H,A ;MOV A,33H CLR C SUBB A,#10H
MOV 32H,A ;MOV A,34HCLR C SUBB A,#10H
MOV 33H,A ;MOV A,35H CLR C SUBB A,#10H
MOV 34H,A ;MOV 35H,#0FFH ;#0FFH RET
清除当前显示的最低位子程序(按键16 功能子程序) 把31H 的数据给30H 把32H 的数据给31H 把33H 的数据给32H 把34H 的数据给33H 把35H 的数据给34H
赋给35H,35H 显示时变为黑屏 13
DEL2S: ;延时2S 子程序 MOV 4FH,#20 D2S: MOV 4EH,#200 D2S1: MOV 4DH,#250 DJNZ 4DH,$ DJNZ 4EH,D2S1 DJNZ 4FH,D2S RET
YIWEI: ;MOV A,34H
ADD A,#00010000B ;MOV 35H,A MOV A,33H
ADD A,#00010000B ;MOV 34H,A MOV A,32H
ADD A,#00010000B ;46 MOV 33H,A MOV A,31H
ADD A,#00010000B ;MOV 32H,A MOV A,30H
ADD A,#00010000B ;MOV 31H,A RET
移位子程序 把34H 的数据移到35H 把33H 的数据移到34H 把32H 的数据移到33H 把31H 的数据移到32H 把30H 的数据移到31H 14
附录D:系统使用说明书
在放置整个系统时不要把电路放置在潮湿的地方、有水的地方、放置在桌面时要把桌面清理干净、保持桌面干燥,以上几点均可以造成电路短路,影响到整个系统的工作,因此需要特别注意。
整个系统只须要一组+5V 的直流稳压电源供电为整个系统工作。
把键盘输入模块接到单片机的P1 口、数码显示模块接到单片机的P2 口、报警模块接到单片机的P.0---P0.3 口即可。注意不要把电源接反。
键盘如下图所示:
其中0----9 键代表数字0---9 X 键为显示密码键 K 键为开锁键 #键为修改密码键 G 键为关闭报警键 D 键为清除最高位键 C 键为退格健
设计后的电路只要按以上方法接线,上电后按照键盘输入图即可进行测试。
1
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务