多功能密码锁课程设计

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

微机原理课程设计说明书
设计题目:
学生姓名:
专业班级:
学院:
指导教师:
2012年11月25日
摘要
密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同显示00字样。

当输入密码错误时,发出错误警告声音,同时显示FF字样。

当六次误码输入的条件下,产生报警电平报警。

还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

密码锁的基本功能是可输入密码、修改码以及判断密码是否正确,故需要输入设备及其与CPU的接口电路及相关存储设备;判断密码则涉及逻辑分析,即要实现逻辑功能;另外相关的报警提示功能则需要相关的输出设备及其接口电路。

我采用8255A的B口作为显示器的输出,c口为选管和接蜂鸣器,开锁及报警电平。

对于6次密码错误输入,可以直接用软件控制,线路简单,程序也很易实现。

用蜂鸣器发声次数来区分确认和警告声音,一声表示确认,三声表示警告。

键盘上的按键用SW-PB共12个,0-9为数字键,连接到8255A的A口对应二进制数,还有确认键和密码修改键,按下表示A口接收到低电平信号。

关键词;密码锁, 蜂鸣器, 微机原理,接口技术,
Abstract
Cipher lock when the input password is correct conditions the output level control electric lock lock, open, the samedisplay the words 00. When the input password mistake, sending the error warning sound, at the same time display FF. When the six error input conditions, generating alarm level alarm. Also can be achieved on the password modification, modification is successful, the buzzer sends confirmation tone. The cipher lock is the basic function of input password, modify the code and password to determine whether the correct, so it needs to input device and an interface circuit of CPU and related storage device; Determine whether the password to logical analysis, namely, to realize the logic function; the related alarm function needs to output equipment and its interface circuit.
I use the 8255A B as the display output, C for selected tube and a buzzer, lock and alarm level. For the 6 time password input errors, starting with a 8253 counter, and then found can be directly controlled by the software, simple circuit, the program is very easy to realize. With buzzer sound frequency to distinguish and confirm the warning sound, a sound that confirm, three sound warning. The keys on the keyboard to use SW-PB in all 12, for the number keys 0-9, connect to the 8255A A port corresponding binary number, and a confirmation key and password modify key, press the A port receives a low level signal.
Keywords:Password lock, buzzer, microcomputer principle, interface technology,
目录
摘要 (Ⅲ)
Abstract (Ⅳ)
第1章绪论 (7)
1.1密码锁的发展现状 (7)
1.2密码锁的发展前景 (7)
第2章密码锁的工作原理及结构设计方案 (8)
2.1目的 (8)
2.2内容 (8)
2.3设计任务‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥8
2.4方案选择及原理‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥8 第3章硬件系统设计 (9)
3.1所用到的相关芯片元件及其介绍‥‥‥‥‥‥‥‥‥‥‥‥‥‥9
3.1.1所用器件‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9
3.1.2主要元件及芯片介绍‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9
3.2硬件电路图 .............................. 错误!未定义书签。

3.2.1.8086和存储器连接‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥11
3.2.2 CPU与8255A连接‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥12
3.2.3 8255A的A口与键盘连接‥‥‥‥‥‥‥‥‥‥‥‥‥‥12
3.2.4 8255A的B、C口‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥13
3.3完整电路图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥14 第4章软件设计 (15)
4.1软件设计思路‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥15
4.2流程图 (16)
4.2.1主流程图 (16)
4.2.2子流程图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥17 第5章程序编码 (17)
第六章总结 (20)
6.1设计中的难点‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥20
6.1.1硬件‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥20
6.1.2软件‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥20
6.2收获及体会‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥21 参考文献 (22)
第1章绪论
1.1密码锁的发展现状
从历史上技术发展的规律看,在功能相似的情况下,简单可靠的东西总是替代繁杂的东西,而电子密码锁正是以简代繁的东西。

所以,它是大众化的实用性新产品,替代传统圆盘式机械密码锁和部分电子密码锁是应该的。

拨码盘式全机械密码锁适用于在保险柜、保险箱、文件柜、防磁防火柜、防盗门、银库门、仓库门、车门、民用门及机械卡阻机构上广泛使用。

