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

上传人:b****5 文档编号:6137151 上传时间:2023-01-04 格式:DOCX 页数:20 大小:625.19KB
下载 相关 举报
密码锁数字电子技术课程设计.docx_第1页
第1页 / 共20页
密码锁数字电子技术课程设计.docx_第2页
第2页 / 共20页
密码锁数字电子技术课程设计.docx_第3页
第3页 / 共20页
密码锁数字电子技术课程设计.docx_第4页
第4页 / 共20页
密码锁数字电子技术课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

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

《密码锁数字电子技术课程设计.docx》由会员分享,可在线阅读,更多相关《密码锁数字电子技术课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

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

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

 

数字电路课程设计

设计报告

课题名称:

密码锁

 

         设计级成员1:

设计级成员2:

指导教师

泉州师范学院理工学院通信专业

2009年12月

密码锁

 

一、目录

1、设计项目综述……………………………………………………………………………2

2、设计方案及分析…………………………………………………………………………3

2.1设计方案……………………………………………………………………………3

2.2设计分析……………………………………………………………………………4

2.3方案优缺点…………………………………………………………………………4

3、电路原理分析…………………………………………………………………………5

3.1模块1:

into……………………………………………………………………5

3.2模块2:

加法器74LS5283………………………………………………………6

3.3模块3:

qdy16……………………………………………………………………8

3.4模块4:

jicun……………………………………………………………………9

3.5模块5:

jicun4…………………………………………………………………10

3.6模块6:

choose…………………………………………………………………11

3.7模块7:

密码比较设计…………………………………………………………12

3.8模块8:

jishu3…………………………………………………………………13

3.9总图……………………………………………………………………………14

4、总结………………………………………………………………………………………16

4.1设计中遇到的问题及解决方法……………………………………………………17

4.2设计方案中需要改进的地方………………………………………………………17

4.3这次设计中的收获和教训…………………………………………………………17

 

二、设计项目综述:

1、可以预置2位十进制数密码,并保存密码;输入密码的的第一位和第二位时,互不影响。

2、开锁时,输入正确密码,按开锁键,锁打开。

3、当输入密码时,数码管显示相应的输入数字。

密码输入错误时计数一次,当输入错误密码连续达到三次,拒绝再输入密码。

需用复位键将其还原才能再次输入。

4、输入密码时,数码管8和数码管7显示密码的数值。

拒绝输入密码时,只显示0。

按开锁键时,数码管5显示密码输入错误的次数;当错误次数连续少于3次以下时,则当输入密码正确时数码管5清“0”。

5、开锁指示灯亮表示锁已经打开。

6、出于对确定键,开锁键以及保存键的设置的考虑以及EDA实验箱的本身线路的限制,我们采用模式5进行设计。

7、用键1~键4实现10个数字键。

键5:

OK2,在开锁时确定输入密码的第二位数的确定键,即开锁键;同时也是当连续输入

3次错误密码时密码锁被锁定的复位键。

键6:

save,当初始密码的第二位输完后按这个键实现保存密码。

当这个键被弹出时,初始密码可以被重新设置。

键7:

OK1,设置初始密码或者后来的开锁,当输完第一个数时按这个键确定第一位数。

键8:

shift,在输入密码时,用来切换输入的数字0~4为5~9。

三、设计方案及分析

1、设计方案

根据以上密码锁的设计任务,我们拟定的方案可以简略的如以下框图所示:

2、方案分析

(1)密码输入:

由于要求通过每按一个输入键时直接显示为对应的十进制数密码,所以需要将二进制数转换为对应的十进制数。

而总的输入键只有8个,预计是用5个输入键作为数字输入的功能键,根据5个输入3个输出,我们就采用了优先编码器74LS148来实现这个功能。

优先编码器74LS148可以将“0”设置为默认数字,省下一个数字输入键作为之后的功能键,那我们就可以设置用4个输入键作为数字输入功能键;而且当几个输入同时出现时,只对其中优先权最高的一个进行编码,这个编码就是我们要的对应的十进制数。

但是由于输入键有限我们只设置4个输入键作为数字的输入功能键,所以优先编码器74LS148只能输出0~4这5个数字。

