数字逻辑大作业—电子密码锁

合集下载

数字逻辑电路课设电子密码锁电路完整版

数字逻辑电路课设电子密码锁电路完整版

数字逻辑电路课设电子密码锁电路HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】目录1 课题背景目的意义随着电子工业的发展,数字电子技术已经深入到了人们生活的各个层面,而且各种各样的电子产品也正在日新月异地向着高精尖技术发展。

由于电子产品的功能不断增加,使用也越来越方便,有些产品已经成为了人们日常生活中不可缺少的必备物品。

发展历史悠久的机械式门锁,因其功能单一,安全性能较差等缺点,必将被新一代的电子门锁所代替。

新颖的多功能电子门锁,集电子门锁、防盗报警器,门铃等功能于一身,而且还具有定时器呼唤,断电自动报知,显示屋内有无人和自动留言等诸多附加功能。

在未来的生活中,数字密码锁必将在学领域再创新的成绩,将给我们的生活带来更大的便利,前景不可估量。

基本理论基础TTL门电路基础芯片为基本,通过芯片间功能的组合,可实现各种实用的功能。

本实验主要用与非门电路元件芯片实现试验目的。

并自拟以下两种方案。

2 方案比较与选择方案一方案一如图所示。

图方案一由4个单刀双掷开关构成密码开关,用户可以通过控制开关来控制A、B、C、D四个输入端的电平的高低,进而控制输出电平的高低以及报警信号的工作。

当输入端与设置的密码相符时,则输出为高电平,二极管亮,否则输出为低电平,并且发出报警,即蜂鸣器发出响声,至此完成电路的设计。

方案二方案二如图所示。

图方案二用4个异或门连接输入端,并分别于反相器连接,再相与。

当输入密码与设置密码相同时,电路输出为高电平,发光二极管不亮,当输入密码与设置密码不相同时,电路输出为低电平,发出报警,发光二极管亮。

至此完成电路的设计。

方案选择两种方案都充分用到了门电路及数字电子技术课程上所学的知识。

两种方案都需要74LS00、74LS04、74LS20三种门电路芯片,可有实验室供应设备。

另外也同时具备LED及扬声器报警之类的报警电路。

但由于方案二中需要的异或门连接输入端与XCR_2反相器较一相比过于复杂而又难以搜集元件。

数字逻辑电路课程设计-电子密码锁

数字逻辑电路课程设计-电子密码锁

数字逻辑电路课程计课题:电子密码锁姓名:班级:学号:成绩:指导教师:开课时间:2014-2015学年第2学期2007年 6 月 20日电子密码锁摘要:采用逻辑门电路设计电子密码锁,阐述了其工作原理,给出了具体的电路原理图。

该密码锁具有密码预置功能,保密性强,误码报警,并且报警时间可以设定,同时用数码管显示出报警时间。

密码正确时驱动继电器控制开锁指示灯,误码时报警信号由蜂鸣器发出,声音为间歇式鸣笛。

采用自行设计的5V稳压电源供电,具有耗电省等特点。

当密码正确时密码锁可以被打开,绿色二极管亮代表密码正确,锁可以打开。

密码不正确时,红色二极管被点亮,同时蜂鸣器鸣笛5秒,数码管显示5秒计时;计时结束时,20秒计时开始。

关键词:电子密码锁;数字电路;预置密码;误码报警Using logic gate design of electronic combination lock, this paper expounds its working principle, gives the specific circuit principle diagram of the combination lock with password preset function, strong confidentiality, error alarm, and alarm time can be set, at the same time using digital tube display the alarm time. Password correctly drive relay control lamp, when the error alarm signal by a buzzer, voice for intermittent ing self-designed 5 v regulated power supply, has the characteristics of power saving electricity. When the correct password combination lock can be opened, the green led light on behalf of the correct password, the lock can be opened. Password is not correct, the red leds lit up, at the same time a buzzer honking 5 seconds, the digital tube display 5 seconds time, at the end of the timing, 20 seconds timer starts.Keywords: electronic password ,combination lock,digital circuit preset ,Error alarm目录1、设计背景 (4)2、设计方案 (5)2.1原理框图 (5)2.2总体思想 (5)3、方案实施 (7)3.1.1密码输入 (7)3.1.2密码存储 (8)3.1.3比较电路 (8)3.1.4 5秒计时器 (9)3.1.5 20秒计时器 (10)3.2电路仿真 (11)4、结果与结论 (12)5、收获与致谢 (14)6、参考文献 (15)1、设计背景1.1背景及其发展前景随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。

数电设计密码锁

数电设计密码锁

B大连理工大学本科实验报告题目:电子锁课程名称:数字电路课程设计学院系:电子信息与电气工程学部专业:电气工程及自动化班级:学生姓名:学号:完成日期:成绩:2010 年12 月08 日题目:电子锁1 设计要求在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

基于EDA技术设计的电子密码锁。

以其价格便宜、使用方便、安全性高、成本低、功耗低、易操作等优点,受到了人们的普遍关注。

而以可编程逻辑器件(FPGA)为设计载体,以硬件描述语言(VHDL)为主要表达方式,以QuartusⅡ6开发软件等为设计工具设计的电子密码锁,由于其能够实现密码输入、密码校验、密码设置和更改等功能,因此,能够满足社会对安全防盗的需求。

本设计的各个模块由相应的VHDL程序具体实现,并在QuartusⅡ6环境下进行了整体电路的模拟仿真,最终实现“密码锁控制器设计”的要求。

数字密码锁实现:1、不需要带钥匙,只要记住开锁密码即可开锁的功能。

2、在输入密码正确后,还可以修改密码。

3、在输入密码的过程中,不显示密码,只显示无规律的提示某位密码是否输入完毕,防止了密码的泄漏,大大加强了密码锁的保密性。

2 设计分析及系统方案设计密码锁控制器是硬件与软件的结合。

根据设计要求,决定以FPGA芯片和VHDL语言设计此电子密码锁。

用一片FPGA芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。

这种设计不仅简化了系统结构,降低了成本,更提高了系统的可靠性和保密性。

另外,采用可编程逻辑器件开发的数字系统,方便地升级和改进。

本演示系统实现了:1、输入密码正确后,正确小灯(green)亮,错误小灯(red)不亮;2、当输入密码正确后,可修改密码,可使用want开关正确进行密码修改功能,而后密码被重新设定为新的密码,当密码输入错误的时候并不可以修改密码,此时即使按下want键也不好用;3、输入错误密码,正确小灯(green)不亮,错误小灯(red)亮;4、按下reset后,密码归为初始密码。

电子密码锁数字逻辑课设综述

电子密码锁数字逻辑课设综述

一、概述本次课程设计主要设计一个在生活中运用广泛的数字电子密码锁。

通过对课程的设计掌握电子系统的一般设计方法,掌握模拟IC器件的应用,培养综合应用所学知识来指导实践的能力,为接下来电子信息学习培养兴趣。

本系统的设计思路为将整个系统分为密码输入,密码设置,密码比较,控制结果四个部分。

主要的设计要求有:(1)有预先设定好的密码,该密码可以修改。

(2) 输入密码按确定键后,若密码正确则锁打开(此设计用发光二极管S 表示锁,锁打开就是点亮发光二极管S);若密码不正确则电路发出报警信号(用放光二级管J,报警就是点亮放光二级管J)。

任意输入密码而不按确定键的话电路不会有反应。

(3)任意输入密码而不按确定键的话电路不会有反应。

