数字逻辑大作业报告设计题目:电子密码锁班级: 1203105任课教师:张彦航计算机科学与技术学院1. 目录:1. 目录: (2)2. 设计目的及要求 (3)2.1设计目的: (3)2.2设计要求: (3)3. 工作原理、系统方框图 (4)3.1工作原理 (4)3.2系统方框图 (7)4. 各部分选定方案及电路组成、相关器件说明 (8)4.1输入单元 (8)4.2比较单元 (8)4.3记录步骤单元 (10)5. 调试过程 (10)6. 设计结论 (11)6.1设计综述 (11)6.2设计结论 (11)6.3设计缺陷 (11)7 设计心得与总结 (12)1: (12)2: (12)3: (13)8. 参考文献 (13)9. 附录 (14)附录一:总体器件表及相关器件的功能表、管脚分布 (14)键盘(真): (14)比较单元: (15)计时单元: (15)附录二:总体设计图 (16)附录三:仿真结果 (17)附录四:小组各成员分工 (19)2. 设计目的及要求本次大作业中,我们选择了题目1:电子密码锁的设计。
2.1设计目的:通过利用现有电路元件或自行设计元件,调动学习过(主要关于编码器、锁存器、环形计数器方面)的知识,独立完成从设计、选片、连线、调试、排除故障到实现一个数字密码锁的全过程,并书写实验报告,从而利用技术解决比较复杂的实际问题,提升综合能力。
2.2设计要求:外部设计:1)设计一个开锁密码为4位数字的密码锁,外观上有一个八位数字键盘,一个输入密码完成开关,一个开始修改密码开关,两个指示灯,一红一绿,另有置于密码锁内部的电源开关和清空输入次数开关;用户使用:2)使用者可以通过一个八位数字键盘输入密码,第一次按下数字开关后即开始计时,五秒内完成密码输入后,按开锁键即可校验密码;3)如果密码正确,绿灯亮起,密码锁打开;如果密码错误,红灯亮起,密码锁不打开,使用者须继续输入密码;4)如果使用者输入密码正确,还可以选择修改密码(但新密码只能使用真键设置),输入新密码完成后,按下清空输入次数开关即可让密码锁继续正常工作;5)如果输入者连续两次输入错误密码,则密码锁内部锁死,即使输入正确密码也不能再次打开;6)如果输入者没在五秒内完成密码输入,密码锁也将自动锁死;内部实现:7)键盘设置的八个数字键盘中,有四个是伪键,四个是真键,密码锁只能识别真键,所有伪键都只影响按键次数,而不提供实际信息;8)密码锁的内部,输入的每位密码都将付诸比较(如果是伪键输入则比较结果恒为假),输入第四位或第八位密码并按下输入完成键后,输出总的比较结果;9)第一次按动按钮即触发一个计时器,使用外部时钟源(每秒一脉冲),五秒后锁定密码锁,此后的输入都不会起效;3. 工作原理、系统方框图3.1工作原理该密码锁由四部分组成:1)密码输入和修改部分:上图为一个输入单元:①、1D输入为1,2D输入为0时,左侧输出为1,右侧输出为0。
②、1D输入为0,2D输入为1时,右侧输出为1,左侧输出为0。
③、1D输入为1,2D 输入为1时,左侧输出为0,右侧输出为0。
④、1D输入为0,2D输入为0时,右侧输出为0,左侧输出为0。
伪键:伪键输入为10或01时输出为0。
修改:K1为单刀双掷开关,放在右侧时选择1D为1开锁,放在左侧时选择2D为1开锁。
密码检测部分:2)密码输出红绿灯:密码输入时间限制(五秒钟),和密码锁锁住的时间(五分钟)。
左侧的cp给1s的时钟,左侧cp给1分钟的时钟。
当左侧时钟计数满五秒时QD输出为1,右侧计时器开始计时计满五分钟时给左侧清零,重新开始进行密码的输入。
3)总体设计思路:密码输入从左侧开始1,无论1D或2D输入为1时,通过2的一个二选一来使3左侧计数器开始计数(五秒钟),在五秒内输入正确则计数停止,6输出端为1通过控制两个计数器之间的门来控制左侧二选一来使3左侧计数器停止计数。
若在五秒内输入3左侧计数器QD输出1,控制4右侧的计数器(五分钟)开始计数,并且控制5右侧二选一选择0而非cp端,使此时的密码输入是无效的。
当4右侧的计数器(五分钟)计满五分钟时给3左侧计数器清零,可以重新输入密码。
7处为密码修改部分,本应该为单刀双掷开关,由于在maxplusⅡ中无单刀双掷开关,而且输出不能为空,就把它们的输出连在了一起。
这是封装后的图:3.2系统方框图部分次要按键并未列举,如:确认完成输入密码按钮,开始修改密码按钮,确认完成修改密码按钮等。
部分次要单元亦并为列举。
4. 各部分选定方案及电路组成、相关器件说明只列举较为重要的若干单元。
4.1输入单元对于输入端,我们采用了以下几个输入端首先有8个密码值,分别用A B C D E_A E_B E_C E_D 表示,其中A B C D是真正用到的,而后面4个没有用到,起迷惑作用。
然后还有一个set端就是让整个电路初始化,对于密码锁,初始密码初始为A A A A 然后有shurumima 和xiugaimima 分别表示电路处于输入密码的状态和修改密码的状态然后有一个finish 和kaisuo 端其中finish是在修改完密码后,表示修改密码完毕kaisuo表示密码输入完,实施开锁操作。
开始使用电路的是,需要先按下set,使得整个电路到工作状态。
接着便是一个编码状态虽然给了8个输入值A B C D E_A E_B E_C E_D,但是真正用到的只有其中4个,另外4个只是迷惑作用。
所以对于4位密码,只需要4个状态,所以只需要2位码就能表示4中状态。
所以用了一个4—2编码器,对于A编码为00 ,对于B 编码为01,对于C编码为10,对于D编码为11.完成编码工作我们用到了74148芯片,这个芯片是一个8—3编码器,但是能够完成我们4—2编码器的工作。
其中eos这个输出端更是成为了后面各个计数器工作的时钟源。
对于比较密码的问题,我们是主要利用的锁存器来完成。
8个锁存器,存储现在的密码,每位密码如上面所说的需要用到两位码,所以总共用到8为锁存器。
用的是D锁存器。
4.2比较单元对于比较密码这个地方,我们觉得我们设计是有一个很有亮点的地方。
对于密码A B C D,我们如何区分A B C D 和A C B D 这两种不同的输入,因为输入端来自于同一个键盘,如何让输入的第一位密码和设定的第一位密码比较,而不是和设定的第二位密码比较。
这个时候,我们想到了控制使能端,我们又用到了另外4个D锁存器,这4个锁存器是用来锁存每一位密码的比较结果。
(总共4位密码,所以用4个),我们用的计时器,是一个4位计时器,工作状态是1000 0100 0010 0001 ,4位分别连着4个锁存器的使能端,虽然每次输入的值,与设定的密码的所有位数都比较了,但是每次能进入结果锁存器保存起来的,却只有一位,这一个设计,我们觉得是非常棒的。
其中计时器我们是利用4个D触发器来完成的,直接利用两个7474芯片,就可以完成。
比较密码说完,我们接着说修改密码。
如果密码输入正确,就可以修改密码。
修改密码的原理也很简单,我们用的锁存器来存密码,那么修改密码只需要,将锁存器里面的值换掉就可以。
同样面对着修改密码时的问题,我修改密码的时候,我重新设定的第一位密码,会不会存到放第二位密码的锁存器中呢。
同样利用上面所说的计时器,作为存密码的锁存器的使能端,就可以解决这个问题了。
当然修改密码的使能端还需要受到result的控制,密码输入对了才用资格修改密码。
所以修改密码和比较密码这两个过程主要用到就是12个锁存器,其中8用来保存密码,(比如密码为A A A A ,锁存器便保存为00 00 00 00),其余4个用来存这4为密码比较的结果。
还用到了一个计时器,当然计时器的时钟源是由键盘的8为输入密码值(A B C D E_A E_B E_C E_D)和set键控制。
因为计时器初始状态为0 0 0 0 ,按下set键后,便可以进入工作状态1 0 0 04.3记录步骤单元接下来再说记录步骤的问题吧,对于这个我们采用了7490这个芯片,对于输入如果连续两次输错密码,那么我们的电路将会锁死,也就是说就算重新输入了正确的密码,也是打不开的。
当然对于密码输入正确还有修改密码中的按键,我们会清零计数器的,这些按键是不会影响的,也就是说锁死的条件必须是连续输入错两次。
7490芯片是很常用的芯片便不多说了。
中间还用到了74257芯片,因为用到了2选1功能。
对了,对于开锁的时候,我们是要求必须输入完4位才有可能打开锁的,所以计数器为4或者8的时候,才有可能打开锁。
下面接着说计时功能,计时功能其实还是计数器的实用,我们再次选了7490芯片,计时5秒,我们的考虑是当你第一次按下一个密码键的时候便开始计时,计时是需要提供一个额外的时钟源的,时钟源的频率给1HZ就好了,那么当计数器遇到5次跳沿就好了,就说明5秒到了,当然中间如果成功输入密码正确,那么计数器将停止计时,并且当再次输入密码的时候,便开始再次计时。
那么我们考虑到这个功能如何实现。
这个时候我们想到前面编码过程中的EOS端口,那么我们需要再次用到一个锁存器,当有输入的时候利用EOS端口,将1存入锁存器,再让锁存器的输出与时钟源相与,当有输入的时候,那么锁存器的输出肯定是1,所以与时钟源相与还是时钟源本身,当输入密码正确,或者修改密码的时候,会将锁存器,再次打开,便让存进1,那么这个时候与时钟源相与便是0,便不会计时了,只有当再次输入密码的时候,再次将锁存器存入1,才能再次开始计时。
对于附加功能显示5秒倒计时,我觉得这个非常简单,但是好像maxplus2没有7端显示的原件呀,其实这个也非常容易实现的,利用计数器的3个端口表示5秒内的时间,还是很容易的,对于7端显示,我们只需要利用计数器的值对应上各个时间的值,画出真值表,利用7个卡诺图,便可以利用计数器的3个端口控制时间的显示,这个数字逻辑实验课上,已经做过了,比较容易实现。
5. 调试过程首先我们先调试的比较密码这个过程,正如上面所说的,开始时,由于set键,我们的初始密码是AAAA,我们最开始就是反复调试这个功能。
再接着我们调试修改密码,以及修改密码后能够比较新的密码。
再接着,我们调试了步骤计数器的功能,即能够在连续输错两次后,就算再次输入对密码后也不能开启。
再接着,我们调试了计时器的功能,即在5s后,就算输入对了密码,也不能打开。
当然在调试过程中,我们也遇到了许多问题,说影响深刻的吧,首先最开始的时候,当我们第一次输入完密码以后,能够正确打开,当第二次输入的时候,密码没有输入完,按下开锁键,便可以打开了。
原因是什么呀,哦,因为锁存器(还没有比较的位数)还保存着上一次的比较结果,对于这个问题,我们需要怎么处理,我们便在输出的时候用计数器控制了一下,当计数器为4或者8的时候才能打开锁。