所以我们又加了一个加法器74LS283,它可以将优先编码器74LS148输出的0~4自动加“5”,实现5~9这5个数字的输出。

通过一个简单的选择逻辑电路,使当按下键8(shift)时可以切换0~4为5~9的输入。

(2)保存初始密码:

要进行开锁首先要存一组密码。

在存密码时可以实现分别存储密码。

即当输入第一位密码时,可以任意切换,直到按键7(OK1)时才保存第一位密码;当输入第二位密码时也可以任意切换,而且不影响第一位密码的保存,直到按键6(save)时才保存下第二位密码。

这样比较方便用户的密码设置。

要实现这些功能我们就理所当然的想到用寄存器74LS75。

可以通过控制74LS75的E12和E34来控制它的工作状态。

因为要保存两位密码所以我们采用两片寄存器。

为了实现独立设置两位密码而互不影响的功能,我们再通过一个简单的逻辑选择电路来控制这两片的工作状态,使其只能有一个处于工作状态同时另一个处于保持状态。

当两位密码都确定之后,我们再通过键6(OK2)来使两片寄存器的E12和E34处于低电平,使其处于保持状态。

这样就实现了保存初始密码的功能。

在输入初始密码时就要通过数码管显示设置的密码,这个只要把寄存器的输出端接到对应的数码管的引脚就好了。

设置好的密码会输到下面的校验电路等待校验。

(3)保存开锁密码:

在设置完初始密码后就开始进行开锁。

在输入开锁密码时也是独立操作的。

即当输入第一位密码时,可以任意切换,直到按键7(OK1)时才保存第一位密码;当输入第二位密码时也可以任意切换,而且不影响第一位密码的保存,直到按键5(OK2)时才确定第二位密码,同时打开校验电路进行校验。

为实现这个功能我们也用了两片寄存器

74LS75。

基本原理与第

(2)步的一样。

(4)密码校验:

要进行开锁就要将解锁密码与初始密码进行比较,如果相同就解锁,如果不同就不解锁。

为了实现这个功能我们使用了两片数据比较器7485,为了让两组密码同时比较,这里我们设置了一个键5(OK2)来控制数据比较器,使当按下键5(OK2)时打开数据比较器使其工作。

输出端用一个与门接在两片比较器的相等端,同时也接到一个指示灯,这样就可以通过判断输出端的状态来判断校验的结果是否相等,即是否开锁。

当判断出输出端为高电平时就为相等,这时候指示灯亮。

在判断后也会把判断的结果输到错误次数计数器去。

(5)错误输入次数的计数:

错误次数的计数功能要求为,当输入错误密码连续达到3次之后就拒绝输入,而且数码管8和数码管7只显示“0”。

当输入错误密码连续达到小于3次以下时,再输入正确的密码时计数器要清“0”。

要实现这个功能我们采用了计数器74160,我们将数据比较器的比较结果与计数器74160的ENR端相连接,使其当比较结果为相等时对ENR端进行清“0”。

但是当比较结果为不相等时就会对ENP端置“1”,使其处于工作状态。

将计数器的输出与EP用反相器相连,当计数到“3”时对EP端清“0”,使计数器处于保持状态。

同时将这个计数结果与第

(1)步的优先编码器74LS148的EIN端用一个反相器相接,当计数结果达到“3”时就将这个EIN置“1”,使其处于关闭状态,即实现当输入错误密码连续达到3次之后就拒绝输入,而且数码管8和数码管7只显示“0”。

3、方案优缺点

(1)优点:

这套方案的优点我们考虑到了很多人性化的操作功能,比如说密码的可改性,当用户设置了一组密码后可以进行更改。

输入密码时我们都有分别设置确定键,使用户在输入密码时允许更改,只有按下相应的确定键之后密码锁才会工作,不会因为不小心按错密码而使密码锁被锁。

输错密码时计数器会进行计数,但是只有在“连续”输错“3”次之后才会被锁。

当密码锁只输错“1”到“2”次后再输入正确的密码时,计数器会清“0”,对于用户来说比较方便,不会因为一两次的失误而导致密码锁被锁。

们还设置了一个复位键,当忘记密码时,用户可以通过这个键使密码锁复位来重新获得密码输入的权利,而不会因为忘记密码而使密码锁永远被锁。