它可以替代现有的传统圆盘式机械密码锁和部分电子密码锁。

为某些产品的更新提供了契机。

由于电子技术的风靡,很多产品以采用了电子结构为荣。

但在某些场所,电子产品并没有绝对的优势,反而是机械产品或机电混合产品更实用。

举两个例子:一是燃气灶的打火装置,早期是晶体管的点火器风靡一时,但它不耐潮湿,容易损坏,离不了电池。

时间一长,反而是靠手扭动旋钮储能的机械(压电)打火装置显露出它的优越性--简单实用,成为燃气灶点火器的主流。

二是汽车的后视镜及公共汽车(单厢)的后门窥视器,都曾有被电子监视器替代的危险,但人们发现:传统的后视镜及公共汽车驾驶员上方的普通后视镜,观察效果并不比电子监视器差,更简单实用。

1.2密码锁的发展前景
当今智能电子密码锁发展已经到了非常高的境界,由于电子元件特别是单片机应用在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。

在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。

发展前境是非常大的。

事实上,在传统的工业中,也能够找到比所谓的“新经济”更保险但是利润却毫不逊色的投资方向。

密码锁并不是一种频繁操作使用的产品,可以说是一种半静态的产品,采用机械方式更实用一些。

但电子方式的密码量大,人们主观感觉会安全一些。

电子密码锁,操作又比传统机械密码锁快得多,简单实用,可以象前述两例一样,有望成为高档次密码锁主流。

第2章密码锁的工作原理及结构设计方案
2.1目的
1、了解和掌握8086,8255,等接口芯片以及LED显示器的原理和功能;
2、能用这些接口芯片构建一个简单的系统控制对象,
3、掌握接口电路的综合设计与使用;
4、通过自己动手,进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。

2.2内容
密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同
显示00字样。

当输入密码错误时,发出错误警告声音,同时显示FF字样。

当六次误码输入的条件下,产生报警电平报警。

还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

2.3设计任务
1、选用8086和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

7、完成设计说明书(列出参考文献,所用器件型号)。

2.4方案选择及原理
这次的设计要求是在密码输入正确时输出开锁电平和显示“00”,密码错误时显示“FF”和蜂鸣器发出报警声音等,我们采用8255A的B口作为显示器的输出,c口为选管和接蜂鸣器,开锁及报警电平。

对于6次密码错误输入,刚开始用8253计数器,后来发觉可以直接用软件控制,线路简单,程序也很易实现。

用蜂鸣器发声次数来区分确认和警告声音,一声表示确认,三声表示警告。

键盘上的按键用SW-PB共12个,0-9为数字键,连接到8255A的A口对应二进制数,还有确认键和密码修改键,按下表示A口接收到低电平信号。

第3章硬件系统设计
3.1所用到的相关芯片元件及其介绍
3.1.1所用器件
CPU8086、并行接口8255A、存储器27c513、地址锁存器8282、74LS138、石英晶振,8284A、共阴极数码管、非门74LS04、蜂鸣器,电阻、开关等。

3.1.2主要器件简介
图9-1 CPU8086
8086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。

8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。

可寻址的内存空间为1MB.
图10-1并行接口8255
Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A 的通用性强,使用灵活,通过它CPU可直接与外设相连接。

图10-2地址锁存器74LS138
74LS138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。

利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。

若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

3.2硬件电路图
3.2.1、8086和存储器连接
存储器地址:0000H~3FFFH
图11-18086和存储器连接
3.2.2 CPU与8255A连接
图12-1
8255A地址分配:PA800H PB802H PC804H 控制寄存器806H
为了满足8255A的四个端口地址必须为偶地址这一要求,将8255A的A1、A0分别与8086系统地址总线的A2、A1相连,并且,CPU在对8255A的端口进行访问时,总是将地址中的A0设置为0.
3.2.3、8255A的A口与键盘连接
图12-2
共12个按键,0-9为数字键,每个十进制数对应PA3~PA0四位二进制数,确认键和修改密码键按下时,PA4和PA5为低电平。

