当前位置:文档之家› 数字逻辑大作业—电子密码锁

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

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

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

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

相关主题