(4)打开的持续时间为10秒,警报持续时间也为10秒,即按下确定键到松开后10秒,按住确定键不放的话一直打开或者报警。

本设计报告主要由原理图的设计,分解单元的设计,连接与调试和Multisim 图的正确设置和接线组成。

本系统已经可以粗略模拟在生活中已经广泛运用的数字密码锁的大概功能,例如ATM机,数字防盗门,数字密码锁都能通过本设计实现,所以本课设具有极强的实际意义。

二、方法设计1.数字电子密码锁原理框图图 1原理框图本次设计采用图1所示的程序框图的设计思路,利用74LS138形成三输入八输出的密码输入,同时由555定时器构成单稳态触发器产生触发信号触发开锁或者报警,个设计方案不但便于制作,电路的价格比较低廉,采取的电路结构也简单易读,而且可移植性高,能够适用于多种设备及系统,便于投入实际生产。

密码验证模块计时模块开锁信号报警信号密码输入确定输入逻辑组合模块修改密码锁住输入三、电路设计3.1 本次电路设计主要包含用了密码输入的74LS138 3线-8线译码器,用去验证密码的D 触发器,和用于10秒计时的555单稳态计时器,还有一些逻辑关系来调节发光二极管。

3.2 密码输入及验证电路此模块主要是用输入键盘和74LS138实现,输入键盘为六个逻辑开关;74LS138为3线-8线译码器,它的真值表如表1表 1 74LS138真值表输入输出G1~G2A+~G2B C B A Y0 Y1Y2Y3Y4Y5Y6Y71 0 0 0 0 0 1 1 1 1 1 1 11 0 0 0 1 1 0 1 1 1 1 1 11 0 0 1 0 1 1 0 1 1 1 1 11 0 0 1 1 1 1 1 0 1 1 1 11 0 1 0 0 1 1 1 1 0 1 1 11 0 1 0 1 1 1 1 1 1 0 1 11 0 1 1 0 1 1 1 1 1 1 0 11 0 1 1 1 1 1 1 1 1 1 1 0由表1 可知每个输出端为0时都有唯一的输入码,所以可以把G1 ~G2A ~G2B C B A作为密码输入端,与输入键盘相连,共有26=64种输入情况。

数电综合设计 电子密码锁的设计

数电综合设计 电子密码锁的设计

昆明理工大学数字电路与系统课程设计报告题目:电子密码锁的设计学院:理学院专业班级:姓名:学号:指导教师:完成时间:201 年5月26日目录目录 (1)1、前言 (2)2.总体方案设计 (2)2.1 设计目的 (2)2.2 技术指标 (2)2.3 方案框图 (2)3. 单元模块设计 (3)3.1.1 密码设置模块设计 (3)3.1.2 矩阵键盘模块设计 (4)3.1.3密码输入锁存模块 (5)3.1.4密码比较模块 (6)3.1.5定时报警模块(该模块还有一些问题,有待改进) (7)3.1.6开锁模块 (8)3.2电路元件选择和参数计算 (8)3.3.1 555定时器介绍 (9)3.3.2 74HC161器件介绍 (10)3.3.3移位寄存器74HC194介绍 (10)3.4各单元模块的联接 (11)4 仿真电路总图 (11)4.1密码设置模块的仿真调试 (12)4.2密码输入锁存模块的仿真调试 (12)4.3密码比较模块调试 (13)5、总结和体会 (2)6、参考文献 (2)1.前言社会发展,人们生活水平提高,传统的机械锁由于其构造的简单,被撬的事件时常发生,电子密码锁由于其保密性高,使用灵活性好,并且可以减少人们日常忘带钥匙的所带来的麻烦,因此受到了广大用户的喜爱。

电子密码锁,主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。

作为密码锁的输入部分,本设计采用通用数字机械键盘。

密码锁输入电路:包括时序产生电路、键盘译码电路等电路。