3.2.4 8255A的B、C接口
图13-1
C口低四位用了低三位,都是输出高电平有效,高四位用了两位,输出低电平有效。

3.4完整电路图
图14-1
第4章软件设计
4.1软件设计思路
由于我的硬件设计部分主要器件是8086和8255,所以使得我的设计简单很多。

程序也主要解决如何利用8255来实现所要求的功能这个问题。

首先需要初始化8255,A口作为输入,B、C口作为输出。

一开始纵观设计内容及要求,可以大致知道需要三个子程序,修改密码程序、开锁程序、闭锁程序。

由A口输入的数据决定调用哪个子程序,而相关子程序需要具有所要求的功能,比如修改密码程序需要在修改成功后发出蜂鸣声,开锁程序需要输出开锁电平和显示00字样,等等。

为方便程序编写,采用输入数据逐位与正确密码相比的方法,只要有一位不相同即转入闭锁程序,而在闭锁程序中需要设置计数值,当转入闭锁程序六次也即输入错误密码六次则输出报警电平报警。

这样则能完成所需的所有功能。

程序设计思路基本如此。

按此思路画完流程图之后则进入程序设计阶段。

大框架已经确定下来,现在需要决定一些重要的细节。

比如如何安排计数值的位置,子程序的返回处,等等。

经过多次试探与检验,最终将这些细节确定下来。

最后将程序开始的初始化、退出程序补充完整,整体再检查一遍,查漏补缺,即可完成设计。

图16-1
修改密码子程序流程图 闭锁子程序流程图 开锁子程序流程图
第五章程序编码
5.1程序编码
DATAS SEGMENT
PASSWORD DB 0,0,0,0,0,0 ;设置初始密码 DATAS ENDS CODES SEGMENT
图17-3
图17-2
图17-1
ASSUME CS:CODES,DS:DATAS,ES:STACKS
START: MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV ES,AX
MOV AL,90H
OUT 63H,AL ;初始化8255,方式0,A口输入,B、C口输出
IN AL,60H ;读取A口数据
AND AL,20H ;是否需要修改密码
JNE CHANGE ;需要则调用修改密码子程序
MOV BX,5 ;设置错误密码输入最大次数
A1: MOV CX,5 ;设置密码个数
MOV SI,OFFSET PASSWORD
A2: IN AL,60H
CMP AL,BYTE PTR[SI] ;逐位比较,判断输入密码是否正确 JNE CLOSE ;只要有一位错误就调用闭锁子程序 INC SI
LOOP A2
CALL OPEN ;正确就调用开锁子程序
JMP ST
CHANGE PROC NEAR ;修改密码子程序
MOV CX,5 ;设置密码个数
MOV SI,OFFSET PASSWORD
A3: IN AL,60H
MOV [SI],AL
INC SI
LOOP A3 ;依次修改六位密码
A4: IN AL,60H
AND AL,10H ;判断有否按下确认键
JNE A4 ;没按下则继续等待
MOV AL,01H
OUT 62H,AL ;蜂鸣器响一下表示确认
RET
CHANGE ENDP
CLOSE PROC NEAR ;闭锁子程序
MOV AL,71H
OUT 61H,AL ;数码管输出“F”
MOV AL,10H
OUT 62H,AL ;选中L0输出“F”
MOV AL,71H
OUT 61H,AL
MOV AL,20H
OUT 62H,AL ;选中L1输出“F”
A5: MOV CX,3
MOV AL,01H
OUT 62H,AL
LOOP A5 ;蜂鸣器响四下表示错误警告
DEC BX
CMP BX,0 ;判断是否已经输入六次错误密码 JNE A1 ;不够六次则重新转到A1
MOV AL,04H
OUT 62H,AL ;已输入六次误码则产生报警电平报警
RET
CLOSE ENDP
OPEN PROC NEAR ;开锁子程序
A6: IN AL,60H
AND AL,10H
JNE A6 ;等待确认键按下
MOV AL,3F
OUT 61H,AL ;数码管输出“0”
MOV AL,10H
OUT 62H,AL ;选中L0输出“0”
MOV AL,3F
OUT 61H,AL
MOV AL,20H
OUT 62H,AL ;选中L1输出“0”
MOV AL,02H
OUT 62H,AL ;输出开锁电平,开通LED,显示电子锁开启
RET
OPEN ENDP
ST: MOV AX,4CH
INT 21H
CODES ENDS
END START
第六章总结
6.1设计中的难点
6.1.1硬件
本次设计总的来说还是比较简单的,但设计过程也遇到不少的问题。