在一定程度上具有很大的灵活性。

(2)缺点:

由于输入键有限,我们将复位键设置为键5(OK2),这在操作上有一定的局限性。

比如说,当用户在输完第二位解锁密码时要按键5(OK2)进行解锁,当操作完这些时要先把键5弹起来才能进行下一组解锁码的输入,不然密码锁会默认上组数据为第二次的解锁码而导致错误。

这样就会使用户在使用时存在一定的不便性。

 

三、电路原理分析:

1、模块1:

into

功能:

将5个输入转为对应的3个输出来表示对应的十进制数0~4的输出

(1)真值表:

Into的真值表:

输入

输出

D10

D11

D12

D13

S

Q3

Q2

Q1

1

0

0

0

0

0

0

1

0

1

0

0

0

0

1

0

0

0

1

0

0

0

1

1

0

0

0

1

0

1

0

0

*

*

*

*

1

*

*

*

优先编码器74LS148的真值表:

根据所要实现的功能并对照以上两个真值表,我们采用一片74LS148优先编码器与一些反相器来实现。

(2)into的原理图

当不按键时输出的是“0”,即默认为“0”;

当D13=0,D12=0,D11=0,D10=1时,输出1;

当D13=0,D12=0,D11=1时,输出2;

当D13=0,D12=1时,输出为3;

当D13=1时,输出为4。

(3)波形图如下:

2、模块2:

加法器74LS283

功能:

将into模块输入的数字0~4自动加5,变为数字5~9

(1)真值表:

模块2的真值表:

输入

输出

Q2

Q1

Q0

Y3

Y2

Y1

Y0

0

0

0

0

1

0

1

0

0

1

0

1

1

0

0

1

0

0

1

1

1

0

1

1

1

0

0

0

1

0

0

1

0

0

1

加法器74LS283的真值表:

根据所要实现的功能并对照以上两个真值表,我们采用一片加法器74LS283芯片,使其在输入的数为0~4时输出自动加5变成5~9。

(2)原理图如下所示:

当不按键时输出的是“5”,即默认为“5”;

当a1=1,a2=0,a3=0,a4=0时,输出”6”;

当a2=1,a3=0,a4=0时,输出“7”;

当a3=1,a4=0时,输出“8”;

当a4=1时,输出“9”。

(3)波形图如下所示:

3、模块3:

“qdy16”上下档选择器

功能:

通过键8(shift)来选择输出为上档数字0~4或者下档数字5~9

(1)真值表

输入

输出

Q

Y

D16

O

0

0

*

0

0

1

0

0

0

1

1

1

1

0

0

1

1

0

1

0

1

1

*

1

(2)原理图如下所示

当D16=0时,即键8没有按下的时候,输出的为Q的状态;

当D16=1时,即键8没有按下的时候,输出的为Y的状态。

(3)波形图如下所示:

4、模块4:

jicun

功能:

独立保存两位高低位初始密码

(1)真值表

因为要独立保存两位高低位初始密码,所以我们采用两片寄存器74LS75来设置保存密码,第一片保存高位密码,第二片保存低位密码。

(2)原理图如下:

当CP=0,SAVE=0的时候,第一片的E12=E34=1,而第二片的E12=E34=0,所以第一片处于预置数状态,第二片处于保持状态;

当CP=1,SAVE=0的时候,第二片的E12=E34=1,而第一片的E12=E34=0,所以第二片处于预置数状态,第一片处于保持状态。

当SAVE=1的时候两片都处于保持状态

(3)波形图如下

5、模块5:

jicun4

功能:

独立保存两位高低位解锁密码

(1)真值表

因为要独立保存两位高低位解锁密码,所以我们采用两片寄存器74LS75来设置保存密码,第一片保存高位密码,第二片保存低位密码。

(2)原理图如下:

当CP=0的时候,第一片的E12=E34=1,而第二片的E12=E34=0,所以第一片处于预置数状态,第二片处于保持状态;

当CP=1的时候,第二片的E12=E34=1,而第一片的E12=E34=0,所以第二片处于预置数状态,第一片处于保持状态。

6、模块6:

choose

