电路设计密码锁
- 格式:doc
- 大小:937.00 KB
- 文档页数:27
千里之行,始于足下。
电子密码锁的电路设计电子密码锁是一种基于数字密码输入的锁,它利用电子电路技术实现了对锁的控制和解锁功能。
下面将介绍如何设计一个简单的电子密码锁电路。
整个电子密码锁电路设计主要包括以下几个部分:1. 数码键盘模块:用于输入密码的模块,一般采用矩阵键盘或单片机带有键盘的模块。
2. 输入密码存储模块:用于存储用户设置的密码,可以采用EEPROM、FLASH等非易失性存储器。
3. 控制逻辑模块:用于控制电子锁的解锁和上锁功能,可以采用CMOS逻辑门电路实现。
4. 驱动模块:用于驱动电子锁的解锁和上锁功能,可以采用继电器、场效应管等。
5. 电源供电模块:为整个电路提供稳定的电源,可以采用适配器、电池等。
下面将详细介绍每个模块的设计原理和具体实现方法:1. 数码键盘模块:常见的数码键盘有4x4或4x3结构,可以使用针对数码键盘的扫描编码技术,通过扫描按键状态来确定按键的值。
2. 输入密码存储模块:采用非易失性存储器,如EEPROM、FLASH等,可以在电源关闭后依然保存数据,这样可以避免用户密码丢失的情况。
第1页/共2页锲而不舍,金石可镂。
3. 控制逻辑模块:控制逻辑模块根据输入密码和已存储的密码进行比较,如果匹配则解锁,这里可以使用CMOS逻辑门电路实现比较功能,比如采用与门和非门组合。
4. 驱动模块:驱动模块用于控制电子锁的解锁和上锁功能,可以采用继电器、场效应管等。
当密码匹配正确时,驱动模块接通电子锁电路,实现解锁功能。
5. 电源供电模块:为整个电路提供稳定的电源,可以采用适配器、电池等,要保证电源电压稳定,并且能够支持电子锁的工作电压。
总结:电子密码锁电路的设计主要包括数码键盘模块、输入密码存储模块、控制逻辑模块、驱动模块和电源供电模块。
需要注意的是,电子密码锁电路的安全性非常重要,密码存储模块需要保护好,以防止密码泄露。
此外,为了增加密码的复杂度,可以加入密码长度和重试次数的限制等措施。
数字电路课程设计设计报告课题名称:密码锁设计成员1:设计成员2:设计成员3:密码锁一、目录1、设计项目综述 (2)2、设计方案及分析 (3)2.1设计方案 (3)2.2设计分析 (4)2.3方案优缺点 (4)3、电路原理分析 (5)3.1模块1:八进制优先编码器74ls148 (5)3.2模块2:4位双稳锁存器74LS75 (6)3.3模块3:4位数字比较器74LS85 (8)3.4模块4:可预置bcd计数器74LS160 (9)3.5 总图 (14)4、总结 (16)4.1设计中遇到的问题及解决方法 (17)4.2设计方案中需要改进的地方 (17)4.3这次设计中的收获和教训 (17)二、设计项目综述:1、可以预置1位十进制数密码,并保存密码。
2、开锁时,输入正确密码,按开锁键,锁打开。
3、当输入密码时,数码管显示相应的输入数字。
密码输入错误时计数一次,当输入错误密码连续达到四次,拒绝再输入密码。
需用复位键将其还原才能再次输入。
4、输入密码时,数码管8显示密码的数值。
拒绝输入密码时,只显示0。
按开锁键时,数码管5显示密码输入错误的次数;当错误次数连续少于4次以下时,则当输入密码正确时数码管5清“0”。
5、开锁指示灯亮表示锁已经打开。
三、设计方案及分析1、设计方案根据以上密码锁的设计任务,我们拟定的方案可以简略的如以下框图所示:2、方案分析(1)密码输入:由于要求通过每按一个输入键时直接显示为对应的十进制数密码,所以需要将二进制数转换为对应的十进制数。
根据前面这个要求,我们有两个选择74ls147和74ls148。
74ls147与74ls148比较,74ls148比74ls147多一个功能端。
使用74ls148可以实现输入四次错误自动锁定。
虽74ls148总的输入键只有8个,使用两块74ls148,并他们通过级联可以解决0~9输入。
当多过输入端同时出现时,只对其中优先权最高的一个进行编码,这个编码就是我们要的对应的十进制数。
“数字电子技术”课程设计实验报告姓名:指导老师:班级:13电子卓越班 学号:2013*********时间:2014·12·05东莞理工学院电子工程学院密码锁目录一、选题意义 (3)二、方案论证选择 (4)2.1 设计要求 (4)2.2 拓展要求 (4)2.3 系统框图 (4)2.4 设计过程 (5)三、电路设计 (5)3.1 所需芯片及芯片管脚图 (5)3.2 CD4017构成的主题电路 (6)3.2确认键的电路设计 (6)3.3输入密码三次锁死系统原理分 (7)3.4用led显示当前输入密码个数 (8)3.5 综合电路 (8)四、电路调试及实物照片 (9)五、心得体会 (13)一.选题意义1概述电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
2性能特点其性能和安全性已大大超过了机械锁,特点如下:1.保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
2.密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
3.误码输入保护。
当输入密码多次错误时,报警系统自动启动。
4. 电子密码锁操作简单易行,一学即会。
5.干扰码功能在输入正确密码前可输入任意码。
6.安保功能如果连续输错4次密码将会自动断电3分钟。
7.紧急开启功能(Panic Open)出门时无需其他操作,只需一次的把手动作,可机械的开启门,所以遇到火灾等应急状况下也迅速,安全的开启门。
8.入侵感应功能在门上锁的状态下,有人破锁而入时,会发出强力的报警音。
9.火灾报警功能在室内如果温度达到75°左右,将会发出强力的报警音,同时锁会自动开启。
10.双重锁定功能外部强制锁定:在内部不能开启,适用于外出时,防止有人入侵。
四位密码锁电路课程设计报告一、设计要求设计一种四位密码锁电路,需要具备以下功能:1. 开关控制:设有一个开关,可以开启或关闭密码锁电路。
2. 设置密码:密码为四位数字,可以自由设置。
3. 输入密码:密码通过数码管实时显示,可以输入四位数字的密码。
4. 锁定/解锁:输入正确的密码后,可以解锁,否则锁定密码锁。
5. 报警提示:在输入错误密码超过三次的情况下,会有报警提示。
二、电路设计1. 功能分析要实现以上要求的四位密码锁设计,可以将电路分为以下部分:1.1 时钟信号控制器:使用定时器生成一个,50ms的定时器中断来产生时钟信号,控制键盘扫描和密码输送。
1.2 数码管驱动:使用74LS47电路进行数码管动态扫描驱动。
同时,用4094低频同步移位寄存器输出数码管所显示的数字。
1.3 锁控制电路:使用继电器电路来实现锁的控制。
1.4 按键输入电路:使用74LS74 D触发器和IP3386A电位器来实现按键的输入。
1.5 密码比较电路:使用四路与非门来进行密码的比较操作。
1.6 报警提示:使用蜂鸣器进行声音提示。
2. 详细设计2.1 时钟信号控制器时钟信号控制器由XTAL时钟电路、定时器电路和键盘扫描电路组成。
2.1.1XTAL时钟电路XTAL时钟电路的工作原理是在石英晶体的两端加了一对金属片,当晶体被振动时,金属片之间产生的压电效应会生成一个稳定的频率和幅度的交变电压信号,这个信号的频率稳定高,精度高。
因此本电路选用4MHZ的外接石英晶体。
2.1.2 定时器电路定时器电路主要由1个555定时器芯片构成。
555定时器芯片是一种多功能集成电路,主要有两种工作方式:单稳态和多稳态。
本电路采用555定时器来实现一个50ms定时器。
2.1.3 键盘扫描电路键盘采用4×3的矩阵键盘,采用行列扫描方式进行扫描。
用74LS74 D触发器将键盘的行信号和处理器的时钟信号连接,通过对D触发器读写的方式来实现行信号的输入和输出。
1 设计任务描述1.1设计题目:数字密码锁1.2 设计要求1.2.1 设计目的(1)掌握数字密码锁的构成、原理与设计方法;(2)熟悉集成电路的使用方法。
1.2.2 基本要求(1)设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4位,用数据开关K0~K9分别代表数字0、1、2、3、4、5、6、7、8、9。
(2)用一位输出电平的状态代表锁的开闭状态(用灯光显示或报警表示)。
1.2.3 发挥部分(1)可删除输入的数字;(2)三次错误输入锁定键盘,并发出提示或报警;其它。
2 设计思路用密码去控制各个D触发器的翻转,达到密码开锁的目的,用按钮开关去控制电子门铃的触发信号,达到按响门铃的目的。
四个D触发器N1-N4构成四位密码电路,可手动开关与D触发器的连接来设置密码。
平时四个D触发器的CP端处于悬空状态,触发器保持原状态不变。
当与四个D触发器连接的开关闭合时,四个D触发器都的CP端都获得了下降沿,于是Q1=Q2=Q3=Q4=1,用此Q4=1去控制开锁,用二极管发光来显示开锁成功。
因电容C2电压不能突变,在接通电源瞬间C2的电压为零,使得N1-N4各位皆为零。
输入三次错误密码时,会由计数器74193来检测,并发出报警信号和锁定键盘的信号。
3 设计方框图数字密码锁设计方框如图3.1所示。
图3.1设计方框图4各部分电路设计及参数计算4.1密码的设置电路设计密码设置和输入密码的电路如图4.1所示。
图4.1密码设置图中默认的密码为0953,用户可以自行设置密码。
共有10个开关可设置0-9个数字的密码,第11个开关为复位开关,当输入错误时可以选择复位,重新输入。
其他的开关为干扰密码。
4.2判断密码是否正确的电路的设计判断密码正误的电路图如图4.2所示。
图4.2判断密码正误四个D触发器N1-N4构成四位密码电路,可手动开关与D触发器的连接来设置密码。
平时四个D触发器的CP端处于悬空状态,触发器保持原状态不变。
当与四个D触发器连接的开关闭合时,四个D触发器都的CP端都获得了下降沿,于是Q1=Q2=Q3=Q4=1,用此Q4=1去控制开锁。
单片机密码锁设计(汇编语言-)带原理图电路图-2016(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。
本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。
设计的电路框如图1。
电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。
在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。
当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。
P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。
P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。
P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。
P3:P3口除了一般的准双向通用I/O口外,还有第二功能。
VCC:+5V电源VSS:接地 ALE:地址锁存器控制信号。
在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
/PSEN:外部程序存储器读选通信号。
在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。
/EA:访问程序存储控制信号。
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
物理与电子信息学院数字电路课程设计报告书姓名:班级:学号时间:论文题目电子密码锁的设计课程论文要求设计一个电子密码锁,要求如下:1、有10个数字号码0,1,2,········9,设定密码号为3,5,6,7,按从高位到低位顺序开锁。
2、只有输入正确的密码时,锁才能打开,且经历一段时间后电路自动返回原始状态,以指示灯的状态来表示锁的关闭和打开。
3、当按下任意一个非密码号时,锁不打开,指示灯不亮。
设计过程(包括:设计方案、电路分析、仿真结果、软硬件结合测试步骤和结果、设计收获和体会)设计方案与论证:电子锁的种类比较多,电路的结构形式也有多种,有触摸开关编码,也有光电编码,既可以用分立元件(晶体管、晶闸管)组成,也可以用集成电路组成,甚至可以用带有处理系统的微处理器(单片机)做。
方案一〈采用数字电路〉1、原理方框图图(1-1)其原理框图如上图所示,整个电子密码锁由三部分组成:编码电路、主体编码驱动锁数码开关指示灯数码开关寄存器电路、复位电路。
其中十个按键开关与电源组成编码电路,并提前设置好密码。
主体电路由四个D 触发器组成的移位寄存器和四个密码按键相连,以驱动继电器开锁和指示灯亮。
复位电路有两部分,一部分是由剩下的非密码按键进行复位功能,另一部分是由高电平信号经过门电路进行复位。
方案二〈采用单片机〉2、原理方框图图(1-2)使用单片机的原理框图如上所示,依据其画出其单片机的程序流程图并借此进行程序的设计分析:分配好所需的存储单元和其他相关内容,然后再进行整体的程序设计。
在程序仿真没有问题后,对单片机烧录程序后,然后进行电路的硬件电路设计。
设计论证初始化设置密码按键指令输入译码驱动锁指示灯锁存控制寄存器本设计所构想的两个方案中,方案二采用了单片机的硬件和软件相结合的方法,利用了汇编语言的强大功能,通过编写一个合适的正确的汇编程序,依靠所接的按键开关输入相应的指令就可以进行一系列的程序操作,从而实现所需要的功能。
1技术指标用与非门设计一个4位或多位代码的数字锁,要求如下:A: 设计一个保险箱用的多位代码数字锁,比如4位代码ABCD四个输入端和一个开锁用的钥匙插孔输入端E,当开箱时(E=1),如果输入代码(例如ABCD=1010)与设定的代码相同,则保险箱被打开,即输出端Z=1,否则电路发出报警信号:B: 进行电路仿真,并说明其工作原理。
2方案比较方案一:由4个单刀双掷开关构成密码开关,用户可以通过控制开关来控制A、B、C、D3 Proteus软件介绍Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。
Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus为您建立了完备的电子设计开发环境!尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果;功能最强的Proteus专业版也非常便宜,人人用得起,对高校还有更多优惠。
Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。
此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。
Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。
用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE 仿真;ARES PCB设计。
模拟电子课程设计密码锁一、教学目标本节课的教学目标是让学生了解密码锁的原理和结构,掌握模拟电子技术在密码锁中的应用,培养学生动手能力和创新能力。
知识目标:使学生了解密码锁的工作原理,掌握基本的模拟电子电路设计方法。
技能目标:培养学生运用模拟电子技术进行密码锁设计的能力,提高学生的实际操作技能。
情感态度价值观目标:激发学生对模拟电子技术的兴趣,培养学生的创新意识和团队协作精神。
二、教学内容本节课的教学内容主要包括密码锁的原理、结构及其模拟电子电路设计。
1.密码锁的原理和结构:介绍密码锁的工作原理,讲解不同类型的密码锁及其结构特点。
2.模拟电子电路设计:讲解模拟电子技术在密码锁中的应用,引导学生掌握基本电路设计方法。
3.实践操作:安排学生进行密码锁的模拟电子电路设计实验,培养学生的动手能力。
三、教学方法本节课采用讲授法、讨论法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:讲解密码锁的原理、结构和模拟电子电路设计方法。
2.讨论法:学生就密码锁的设计展开讨论,促进学生思考和交流。
3.实验法:安排学生进行密码锁的模拟电子电路设计实验,提高学生的实际操作能力。
四、教学资源本节课的教学资源包括教材、实验设备、多媒体资料等。
1.教材:为学生提供系统、科学的学习材料,帮助学生掌握密码锁的相关知识。
2.实验设备:为学生提供实验所需的仪器和设备,确保实验教学的顺利进行。
3.多媒体资料:运用多媒体技术辅助教学,提高学生的学习兴趣和效果。
五、教学评估本节课的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。
1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和实际操作能力。
2.作业:布置与课程内容相关的作业,检查学生对知识的掌握程度和应用能力。
3.考试:安排一次课程结束考试,全面测试学生对本节课知识的掌握情况。
六、教学安排本节课的教学安排如下:1.进度:按照教材的章节顺序,合理安排每个章节的教学内容。
题目基于单片机的电子密码锁设计一、设计的目的1.了解单片机开发系统的组成及结构;2.掌握I/O口的操作方法;3.能够熟练使用protues和keil软件进行连线和编程,并熟练掌握仿真方法;4.掌握数码管的显示原理;5.掌握C语言编程方法;6.培养查找错误和改正错误的能力。
二、设计的内容及要求本设计采用单片机为主控芯片,结合外围电路组成电子密码控制系统。
设计主要功能有:1.设置6位密码,密码通过键盘输入,若密码正确,则锁打开,代表锁的二极管亮。
2.初始密码由单片机内部决定,在开锁后20S内用户可对密码进行修改。
3.重设密码时显示数字。
4.密码只能输入6位数字,超过6位的输入无效。
5.具有自动报警功能:当密码输入错误三次,报警,蜂鸣器响10S。
6.LED数码管显示输入密码,为确保安全性所有密码均用“—”表示。
基于单片机的电子密码锁设计摘要电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。
大大提高了主人物资的安全性,安全可以代替老式机械锁。
目前使用的密码锁种类繁多,各具特色。
本文从经济实用的角度出发,采用AT89C2051单机,研制了一款具有防盗自动报警功能的电子密码锁。
结合外围的矩阵键盘输入、数码管显示、开锁、报警等,用C语言编写程序,并用keil软件进行编译设计了一款可以更改密码,具有报警功能的电子密码控制系统。
本设计采用矩阵键盘对密码进行输入,具有较高的优势,减少了I/O口的占用数目。
密码的显示采用6位数码管实现,为确保安全性统一使用“—”显示密码。
当重新设置密码时数码管显示数字。
采用采用蜂鸣器模拟报警系统,增加了密码锁的安全能力。
软件使用C语言编程,运用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,设计达到电子密码锁的功能。
关键字:密码锁、AT89C51、矩阵键盘、报警一背景随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。
(如指纹、眼底视网膜等)来控制锁的开启。
从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。
当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
二设计目的了解单片机开发系统的组成及结构;掌握I/O口的操作方法;能够熟练使用protues和keil软件进行连线和编程,并熟练掌握仿真方法;掌握数码管的显示原理;掌握C语言编程方法;培养查找错误和改正错误的能力。
三本设计所要实现的目标本次设计使用ATMEL公司的AT89S51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)密码通过键盘输入,若密码正确,LED灯亮,则将密码锁打开。
(2)报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3 次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED 提示灯,报警蜂鸣器等。
四设计原理和硬件仿真方案4.1矩阵键盘密码的输入用矩阵键盘实现,包括数字键和功能键。
具体功能设计如表一:相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M 条列线即可组成有MN 个按键的键盘。
图一矩阵键盘本次设计需要0~9十个数字按键、一个清零键、一个确认键和一个重置密码键共13个按键,所以选用4X4的矩阵按键。
在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段,还要对按键进行消抖处理。
当确认有按键按下后,就要识别是哪一个按键被按下。
本次设计使用的是线反转法。
给行线置为0x0f,给列线置为0xf0,再将行列进行逻辑或结果为0xff,当有按键按下时相应的按键位行列均为0,行列逻辑或不为0xff,由此可利用行列逻辑或后的值是否为0xff来判断是否有按键按下。
再根据扫描结果判断按下键的位置。
给相应的按键赋值即可实现数字键和功能键。
对功能键进行相应的软件编程即可实现按键功能。
使用矩阵键盘能减少键盘和单片机接口所占用的I/O线数目,当按键较多的时候通常采用这种方法。
4.2开锁电路在本次设计中用发光二极管代替电磁锁,二极管亮表示锁开,二极管灭表示没有开锁。
如图二所示,当输入密码与内置密码相配合时将P3.0置0,二极管亮。
否则LED灯不亮。
图二发光二极管电路4.3报警电路报警电路由单片机和蜂鸣器组成,如图三所示,当P3.1为高电平时蜂鸣器发出声音报警。
每次输入的密码与正确密码进行比较,如果相同,锁开灯亮。
如果输入错误则用一个变量来记录输入错误的次数,当输入密码错误达到三次时,蜂鸣器工作发出报警声音,本次设计使用的是声音间断蜂鸣器声音报警来报警,即声音持续时间20ms后又将P3.1置0时间为20ms,如此循环,即可听到“嘟嘟嘟”的间断响声。
设置报警总时间为10S。
图三4.4数码管显示电路密码显示电路由单片机、电阻排和6位数码管组成。
显示电路如图四所示。
P0口控制段选,P2口控制位选。
为保证密码的保密性,本设计采用“—”显示所有输入密码,如图四所示。
当重设密码时,为了防止手动错误,数码管显示数字,如图五所示。
本设计只允许输入数字密码6位,超过6位以后的数字无效,在C语言程序中以一个while 循环实现。
数码管显示原理:(1)“—”显示原理:在选择位选的情况下,段选仅点亮“g”管即可显示当位为“—”;(2)实现右移逐渐点亮原理:当输入一个数字时,第五位(从左往右数)赋值给第六位,第四位的值赋给第五位,第三位的值赋给第四位,第二位的值赋给第三位,第一位的值赋给第二位,输入的值赋给第一位,同时点亮第一位数码管。
当输入第二个数字时,每一位与输入第一位时相同均向左移一位,将输入的值赋给第一位,同时点亮第一位和第二位数码管。
如此每输入一个数字数码管就向右移动了一位,输入的数字赋值给第一位数码管,并相应点亮左边的数码管。
(3)当按下功能键时,相应的功能键实现相应的功能,而数码管全部回零熄灭。
直到再一次输入数字。
图四数码管显示电路图五重设密码数码管显示数字图六密码正确显示黄灯五软件程序设计本系统软件设计由主程序、初始化程序、键盘扫描程序、密码输入程序、功能键定义程序、重置密码程序、数码管显示程序、中断延时程序、报警程序、延时程序组成。
5.1主程序流程图如图六所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,判断密码是否正确,密码正确开锁,密码不正确统计错误密码次数加1。
在开锁情况下进行修改密码,点击确认密码修改成功,否则结束返回。
若密码修改成功则再执行之前的操作。
图六主程序流程图5.2键盘扫描程序键盘扫描主要就是对按键进行扫描、消抖并被定位。
键盘扫描流程图如图七所示。
图七键盘扫描流程图键盘扫描C语言程序为:void get_key(){ P1=0xf0;lie=P1;P1=0x0f;hang=P1;addres=hang|lie; // 行列寄存器中的值相或得到按键值while(addres!=0xff)//判断是否有键按下,若adres的值不为0xff则有键按下 { delay(5); // 延时消抖P1=0xf0;lie=P1;P1=0x0f;hang=P1;addres=hang|lie;if(addres!=0xff){ flag++;switch(addres) // 读取键值{case 0xee:num=1;break; //按键1动作,设num=1case 0xde:num=2;break; //按键2动作,设num=2case 0xbe:num=3;break; //按键3动作,设num=3case 0x7e:num='A';break; //按键A动作,设num=Acase 0xed:num=4;break;// 按键4动作,设num=4case 0xdd:num=5;break;// 按键5动作,设num=5case 0xbd:num=6;break; //按键6动作,设num=6case 0x7d:num='B';break; //按键B动作,设num=Bcase 0xeb:num=7;break; //按键7动作,设num=7case 0xdb:num=8;break; //按键8动作,设num=8case 0xbb:num=9;break; //按键9动作,设num=9case 0x7b:num='C';break; //按键C动作,设num=Ccase 0xd7:num=0;break; //按键0动作,设num=0case 0x77:num='D';break; //按键D动作,设num=D}}}}5.3数码管显示子程序数码管显示流程图如图八所示:数码管显示程序为:void display(uchar N)//显示{ if(N==1) //判断输入密码个数是否为1 { temp=0xfe;P0=0x40; //点亮g段使显示为“—”P2=temp;delay(1); //延时使左边第一位不停闪烁P2=0xff; //点亮数码管右边N位}if(N==2) //判断输入密码个数是否为2{ temp=0xfe;P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1); //带循环,使其挨个点亮P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);}if(N==3) //判断输入密码个数是否为3{ temp=0xfe;P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);}if(N==4) // 判断输入密码个数是否为4{ temp=0xfe;P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);}if(N==5) //判断输入密码个数是否为5 { temp=0xfe;P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);}if(N==6) //判断输入密码个数是否为6{ temp=0xfe;P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);}}5.4报警电路报警电路流程图如图九所示:图九报警电路流程图报警电路C语言程序:void alarm(){ if(km==3) 判断输入错误密码的次数{ uchar n,m;km=0;for(m=50;m>0;m--){ for(n=200;n>0;n--){ K=~K; p3.1口取反delay_us(1000); 调用延时函数}K=0; p3.1口置零delay(100); 调用延时函数} }}5.6密码重置子程序密码重置的条件是在锁开,即灯亮的情况下进行的,所以调用密码子程序开始必须对显示器进行清零并熄灭,关闭发光二极管。