密码锁控制包括密码核对(数值比较,解锁电路(开/关门锁电路)等几个小的功能电路。

七段数码管显示电路将待显示数据的BCD 码转换成数码器的七段显示驱动编码。

以此为基础设计电子密码锁。

2.总体方案设计2.1 设计目的基于数字逻辑课程的学习,初步掌握了简单组合电路和时序电路的设计与功能,通过这次大作业,主要培养理论知识结合实践的综合性能力,进一步理解基本逻辑门,触发器,计数器,寄存器,等的功能特性和实际作用,在已知芯片功能的基础上,通过课外知识的拓展,对所学知识有更深刻和全面的认识。

数电实验报告电子密码锁设计

数电实验报告电子密码锁设计

数电实验报告电子密码锁设计
实验报告
实验十四电子密码锁设计与实现
3.4.1 实验目的与设计要求
目的:(1)学习4位数值比较器CC14585和74LS85的功能。

(2)掌握电子密码锁的工作原理及综合实验技能。

要求:(1)电路可以由主持人预置16种不同的开锁密码,并能够更换。

(2)当输入和预置开锁密码相同时,发出开锁信号(LED 显示)。

(3)如果连续三次输入错误密码即产生报警信号。

报警信号用声光报警电路指示(蜂鸣器等)。

(4)具备能够取消报警状态的功能。

3.4.2 实验仪器与器件
直流稳压电源一台;数字实验箱一个;计算机一台。

74LS75锁存器、74LS00、74LS10、74LS20、4位数值比较器CC14585或74LS85。

3.4.3 实验原理框图
设计思路:用74LS194四位寄存器作锁存电路,74LS75四位锁密




入锁存电路密码比较电路密码锁存装置计数器确认按钮
报警电路开锁电路确认按钮
密码输入
存器作密码锁存装置,4位数值比较器4585作密码比较电路,74LS160作计数器。

当连续三次输入错误密码即产生报警信号同时锁住,此时再输入正确密码不产生开锁信号。

仿真图如下:。

数电实验—密码锁报告

数电实验—密码锁报告

电子密码锁实验报告姜岳松一、实验目的1.了解电子密码锁的原理,学会用硬件描述语言来建立电子密码锁的模块。

2.利用该软件进行可编程逻辑器件设计,完成电子密码锁的逻辑仿真功能。

3.使用编译器将设计实现,下载到JDEE—10实验箱上进行调试和验证所设计的电子密码锁的功能。

二、实验器材1.Pentium—Ⅲ计算机一台;2.JDEE—10实验箱一只;三、实验要求设计一个电子密码锁,实现以下的功能:用8个拨码开关分别代表预设的密码和输入待验证的密码。

一个微动开关做为触发判断。

判断结果通过点阵和蜂鸣器表示。

正确的话,所有点阵的绿色灯点亮,同时蜂鸣发出“di”声。

否则,点阵显示红色,同时蜂鸣“do”音。

四、实验方案及设计过程1.第一部是实验电子密码锁的基本功能,该程序的主体是一个密码判断程序:首先是将输入的预设的密码和待验证密码用数组储存起来进行比较,比较结果通过IF语句,相同则触动绿色点阵和蜂鸣器的一个频率,不同则触动红色点阵和蜂鸣器的另一个频率2.开始丰富附肢程序:两种不同的响声需要两个计数器来产生不同的频率;要有一个上升沿保证颜色显示程序和密码判断程序以一个高频率运行,需要一个计数器;一个密码验证开关,由微动开关实现,在密码验证开关触动后能够保持一个高电位,这样则需要一个由D触发器构成的锁存器来锁定高电平。

3.点阵的显示:点阵的显示控制,由于显示OK的原代码之前已经练习过,然后设计好NO的字符,可以直接完成拓展之一。

此部分不需要详述。

五、拓展功能设计拓展主要是为了实现八位密码,这样所有的拨码开关都要用上,所以还需要两个微动开关来确定密码设定和输入。

同时,微动开关启动后,能够将拨码开关的密码储存到数组A[7..0]和B[7..0]中,待判断开关启动后调用,所以要用寄存器储存起来,所以声明一个串进串出的寄存器。

同时对主程序的判断器的输入变量进行修改。

六、顶层文件和源程序文本文件顶层文件文本:SUBDESIGN ECLOCK ( a[7..0],b[7..0]:input;key: input;freq1,freq2: input;red: output;green: output;spk: output;)begindefaultsred=gnd; green=gnd;spk=gnd;end defaults;if key thenif a[]==b[] then red=vcc;spk=freq1;else green=vcc;spk=freq2;end if;end if;end;点阵显示文本:subdesign leddiaplay( green,red: input;clk[2..0]: input;row[8..1],colred[16..1],colgreen[16..1]: output; )begindefaultscolred[]=h"ffff";colgreen[]=h"ffff";end defaults;if green thentableclk[2..0]=>row[8..1],colgreen[16..1];H"0" =>H"1", H"DBC3"; %1101 1011 1100 0011% H"1" =>H"2", H"EBDB";H"2" =>H"4", H"EBDB";H"3" =>H"8", H"F3DB";H"4" =>H"10", H"F3DB";H"5" =>H"20", H"EBDB";H"6" =>H"40", H"EBDB";H"7" =>H"80", H"DBC3";end table;end if;if red thentableclk[2..0]=>row[8..1],colred[16..1];h"0" =>h"1", h"C3DB";h"1" =>h"2", h"DBD3";h"2" =>h"4", h"DBD3";h"3" =>h"8", h"DBC3";h"4" =>h"10", h"DBCB";h"5" =>h"20", h"DBCB";h"6" =>h"40", h"DBCB";h"7" =>h"80", h"C3DB";end table;end if;end;寄存器文本:SUBDESIGN register(clk,load,d[7..0] :input;q[7..0] :OUTPUT;)VARIABLEff[7..0] :DFFE;BEGINff[].clk=clk;ff[].ena=load;ff[].d=d[];q[]=ff[].q;end;七、试验中遇到的问题1、设计八位密码的时候,需要将八位的密码输进判断器,起初采取的不是寄存器的手段,而是自己定义了一个使能开关,当微动开关高电平就允许密码通过使能开关到达a[7..0]或者b[7..0],但是实验发现这样密码并不能被储存起来,后来想明白应该是由于并没有变量储存的机制,所以要想将变量储存必须有寄存器才行,根据教材定义寄存器后,该问题得到解决。

数字逻辑电路实验--基于有限状态机的密码锁

数字逻辑电路实验--基于有限状态机的密码锁

数电实验三报告姓名:xxx班级:xxx 学号:xxxx实验:基于有限状态机的密码锁一、实验目的学习如何通过Verilog HDL 编程,利用Basys3板上的开关控制七段数码管实现四位密码锁。

二、实验要求使用有限状态机设计一个 4 位密码锁。

利用 Basys3 板上的滑动开关 sw[0]到sw[9]分别代表 0‐9 十个数字,依次输入 4 位不重复的密码。

如果密码输入顺序与设计设置的一致,则显示大写字母P,否则显示大写字母F。

注意,即使密码输入错误,也必须在输入完整的 4 位密码输入,才能显示大写字母 F。

三、实验设计及内容1.基础版实验代码module doorlock(input CLK,input clr,input [9:0] sw,output reg [10:0] display_out);reg[3:0] present_state,next_state;parameter S0=4'b0000,S1=4'b0001,S2=4'b0010,S3=4'b0011,S4=4'b0100,E1=4'b0101,E2=4'b0110,E3=4'b0111,E4=4'b1000;reg [29:0] count;reg [9:0] keys=0;always @(posedge CLK or posedge clr)beginif (clr) count<=0;else count<=count+1;endassign clk_3=count[24];// ~3Hzalways @(posedge clk_3 or posedge clr) // STATE TRANSITIONbeginif (keys!=sw) keys <= sw;if (clr) present_state <= S0;else present_state <= next_state;end// Demo for Finite State Machine// the correct password is 0->1->2->3 (Switch sw[0]->sw[1]->sw[2]->sw[3] in order. always @(*)begincase (present_state)S0: beginif (~|keys[9:0]) next_state <=S0; // no key pressedelse if (keys[2]) next_state <=S1; // first valid key pressedelse next_state <=E1; // first invalid key pressedendS1: beginif (~|keys[9:3]&&~|keys[1:0]) next_state <=S1; // no key pressedelse if (keys[1]) next_state <=S2;// second valid key pressedelse next_state <=E2;// second invalid key pressedendS2: beginif (~|keys[9:3]&&~|keys[0]) next_state <=S2; // no key pressedelse if (keys[7]) next_state <=S3; // third valid key pressedelse next_state <=E3;// third invalid key pressedendS3: beginif (~|keys[9:8]&&~|keys[6:3]&&~|keys[0]) next_state <=S3; // no key pressedelse if (keys[3]) next_state <=S4;// fourth vaild key pressedelse next_state <=E4;// fourth invalid key pressedendS4: beginif (~|keys[9:8]&&~|keys[6:4]&&~|keys[0]) next_state <=S4; // no keypressedelse next_state <=E1; // fifth key pressed, but ignored *** endE1:beginif (keys!=sw) next_state <=E2; // second invalid key pressedelse next_state <=E1; // no key pressedendE2:beginif (keys!=sw) next_state <=E3; // third invalid key pressedelse next_state <=E2; // no key pressedendE3:beginif (keys!=sw) next_state <=E4; // fourth invalid key pressedelse next_state <=E3; // no key pressedendE4: next_state <=E4; // the additional keys are ALL ignored ***default: next_state <=S0;endcaseendalways @(*) // indicate the number of inputs and display the tag begincase(present_state)S4: display_out<=11'b0111_0011000;// P in left-most segmentE4: display_out<=11'b1110_0111000;// F in right-most segmentS0: display_out<=11'b1001_0011100;// oo in the middle segmentsS1,E1: display_out<=11'b1001_0111111;// confirm first inputS2,E2: display_out<=11'b1001_0011111;// confirm second inputS3,E3: display_out<=11'b1001_0011110;// confirm third inputdefault:display_out<=11'b1111_1111111; // no displayendcaseendendmodule2.进阶版实验代码module doorlock2(input CLK,input clr,input [9:0] sw,output reg [10:0] display_out);reg[3:0] present_state,next_state;reg [19:0]count1=0;reg [2:0] sel=0;parameter S0= 4'b0000,S1=4'b0001,S2=4'b0010,S3=4'b0011,S4=4'b0100, S01=4'b1001,S02=4'b1010,S03=4'b1011,E1=4'b0101,E2=4'b0110,E3=4'b0111,E4=4'b1000;parameter T1MS=50000,T2MS=20000_0000;reg [29:0] count;reg [32:0] count2=0;reg [9:0] keys=0;reg flag;always @(posedge CLK or posedge clr)beginif (clr)begincount<=0;endelse count<=count+1;endwire clk_3;assign clk_3=count[24];// ~3Hzalways @(posedge clk_3 or posedge clr) // STATE TRANSITIONbeginif (keys!=sw) keys <= sw;if (clr) present_state <= S0;else present_state <= next_state;endalways@(posedge CLK or posedge clr)beginif(present_state == S4)beginif(count2<T2MS)begincount2<=count2+1;flag<=1'b0;endelsebeginflag<=1'b1;endendif(clr) count2<=0;end// Demo for Finite State Machine// the correct password is 0->1->2->3 (Switch sw[0]->sw[1]->sw[2]->sw[3] in order. always @(*)begincase (present_state)S0: beginif (~|keys[9:0]) next_state <=S0; // no key pressedelse if (keys[2]) next_state <=S1; // first valid key pressedelse next_state <=E1; // first invalid key pressedendS1: beginif (~|keys[9:3]&&~|keys[1:0]) next_state <=S1; // no key pressed//else if (!sw) next_state <=S01;// second valid key pressedelse if(keys[1]&&keys[2]) next_state<=S2;else next_state <=E2;// second invalid key pressedendS01:beginif(!sw) next_state<=S01;else if(sw[2]) next_state<=S2;else next_state<=E2;endS2: beginif (~|keys[9:3]&&~|keys[0]) next_state <=S2; // no key pressed//else if (!sw) next_state <=S02; // third valid key pressedelse if (keys[2]&&keys[1]&&keys[3]) next_state <=S3;else next_state<=E3;// third invalid key pressedendS02: beginif(!sw) next_state<=S02;else if(sw[1]) next_state<=S3;else next_state<=E3;endS3: beginif (keys[1]&&keys[2]&&keys[3]) next_state <=S3; // no key pressed else if (!sw[3]) next_state <=S03;// fourth vaild key pressedelse next_state <=E4;// fourth invalid key pressedendS03:beginif(~|keys[9:3]&&~|keys[0]) next_state<=S03;else if(keys[3]) next_state<=S4;else next_state<=E4;endS4: beginif (~|keys[9:4]&&~|keys[0]) next_state <=S4; // no key pressedelse next_state <=E1; // fifth key pressed, but ignored *** endE1:beginif (keys!=sw) next_state <=E2; // second invalid key pressedelse next_state <=E1; // no key pressedendE2:beginif (keys!=sw) next_state <=E3; // third invalid key pressedelse next_state <=E2; // no key pressedendE3:beginif (keys!=sw) next_state <=E4; // fourth invalid key pressedelse next_state <=E3; // no key pressedendE4: next_state <=E4; // the additional keys are ALL ignored ***default: next_state <=S0;endcaseendalways@(posedge CLK)begincount1<=count1+1;if(count1==T1MS)begincount1<=0;sel<=sel+1;if(sel==4)sel<=0;endendalways @(posedge CLK) // indicate the number of inputs and display the tagbegincase(present_state)S0: begincase(sel)0:display_out<=11'b0111_0101000;1:display_out<=11'b1011_0110000;2:display_out<=11'b1101_1000100;3:display_out<=11'b1110_0110110;default:display_out<=11'b1111_1111111;endcaseendS1: begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1110111;2:display_out<=11'b1101_1110111;3:display_out<=11'b1110_1110111;default:display_out<=11'b1111_1111111;endcaseend // confirm first inputS2: begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1001111;2:display_out<=11'b1101_1110111;3:display_out<=11'b1110_1110111;default:display_out<=11'b1111_1111111;endcaseend // confirm second inputS3: begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1001111;2:display_out<=11'b1101_0000110;3:display_out<=11'b1110_1110111;default:display_out<=11'b1111_1111111;endcaseend // confirm third inputS4: beginif(!flag)begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1001111;2:display_out<=11'b1101_0000110;3:display_out<=11'b1110_0000110;default:display_out<=11'b1111_1111111;endcaseendelse display_out<= 11'b0111_0011000 ;end // P in left-most segmentS01:begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1110111;2:display_out<=11'b1101_1110111;3:display_out<=11'b1110_1110111;default:display_out<=11'b1111_1111111;endcaseendS02:begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1001111;2:display_out<=11'b1101_1110111;3:display_out<=11'b1110_1110111; default:display_out<=11'b1111_1111111;endcaseendS03: begincase(sel)0:display_out<=11'b0111_0010010;1:display_out<=11'b1011_1001111;2:display_out<=11'b1101_0000110;3:display_out<=11'b1110_1110111;default:display_out<=11'b1111_1111111;endcaseendE1: display_out<=11'b0111_0111000;E2: display_out<=11'b1011_0111000;E3: display_out<=11'b1101_0111000;E4: display_out<=11'b1110_0111000;// F in right-most segment default:display_out<=11'b1111_1111111; // no displayendcaseendendmodule约束文件代码:## Clock signalset_property PACKAGE_PIN W5 [get_ports CLK]set_property IOSTANDARD LVCMOS33 [get_ports CLK]## Switchesset_property PACKAGE_PIN V17 [get_ports {sw[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]set_property PACKAGE_PIN V16 [get_ports {sw[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]set_property PACKAGE_PIN W16 [get_ports {sw[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]set_property PACKAGE_PIN W17 [get_ports {sw[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}]set_property PACKAGE_PIN W15 [get_ports {sw[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[4]}]set_property PACKAGE_PIN V15 [get_ports {sw[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[5]}]set_property PACKAGE_PIN W14 [get_ports {sw[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[6]}]set_property PACKAGE_PIN W13 [get_ports {sw[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[7]}]set_property PACKAGE_PIN V2 [get_ports {sw[8]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[8]}]set_property PACKAGE_PIN T3 [get_ports {sw[9]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw[9]}]## sw[15]set_property PACKAGE_PIN R2 [get_ports {clr}]set_property IOSTANDARD LVCMOS33 [get_ports {clr}]## 7-seg displayset_property PACKAGE_PIN W4 [get_ports {display_out[10]}]set_property PACKAGE_PIN V4 [get_ports {display_out[9]}]set_property PACKAGE_PIN U4 [get_ports {display_out[8]}]set_property PACKAGE_PIN U2 [get_ports {display_out[7]}]set_property PACKAGE_PIN W7 [get_ports {display_out[6]}]set_property PACKAGE_PIN W6 [get_ports {display_out[5]}]set_property PACKAGE_PIN U8 [get_ports {display_out[4]}]set_property PACKAGE_PIN V8 [get_ports {display_out[3]}]set_property PACKAGE_PIN U5 [get_ports {display_out[2]}]set_property PACKAGE_PIN V5 [get_ports {display_out[1]}]set_property PACKAGE_PIN U7 [get_ports {display_out[0]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[9]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[8]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[7]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[6]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[5]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[4]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[3]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[1]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[2]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[0]}]set_property IOSTANDARD LVCMOS33 [get_ports {display_out[10]}]四、实验结果1基础结果图2.进阶结果图进阶实验成品效果说明:进阶视频演示:正确示范:密码输入错误示范:五、实验总结1.通过本次实验了解了时钟信号的作用原理以及对时序电路的控制机理。

数字电子技术课程设计——电子密码锁.

数字电子技术课程设计——电子密码锁.

课程设计说明书课程名称:数字电子技术课程设计题目:电子密码锁学生姓名:专业:班级:学号:指导教师:日期:年月日电子密码锁一、设计任务与要求1.用电子器件设计制作一个密码锁,使之在输入正确的代码时开锁。

2.在锁的控制电路中设一个可以修改的4位代码,当输入的代码和控制电路的代码一致是锁打开。

3.用红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁4.如5s内未将锁打开,则电路自动复位进入自锁状态,并发报警信号。

二、方案设计与论证1、用按键输入四位十进制数字,输入密码要存储。

2、比较输入密码和原始密码。

当输入正确密码时,给出开锁信号,开锁信号用一个绿色指示灯表示,绿灯亮表示密码输入正确;如果输入密码不正确,用红灯表示。

3、锁的开关用红灯和绿灯表示,一次只能亮一盏。

红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁。

4、设置倒计时电路和自锁电路。

如果密码在5s内未能输入正确则发出报警声,并且自锁电路。

5、设置密码设置开关,开关闭合后,允许设置密码,设置好密码后,打开此开关。

6、需要在输入密码开始时识别输入,并由此触发计时电路。

方案一用74LS147译码器来把按键输入转化为二进制。

通过8片四位寄存器74LS194实现密码功能,其中四片用来存储预置密码,另四片则用来存储输入的密码。

当密码开始输入时开始计时,通过74LS192计数器实现计时功能;然后在密码输入期间,用74LS138数据选择器来选片存储。

数据选择器的输入端又一个两位的二进制的加法计数器来控制,当键盘有按键输入时计数器就加1,当一个按键按完后会轮到下一个芯片存储。

自锁功能利用74LS138来控制。

通过四片74LS85芯片判断原始密码和输入密码是否相同,接着用指示灯来表示密码的输入正确与否,如果密码没有输入正确的话,则红灯亮,否则则绿灯亮。

若是没在规定时间输入正确密码,则会发出警报信号(蜂鸣器响)。

方案二也用74LS147译码器来把按键输入转化为二进制。

通过8片四位寄存器74LS175实现密码的存储问题。

数电课程设计-电子密码锁

数电课程设计-电子密码锁

数电课程设计-电子密码锁电子密码锁设计任务及要求:使用电子器件设计制作一个密码锁,只有输入正确的代码时才能开锁。

在锁的控制电路中设一个可以修改的4位代码,当输入的代码和控制电路的代码一致时,锁打开。

用红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁。

如果30秒内未将锁打开,则电路自动复位进入自锁状态,并发报警信号。

方案设计及论证:设计思路是设多组用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,输入的密码无效。

电路内部设置一个密码校验电路来验证密码正确与否,只有密码输入正确才能输出开锁所需的信号。

还应设置一组密码修改按键。

但用户按动输入开始键开始计时(只有按动了输入开始键之后输入的密码才有效),密码输入时间超过设定时间电路将报警,只有输入正确密码或断开电源报警铃才能停止,同时电路自锁,防止他人的非法操作。

具体方案如下:设17个用户输入键,其中只有4个是有效的密码按键,其它都是干扰键,还预设了4个密码修改键。

打开输入开关,电路开始计时,输入密码,开始校验,密码正确则开锁(绿灯亮表示开锁)同时停止计时;如果密码输入错误,则运行555单稳态电路密码锁定5分钟(红灯亮表示关锁),输入时间超过30秒密码也会锁定。

本文介绍了一个基于逻辑电路原理设计的电子密码锁电路。

该电路包括16个密码按键,其中4个为有效输入按键,采用4位密码输入。

只有在输入正确的密码后,才能实现对灯的电子控制。

该电路还包括各种附加电路,如报警和锁定功能,从而具有较高的安全系数。

该电路经过多次修改和整理,可以满足人们的基本要求。

但是,由于水平有限,该电路中存在一定的问题。

例如,电路的计时功能有误差,不能精确地对电路进行限时输入。

此外,用开关作为74LS112的CLK脉冲不是很稳定,可以考虑调换其他高速开关或计数脉冲。

最后,电路中未加显示电路,但可以通过其他数字模块实现这一功能。

为了进一步完善该电路,本文使用EWB软件对设计电路进行了逐步调试。

电子密码锁数字逻辑课设

电子密码锁数字逻辑课设

电子密码锁数字逻辑课设1、概述本次课程设计主要设计一个在生活中运用广泛的数字电子密码锁。

通过对课程的设计掌握电子系统的一般设计方法,掌握模拟IC器件的应用,培养综合应用所学知识来指导实践的能力,为接下来电子信息学习培养兴趣。

本系统的设计思路为将整个系统分为密码输入,密码设置,密码比较,控制结果四个部分。

主要的设计要求有:(1)有预先设定好的密码,该密码可以修改。

(2)输入密码按确定键后,若密码正确则锁打开(此设计用发光二极管S表示锁,锁打开就是点亮发光二极管S);若密码不正确则电路发出报警信号(用放光二级管J,报警就是点亮放光二级管J)。

任意输入密码而不按确定键的话电路不会有反应。

(3)任意输入密码而不按确定键的话电路不会有反应。

(4)打开的持续时间为10秒,警报持续时间也为10秒,即按下确定键到松开后10秒,按住确定键不放的话一直打开或者报警。

本设计报告主要由原理图的设计,分解单元的设计,连接与调试和Multisim图的正确设置和接线组成。

本系统已经可以粗略模拟在生活中已经广泛运用的数字密码锁的大概功能,例如ATM 机,数字防盗门,数字密码锁都能通过本设计实现,所以本课设具有极强的实际意义。

2、方法设计1、数字电子密码锁原理框图密码验证模块计时模块开锁信号报警信号密码输入确定输入逻辑组合模块修改密码锁住输入图1原理框图本次设计采用图1所示的程序框图的设计思路,利用74LS138形成三输入八输出的密码输入,同时由555定时器构成单稳态触发器产生触发信号触发开锁或者报警,个设计方案不但便于制作,电路的价格比较低廉,采取的电路结构也简单易读,而且可移植性高,能够适用于多种设备及系统,便于投入实际生产。

3、电路设计3、1 本次电路设计主要包含用了密码输入的74LS1383线-8线译码器,用去验证密码的D触发器,和用于10秒计时的555单稳态计时器,还有一些逻辑关系来调节发光二极管。

3、2 密码输入及验证电路此模块主要是用输入键盘和74LS138实现,输入键盘为六个逻辑开关;74LS138为3线-8线译码器,它的真值表如表1表174LS138真值表输入输出G1~G2A+~G2BC B AY0 Y1 Y2 Y3 Y4 Y5 Y6 Y7100 0 001111111100 011 01111111001 011 01111110011111 01111101 0 01111 0111101 0111111 0111011 0111111 01101111111111 0 由表1 可知每个输出端为0时都有唯一的输入码,所以可以把G1 ~G2A~G2B C B A作为密码输入端,与输入键盘相连,共有26=64种输入情况。

数字逻辑电路-电子密码锁

数字逻辑电路-电子密码锁

电子密码锁【用途和摘要】本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安全工作,具有极高的安全系数。

【本文关键词】电子密码锁、电压比较器、555单稳态电路、计数器、JK触发器、UPS电源。

一、历史背景随着社会的发展,人们越来越重视安全的问题,如学校,公司,企事业单位等,需要保密的文件越来越多,而传统的锁而又无法提供可靠有效的保证,而电子密码锁则正好满足了人们这一需要,即将成为未来的主流选择。

二、总体方案设计1、设计思路本设计共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

2、总体方框图三、设计原理分析电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输....次数锁定电路。

1、键盘输入、密码修改、密码检测、开锁及执行电路 .其电路如下图3-1-1所示:图3-1-1 键盘输入、密码修改、密码检测、开锁、执行电路开关K1~K9是用户的输入密码的键盘,用户可以通过开关输入密码,开关两端的电容是为了提高开关速度,电路先自动将IC1~IC4清零,由报警电路送来的清零信号经C25送到T11基极,使T11导通,其集电极输出低电平,送往IC1~IC4,实现清零。

密码修改电路由双刀双掷开关S1~S4组成(如图3-1-2所示), 它是利用开关切换的原理实现密码的修改。

例如要设定密码为1458,可以拨动开关S1向左,S2向右,S3向左,S4向右,即可实现密码的修改,由于输入的密码要经过S1~S4的选择,也就实现了密码的校验。

数电课程设计-电子密码锁

数电课程设计-电子密码锁

数字电子技术课程设计一、设计题目电子密码锁二、主要内容及要求(1)用电子器件设计制作一个密码锁,使之在输入正确的代码时开锁。

(2)在锁的控制电路中设一个可以修改的4位代码,当输入的代码和控制电路的代码一致是锁打开。

(3)用红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁(4)如5s内未将锁打开,则电路自动复位进入自锁状态,并发报警信号。

四、总评成绩指导教师学生签名电子密码锁一、设计任务与要求(1)用电子器件设计制作一个密码锁,使之在输入正确的代码时开锁。

(2)在锁的控制电路中设一个可以修改的4位代码,当输入的代码和控制电路的代码一致是锁打开。

(3)用红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁(4)如30s内未将锁打开,则电路自动复位进入自锁状态,并发报警信号。

二、方案设计与论证设计思路:设多组用户输入键,其中只有4 个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,输入的密码无效。

电路内部设置一个密码校验电路来验证密码正确与否,只有密码输入正确才能输出开锁所需的信号。

还应设置一组密码修改按键。

但用户按动输入开始键开始计时(只有按动了输入开始键之后输入的密码才有效),密码输入时间超过设定时间电路将报警(老师要求的输入时间5秒太短了),只有输入正确密码或断开电源报警铃才能停止,同时电路自锁,防止他人的非法操作。

方案一:我共设了17个用户输入键,其中只有4个是有效的密码按键,其它都是干扰键,还预设了4个密码修改键。

打开输入开关,电路开始计时,输入密码,开始校验,密码正确则开锁(绿灯亮表示开锁)同时停止计时;如果密码输入错误,则运行555单稳态电路密码锁定5分钟(红灯亮表示关锁),输入时间超过30秒密码也会锁定。

大概思路:用四个74LS112 JK触发器串联,输入密码正确与否,输入的电平不同,由此达到密码校验。

密码的输入有16组开关控制,分为0和1两种情况。

限时30秒由74LS160计数器控制,而锁定时间则由555单稳态电路控制,开锁、关锁由指示灯点亮模拟。

电子密码锁数电课程设计

电子密码锁数电课程设计

电子密码锁数电课程设计课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 《数字电子密码锁》初始条件:利用集成集成芯片和门电路等设计一个数字电子密码锁。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计一个数字电子锁,有其预先设定好的密码,该密码可以修改。

(2) 输入密码按确定键后,若密码正确则锁打开;若密码不正确则电路发出报警信号。

任意输入密码而不按确定键的话电路不会有反应。

(3)任意输入密码而不按确定键的话电路不会有反应。

(4)打开的持续时间为Tx ,警报持续时间也为Tx,即按下确定键到松开后10秒,按住确定键不放的话一直打开或者报警。

时间安排:第17周理论讲解,地点:新3-205第18周理论设计及实验安装调试,地点: 鉴主15楼通信实验室第19周撰写报告及答辩,地点:鉴主16楼报告厅指导教师签名:年月日系主任(或责任教师)签名:年月日目录1 绪论 (1)1.1 课程设计的目的 (1)1.2 课程设计的任务及要求 (1)2 工作原理及方案选择 (1)2.1 电路设计的多种方案 (1)方案一 (2)方案二 (2)2.2 电路设计方案的比较 (2)3 电路设计及仿真 (3)3.1 数字电子密码锁的设计原理框图 (3)3.2 各组成部分电路的设计 (3)密码输入及验证电路的工作原理 (3)密码修改及输出锁定 (5)计时模块 (6)逻辑组合模块 (7)3.3 数字电子密码锁的总电路图 (8)3.4 电路参数的选择及计算 (8)4 电路软件仿真 (10)4.1 开锁的仿真 (10)4.2 报警的仿真 (11)4.3 数据测试 (12)5 电路的安装与调试 (15)5.1 焊接电路 (15)5.2 总电路的调试 (16)5.3 调试中遇到的问题及分析与总结 (16)6 心得体会 (17)7 附录 (18)7.1 仪器仪表电子元器件明细清单 (18)7.2参考文献 (19)摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

数字电路设计实验-简易密码锁

数字电路设计实验-简易密码锁

数字电路设计实验报告——简易密码锁学院:班级:学号:姓名:目录●任务要求●系统设计✓设计思路✓总体框图✓分块设计●波形仿真及波形分析●源代码●功能分析●故障分析及问题解决●总结及结论●任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。

基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。

通过密码设置确定键(BTN 键)进行锁定。

2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。

输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。

3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。

闭锁状态下不能清除密码。

4、用点阵显示开锁和闭锁状态。

提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。

2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。

●系统设计设计思路将电子密码锁系统分为三个部分来进行设计,数字密码输入部分、密码锁控制电路和密码锁显示电路。

密码锁输入电路包括时序产生电路,键盘扫描电路,键盘译码电路等,将用户手动输入的相关密码信息转换为软件所能识别的编码,作为整个电路的输入。

密码锁控制电路包括相应的数据存储电路,密码核对电路,能够进行数值的比较,进行电路解锁,开锁,密码的重新设置等。

密码锁显示电路包括将待显示数据的BCD 码转换成数码管的七段显示驱动编码,密码锁在相应的状态下的点阵输出以及蜂鸣器的报警输出。

总体框图按复位键 键入初始密码0000 密码错误密码正确 按确认键 按复位键按确认键密码锁显示电路 密码锁控制电路 数码管显示报警电路密码更改与密码设计电路键入状态闭锁状态开锁状态 报警状态分块设计✓键盘扫描电路首先,向列扫描地址逐列输出低电平,然后从行码地址读回,如果有键摁下,则相应行的值应为低,如果没有按键按下,由于上拉的作用,行码为高。

四位电子密码锁

四位电子密码锁

沈阳课程设计(说明书)四位电子密码锁的设计班级/ 学号学生姓名指导教师课程设计任务书课程名称数字逻辑课程设计课程设计题目四位电子密码的设计课程设计的内容及要求:一、设计说明与技术指标设计一个四位电子密码锁电路,技术指标如下:①通过键盘电路输入四位密码。

初始密码0000设定。

②密码输入正确后,锁打开。

在锁打开时,才可修改密码。

③密码输入错误有适当的提示。

三次错误后,具有声、光报警功能。

二、设计要求1.在选择器件时,应考虑成本。

2.根据技术指标,通过分析计算确定电路和元器件参数。

3.画出电路原理图(元器件标准化,电路图规范化)。

三、实验要求1.根据技术指标制定实验方案;验证所设计的电路,用软件仿真。

2.进行实验数据处理和分析。

四、推荐参考资料1. 彭介华.电子技术课程设计指导[M].北京:高等教育出版社2. 孙梅生,李美莺,徐振英. 电子技术基础课程设计[M]. 北京:高等教育出版社3. 梁宗善. 电子技术基础课程设计[M]. 武汉:华中理工大学出版社4. 张玉璞,李庆常. 电子技术课程设计[M]. 北京:北京理工大学出版社5. 谢自美.电子线路设计·实验·测试(第二版)[M].武汉:华中科技大学出版社五、按照要求撰写课程设计报告成绩指导教师日期一、概述随着人们生活水平的提高,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,因此电子密码锁在实现家庭防盗这一问题也变得尤其的突出,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

这种锁是通过键盘输入一组密码来达到开锁的目的。

本课程设计一个电子密码锁,要求是设定4位的密码锁,输入4位输入密码,然后与已设置好的密码相比较,密码输入正确后即可开锁,开锁后才可执行密码修改的功能,如果输入三次错误密码就不断报警(包括声音和光两种报警方式)。

二、方案论证设计一个四位电子密码锁,通过输入四位密码,并且一位一位的进行比较,能够在输入正确的密码后打开锁,并且只有在打开锁之后判断是否修改密码,如果输入密码错误,则记录一次输入错误信息,如果输入三次错误密码,则有声音(蜂鸣)或者光(灯亮)报警。

数电实验 数字锁

数电实验 数字锁

9.4 数字锁1.简要说明数字锁即电子密码锁,锁内有若干密码,所用密码可由用户自己选定。

数字所有两图9-10 总体框图类:一类是并行接收数据,称为并行锁;一类是串行接收数据,称为串行锁。

如果输入代码与锁内密码一致,锁被打开;否则,应封闭开锁电路,并发出报警信号。

2.任务和要求设计一个8位串行数字锁,并验证其操作。

具体要求如下:(1)开锁代码为8位二进制数,当输入代码的位数和位置与锁内给定的密码一致,且按规定程序开锁时,方可打开,并点亮开锁灯LT。

否则,系统进入“错误”状态,并发出报警信号。

(2)开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。

(3)串行数字锁的报警方式是点亮指示灯LF,并使喇叭鸣叫来报警,直到按下复位开关,报警才停止。

此时,数字锁又进入自动等待下一次开锁的状态。

总体框图如图9-10所示。

3.模块及模块功能模块FEN如图9-11所示。

此模块分频产生占空比为1:10000的方波,用于消除抖动。

library ieee;use ieee.std_logic_1164.all;entity fen isport(clk:in std_logic;clk1:out std_logic);end fen;architecture fen_arc of fen isbeginprocess(clk) 图9-11variable cnt:integer range 0 to 9999;beginif clk'event and clk='1'thenif cnt=9999 thencnt:=0;clk1<='1';elsecnt:=cnt+1;clk1<='0';end if;end if;end process;end fen_arc;模块XIAOPRO如图9-12所示。

它是消抖同步模块。

library ieee;use ieee.std_logic_1164.all;entity xiaopro isport(a,clk1:in std_logic;b:out std_logic);end xiaopro;architecture xiao_arc of xiaopro is 图9-12signal tmp1:std_logic;beginprocess(clk1,a)variable tmp3,tmp2:std_logic;beginif clk1'event and clk1='0'thentmp1<=a;tmp2:=tmp1;tmp3:=not tmp2;end if;b<=tmp1 and tmp3 and clk1;end process;end xiao_arc;模块CORNAA如图9-13所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HARBIN INSTITUTE OF TECHNOLOGY电子密码锁电路设计课程名称:数字逻辑学生所在院(系):计算机学院学生所在专业:计算机科学与技术小组成员:于志睿1130310717贾明达J130310701李家兴1130310714小组项目:电子密码锁电路设计任课教师:张彦航成绩:2014 年12 月11日目录1、设计目的及要求2、工作原理、系统方框图3、各部分选定方案及电路组成、相关器件说明4、调试过程5、设计结论6、设计心得与总结7、参考文献附录一:总体器件表及相关器件的功能表、管脚分布附录二:总体设计图附录三:仿真结果附录四:小组各成员所做工作1.设计目的及要求题目:电子密码锁的设计[设计要求](1)设计一个开锁密码至少为4位数字(或更多)的密码锁。

(2)当开锁按扭开关(可设置8位或更多,其中只有4位有效,其余位为虚设)的输入代码等于所设密码时启动开锁控制电路,并且用绿灯亮、红灯灭表示开锁状态。

(3)从第一个按扭触动后的5秒内若未能将锁打开,则电路自动复位并发出报警信号,同时用绿灯灭、红灯亮表示关锁状态。

附加功能:可以设置密码,通过设置密码按钮SP(set password)来设置,且只能在初始时设置密码,设置好之后就会锁住存储端不让重新设置。

输入密码是要先按输入密码的按钮IP(in password),然后输入密码。

密码输入最多2次,超过2次就关锁。

2.工作原理、系统方框图按照设计的要求,输入端有10个密码输入端,一个设置密码的按钮和一个输入密码的按钮。

输出端有显示密码是否正确的灯(一个黄灯闪烁表示密码设置好了,绿灯亮表示密码输入正确,红灯亮表示关锁状态)和倒计时的显示端(用七段数码管实现)。

如下图所示:4位密码转换成二进制编码(我们选择8421-BCD 码);其次,由于初始要先设置密码,就需要将此密码保存, 需要设计一个存储工作端;另外,还要将之后输入的密码和存储的密码进行比较,需要有一个等值比较工作端;此外,由于要实现倒计时的功能,还要有一个计时工作端。

系统的结构功能如下图:SP IP3.各部分选定方案及电路组成、相关器件说明下面就对以上的功能端进行一一的实现。

对于编码工作端,最核心的功能就是将十进制数编码为二进制数,提供给其他工作端。

我们选取了74147芯片4线BCD优先编码器。

其输入端有9个,分别代表1~9这9个十进制数,我们把整个系统的1~9密码输入端分别接到九个端口,0输入端悬空。

这样就基本实现了编码功能。

编码器是的输入是0有效的。

下面的部分截图中可以看到编码工作端的电路。

下面就是存储工作端。

要想存储4个0~9之间的数,显然每个数转换成二进制有4位。

我们原本想用PROM之类的器件来实现存储,鉴于MAX PLUS2中没有这类的元件,就改为了4个4位寄存器来存储这4个4位二进制数,寄存器唯一的缺点也是致命的缺陷就是断电即丢失数据,我们也就是借用寄存器来表达我们的系统,实际当中可以用永久存储的器件。

我们用编码工作端的输出端来连接存储工作端的输入端。

由于每次只能有一个十进制数(4位二进制数)进入输入端,我们需要判断这个数要存在哪一个寄存器中。

我们选用了4位计数器和2-4译码器的组合来实现这个功能。

计数器的时钟端每次在密码输入端按下的时候产生一个上升沿的脉冲,用来驱动计数器,使其向下记一个数。

计数器的两个输出端分别接到译码器的两个输入端,译码器的输出端分别与4个寄存器的使能端相连接。

这样每一个密码输入,都只能使译码器输出端的一个有效,从而将这个数存入寄存器中。

译码器我们选用了74147。

(下图是存储工作端和编码工作端的组合的一部分,由于要用到带使能端的寄存器,器件库中没有,自己设计了一个.下图为带使能端的4位寄存器和初步的存储功能端的实现)。

要想使每次密码输入端按下时都产生一个脉冲,我们可以用与非门来实现,电路图如下:存储功能端实现选择性存储的关键电路图如下:(计数器选择了模16的计数器74161以便于实现不能再次设置密码的功能,译码器选择了74139双2-4译码器,且可以使输出全为1)设置密码的另一个关键功能就是设置密码只能在初始时设置一次,以后不能更改(除非已经输入正确的密码)。

这样我们需要在计数器和2-4译码器的组合上进行小小的改动,其状态转换图如下:保持计数器的状态不变,且译码器的输出全为1具体的实现方案就是当模16的计数器计到4时,其输出为0100,即第2位为1,此时将这个1反馈到计数器,使得计数器锁存,保持现在的状态,同时这个1给译码器的GN从而使得输出全为1,存储工作端不再工作。

电路图如下:存储工作端总体的波形图如下(由于有4个寄存器,不太好截图,故只选取了第一个寄存器的波形,可以看出只在第一次输入时第一个寄存器存储了相应的二进制数,是以补码的形式,之后再输入则无效,可以确定存储功能实现):等值比较工作端的核心工作是判断输入的密码与存储工作端存储的密码是否相同。

我们选用了2个8位数值比较器74518来实现比较的功能,当两个比较器的输出端都为1时,密码正确。

于是我们将两个输出端用与门连接,当与门输出为1时绿灯亮。

下一个要解决的问题就是密码每次只能输入一个,我们的比较是4位密码同时比较,于是我们再次选用4个4位寄存器来临时存储输入的4个密码,同样的需要计数器和译码器来控制编码输出端的数据存储在某个寄存器中。

临时存放密码的结构和存储密码的结构极其相似。

其工作的波形图如下(由于寄存器过多,只选取了第一个密码的寄存器,同样是以补码的形式存储,图中为6和1001。

且输入之后还能再次输入,从图中的第5个输入也能看出):实现了输入密码的暂时存储之后,等值比较就显得很简单了,只需要将寄存器的输出端口对应连接到两个等值比较器上,并将两个比较器的输出端用与门连上即可。

对于计时工作端,预定用555震荡器来实现计时的功能,无奈软件中还是没有类似的元器件。

只能自己用一个计数器计数器,提供一个稳定的时钟端来实现计时的功能。

我们选用的是74190模10正序逆序计数器和7447BCD转七段数码管芯片,将74190的4个数值输出端接到7447芯片的4个数值输入端,再将计数器设置为逆序计数即可。

只需提供稳定的时钟就能完成倒计时的功能。

电路图如下:倒计时的波形图如下:4.调试过程调试过程相当闹心。

尽管我们实现了各工作端的功能,但是当我们把它们组合到一起时就出现了问题。

调试过程如下:我们首先就是现实最基本的功能设置密码然后输入密码进行比较,这时就出现了问题。

设置密码没有问题,密码都存储在了4存储工作端中。

但是我们在之后输入密码却出现了问题,我们发现密码不能暂时存储在寄存器中。

于是我们就多加了几个输出端,一个是在IP 连接的D锁存器(latch)后面,用来检测锁存器是否为1,是否将计数器使能端接位1;另外在计数器的低2位加了输出端,观察计数器是否正常工作。

调试的结果是使能已经为1,但是计数器却没有正常工作。

就为了这个问题,我们纠结了2、3天,重新画了两三遍电路图,进行了无数次的调试,结果都是计数器不能工作。

奇怪的是单独使用就能很好的工作,当前面有了设置密码的步骤以后就不能工作,计数器的输出都为X,而且如果先输入密码再来设置,会发现设置密码也会出现同样的错误。

为此我们几乎要放弃这个题目,因为截止的时间已经快到了,错误却依然存在。

后来我们无意中把锁存器去掉了,直接将IP接到计数器的使能端上,这时正确了。

我们到现在都没有搞懂原因。

下面是设置和输入密码的波形图。

(波形太长,进行了缩放。

)可以看到初始时没有密码,故绿灯亮,等设置好密码之后绿灯不再亮,只要输入正确的密码6421,绿灯就会再次点亮。

至此,我们密码锁的基本功能已经实现了,能够设置存储密码,并进行判别了。

再来检验一下输入错误密码,绿灯会不会亮。

下面是先输入错误密码,再输入正确密码的波形图:可以清楚的看出,输入错误的密码后,绿灯没有亮,直到输入正确密码才亮。

接下来测试一下只有两次输入密码的机会这个功能是否实现。

如图所示:我们欣喜的看到前两次输入密码错误,到第三次尽管输入了正确的密码,绿灯还是没有亮,并且从波形图可以看到等值比较器的值在第二次后就没有发生改变,这和我们设计的初衷是一致的。

由于上次的错误对我们的教训太深刻了,我们决定一步步来调试。

下面紧接着测试一下两次密码输入错误之后红灯会不会亮:结果也是让人欣慰的,红灯亮了。

下面还有一系列的测试,由于太多我就不一一列举了,上面的波形图也差不多足以说明我们设计的密码锁的功能基本完善了。

最后的仿真结果放在了附录中。

需要说明的是Max Plus2的时钟端不支持较长时间的,故我们之后的仿真测试都是等效的缩小了。

5.设计结论我们设计的电子密码锁有10个数字输入端,能存储4位密码,可以设置、修改密码,能够用绿灯亮表示密码输入正确,红灯亮表示关锁,黄灯闪烁一下表示密码已经设置完毕。

同时密码输入只有2次机会,并且只能在10秒之内完成输入,否则关锁。

整个流程如下:当然我们完全可以按照现在的模式实现6位甚至更多位数的密码锁,限制的时间和次数也可以改成比较合理的数值,鉴于时间紧迫,我们在之前的那个错误上耗去的时间太多,我们就不再一一优化实现了。

目前的这个系统很可能还存在一些错误与不足,时间和精力都不允许,只能做到这个层面上了。

6.设计心得与总结1130310717 于志睿:作为电子密码锁的主要设计人,这整个系统基本都是我一个人的构想,大的系统框架是我搭建的,一些细节也体现了我的设计。

说实话我还是有点后悔搭建了一个这么一个相对完善的系统结构,毕竟我们的水平有限。

当然我还是有几分把握的,尤其是整个系统的框架在我的脑海中逐渐清晰的时候,一些细节我也有一些比较妥善的方案来实现。

本以为整个实现过程应该可以比较顺利,没想到各部分组合时出现了差错,而且根本看不出原因,为此我们耗费了大量的时间。

好在我们最终解决了问题,成功的实现了密码锁初步的功能。

下面的设计由于时间的关系并没有把我的一些想法完全的实现。

这次的设计总体来说还算是成功,虽然经历了一些波折,虽然还有一些想法由于时间和精力有限没有实现,但总的来说完成了基本的一些功能。

我个人其实对这个密码锁有一些期待,比如用PROM之类的元件实现永久性的存储等等。

设计后的反思使我更加对大问题简化成一个个小问题有了进一步的认识,这篇报告是由我执笔的,一些地方可能说的不清楚,而且竟然都没有逻辑表达式和卡诺图,不当之处还望老师包涵。

1130310714 李家兴:通过本次大作业,不仅对所学的知识有了更深层次的理解,还更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。

各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。

各个电路应该怎么连接,具体的问题应该怎么运用所学知识去实现,也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯,在大作业的进行中不断的改进电路,从而发现了许多平时没有注意到的不足,真正体会到了把所学知识运用到实际中的乐趣,虽然可能还有一些不足,但仍然学会了很多。

相关文档
最新文档