功能:

选择数码管显示的是初始密码还是开锁密码

用一个选择器来选择输出的数值,当密码未保存时,显示的为设置的密码,当密码设置完以后则输出的为开锁的密码。

(1)真值表

输入

输出

a1

aa1

save

out

0

*

0

0

1

*

0

1

*

0

1

0

*

1

1

1

(2)原理图如下:

当save=0的时候,a1=1,aa1=0,即数码管选择显示初始密码的数字;

当save=1的时候,a1=0,aa1=1,即数码管选择显示开锁密码的数字;

(3)波形图如下所示:

7、模块7:

密码比较设计

功能:

将开锁密码与初始密码进行比较,判断是否开锁。

(1)真值表

因为要比较两位高低位十进制密码,所以采用两片数据比较器74LS85芯片对其进行比较,第一片比较高位,第二片比较低位,当ALB1=0AEB1=1AGB1=0时,则比较器处于工作状态。

当ALB1=1AEB1=0AGB1=1时,则比较器则不工作。

(2)原理图如下:

当OK2=0时,ALB1=1,AEB1=0,AGB1=1,数据比较器不工作;

当OK2=1时,ALB1=0,AEB1=1,AGB1=0,数据比较器工作,即按下开锁键5时进行解锁。

当比较数值相等时,输出Y=1,则开锁,比较数值不相等时,输出Y=0,则不开锁,且计数器计数一次。

(3)波形如如下:

8、模块8:

jishu3

功能:

计数解锁错误次数

(1)真值表

74160计数器的真值表如下图所示:

功能表如下:

Cp

CLRN

LDN

ENPENT

工作状态

*

0

*

**

置零

1

0

**

预置数

*

1

1

01

保持

*

1

1

*0

保持(但c=0)

1

1

11

计数

为了实现对解锁错误次数的计数功能,我们引入了一片计数器74LS160与一些控制的逻辑门。

(2)原理图如下:

当CLRN=0时就处于清零状态;

当LDN为0时就处于预置数状态;

当ENP=0,ENT=1,CLRN=1,LDN=1时,就处于保持状态;

当ENP=1,ENT=1,CLRN=1,LDN=1时,就处于计数状态。

(3)波形图如下:

当输出Y=1,return=1时,CLRN=0,就清零;

当输出Y=0时cp上升一次就计数一次,而当计数到3时,ENP=0,处于保持状态,此时只有当return=0时才会把计数器输出端清零;

由于Cp=ok2⊕Y,当键ok2按下一次时,就使cp=0,而当Y=0时,cp=1,通过这样反复来实现计数器的计数功能。

9、电路总图

密码锁的总图如下所示。

从图中可以看出,当在into模块输入后,会经过一个自动加“5”的加法器,通过设置一个键shift来控制模块“qdy16”来选择输出的为数字0~4还是5~9.之后再通过键save来控制模块“jicun”和“jicun4”的工作状态,当没按save键时模块“jicun”工作而“jicun4”不工作,这时为存储初始密码;当按下save时则相反,这时为存储解锁密码。

之后再通过一个模块“choose”来控制显示管的显示。

再之后就将寄存器的输出接到两个比较器7485并通过键ok2来控制。

将比较的结果接到一个计数器“jishu3”来计数开锁错误次数。

当比较结果相等时,输出为高电平时,则计数器清“0”;当输出为不相等时,输出为低电平,这时计数一次,当连续计数到“3”时,模块“jicun3”的out输出才为低电平,用一个反相器将其接到模块into的“s”端使其停止工作,即拒绝输入并显示管显示为“0”。

再用一个或门将“output”与“ok2”接到“return”实现将计数器的计数清“0”,这时“out”的输出又变为了高电平,这时模块into又可以正常工作,即实现复位的功能。

四、总结

(一)设计中遇到的问题及解决方法

(1)、密码锁的输入设计要求为十进制数,所以我们需要想办法把二进制转化为对应的十进制数。

但是在一开始我们只想到用自己设计的逻辑门电路来实现,这个方法比较繁琐,结果出现很多错误。

在老师的指导下,我们考虑到了采用优先编码器,使得输入的方法简洁实用。