在硬件方面,我们用的是protel99se软件画连接图,由于对这个软件不是很熟悉,在找元件和连线时花了不少的时间。

在画图过程中通过不断的修改,最终画出如上电路图。

6.1.2软件
首先是如何安排好几个子程序调用的顺序。

按照一般的逻辑思维,我将修改密码安排在第一个,如果用户刚开始即要修改密码可以很方便地实现,如果不用
则转入输入密码步骤。

而若输入错误密码则调用闭锁程序,否则调用开锁程序,这样则可初步安排好顺序。

其次是如何判断错误密码。

如果输入的是错误的密码,按照我们日常生活经验,是全部输入才提示出错,而我觉得这样太浪费时间,所以考虑将输入的密码逐位与正确密码相比较,只要有一位不符合则马上显示出错,这样实现起来也比较容易,只需要获取正确密码的偏移地址和输入的相应密码,然后用一个逻辑语句“与”将两者进行比较,再利用条件转移语句即可轻松实现。

最后是警告声音的处理问题。

因为已经要用到蜂鸣器来发出对新密码的确认音,故为了简化电路,我们决定也用蜂鸣器来发出错误警告声音,规定响一声表示确认新密码,响四声表示错误警告。

6.2收获及体会
硬件部分主要是设计原理图跟连接线路,这次主要是用到Protel这个软件,这个软件之前没接触过,所以在下载下来以后第一件事就是上网看教程,看了两三个教程之后大概就明白了它的大体操作,开始自己动手绘图。

在绘图之前,我先把软件仔细看了一下,并问了同伴一些端口问题,最后初步定下来一个图样,但是在实际绘图过程中发现太过复杂了,又重新制定了一个图样,也就是现在上交的这份。

因为是第一次用这个软件,里面很多功能都不懂,经常点出很多不懂得文件,最后不得不重新设计,导致绘图时间大大增加。

在多次实践后我终于较为熟练的掌握里面的工具了,后面的绘图过程也就相对来说比较轻松,出了自己绘制元件的时候有些麻烦,不过碰到不会的就上网百度或者问问同学,其实这个绘图过程还是挺有意思的。

线路图终于接好了,这里可以总结为三点:
第一,在绘图之前一定要先熟练掌握Protel这个软件;
第二,一点要把程序看懂,这样才可以合理布线路图;
第三,第三,在搜索元件的过程中可以大量的求助百度,里面有很多元件库表,这样可以大大缩短查找时间。

2、软件设计总结:
这次课程设计中我负责软件设计。

刚开始以为之前接触了不少程序,这次应该轻车熟路,但是真正开始设计的时候才发现实际需要解决的问题很多。

如何从大局上把握,如何平衡出现的一些冲突和矛盾,如何用简练、有条理的语言实现
所有功能,如何与硬件设计更好地结合起来,这些都是我要考虑的问题。

在参考了之前学过的程序,重温了接口芯片的知识之后,我有了初步的思路,然后在流程图的基础上添加一些需要的细节,于是就将程序写了出来。

如今真的体会到流程图对于程序设计的重要性,而且一个好的流程图也能帮助别人理解你的程序。

而在设计程序的过程中,我不仅对以前学过的汇编语言进行了重温和查漏补缺,而且对程序整体的把握和细节的处理能力得到了很大的提高。

毕竟看程序和写程序是有很大区别的,只有实践才能真正将汇编语言学到家。

最后看着自己写出来的程序,心里很有成就感!
参考文献:
《微型计算机原理及应用》华南理工大学出版社吴荣光吕钧星著《微型计算机原理及应用实验指导书》华南理工大学出版
22。

相关文档
最新文档