(2)、在设计寄存器来储存密码的时候,一开始我们设置的保存键只是用来保存密码。

当我们设计到保存解锁密码并进行比较时,分析发现由于没有控制后面的比较电路,导致比较电路在港存完密码还没输入解锁密码时就自动按默认值进行比较了。

后来经过仔细的分析,我们决定将保存键充分利用,将它同时设置成控制cp的按键,即在设置初始密码的时,控制用来保存开锁密码的寄存电路不工作,才解决了问题。

(3)、当保存电路设置完成之后又出现了新的问题,在输入开锁密码的时候,输入第一位有一个确定键,但是第二位却没办法控制,就是说在输完第一位密码并按确定键之后,比较器就自动进行比较。

这样导致计数器及开锁指示灯出现错误的指示。

由于输入键有限,我们就想到取消后面的计数器复位键并将这个键用来设置第二位密码确定键。

但是后来我们从问题的另一角度出发,想到可以把键用来控制比较器的工作状态,也就是说,如果当输完第二位密码时我才让比较电路工作,而这个键还成为了第二位密码的确定键。

于是就解决了这个问题。

(4)、在设计计数器的时候由于计数器需要一个cp脉冲,可是我们每次输入都只有一个电平,当连续错误时就无法解决脉冲问题。

于是我们就逐个的考虑哪个功能键可以加以利用:

键8,即shift键,在输入高位时必须一直按着,不符合。

而键7,即ok1,在输入一次密码时都会有一次清“0”和置“1”,如果与后面的输出异或就可以实现cp的脉冲问题,所以我们最后采用了键7。

(5)、由于一开始没有考虑到一个功能:

如果在开锁失败“3”次以下之后又输入正确密码时是否计数显示管也可以清零。

后来调试时,才发现这个问题,因此我们就用一些逻辑门电路使开锁正确时的输出能够实现计数器的清零。

(6)、在设置基本完成以后,我们想更完善功能。

于是我们又重新考虑之前由于输入键有限而被我们放弃的复位键的功能。

在分析每个功能键的情况之后,想到之前用来确定第二位密码的确定键如果用一个或门与比较器的输出结果的非相连接,使当计数到三的时候,让确定键置“0”则可以实现复位。

(7)、由于计数三次则拒绝输入,一开始想到的方案是控制显示管。

但后来发现太繁琐,于是就想到了开始的编码器,如果可以控制让其处于不工作状态,那么数码管显示的就一直都是0了。

(8)打包的时候文件名不能改,而且最好不要配置引脚后打包。

(二)设计方案中需要改进的地方

(1)、设计的图看起来有些繁琐,不易于分析,需要对一些电路进行打包,比如两块寄存器可以打包到一起,还有两片比较器也可以进行打包合并,还有数码显示管的控制也可以打包到一起,这样便于让自己分析。

(2)、复位键的设计可以加以改进。

由于我们设计的复位键,在还没禁止输入之前,如果要输入开锁密码,则必须要先使它处于低电平,不然计数器会出现错误操作。

而当错误次数计数三次时不能关掉确定键,除非用户想将其复位才能将其按掉,因此具有一定的局限性。

(三)这次设计中的收获和教训。

(1)、一开始由于太急于求成,整个电路有的模块比较小,所以我们就没有去没有去调试。

但是等整个都基本设计完时才发现这些看似简单的小模块却有很多需要改进的地方。

因此,我们明白了一个道理:

不管做什么事情,都应该有耐心,认真打好基础,磨刀不误砍柴工。

(2)、做什么事情并不是一直做就是好的,应该时不时的跳出来观看一下全局,把握好方向。

当出现问题时不应该心浮气躁,可以适当的放松心情,调整好心态再继续。

(3)在设计的过程中要敢想敢试,这样才能找出比较好的解决方案。

(4)在设计的过程中,我们主动地想去了解一些芯片的功能,以便我们的设计顺利进行。

这样一种积极的求知欲对于学习来讲事半功倍。

在以后的学习生活中应该保持。

(5)当我们设计出密码锁时感觉很有成就感,感觉到很欣慰。

在知识的海洋里,在学习的道路上,虽然艰辛,但是努力了就会有所收获,收获时的喜悦是美妙的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1