多功能密码锁的设计
多功能密码锁的设计
⽬录
⼀、⽬的 (3)
⼆、内容 (3)
三、设计任务 (3)
四、⽅案选择及原理 (3)
五、所⽤器件 (3)
主要器件简介 (4)
六、原理图 (6)
1、8086和存储器连接 (6)
2、CPU与8255A连接 (6)
守门员训练
8255A的A⼝与键盘连接 (7)
4、8255A的B、C⼝ (7)
5、完整电路图 (8)
七、软件设计思路 (8)
⼋、流程图 (9)
1、主程序 (9)
2、⼦程序 (10)
公司注销办理九、程序代码 (10)
⼗、设计中的难点 (12)
⼗⼀、收获及体会 (13)
⼗⼆、参考⽂献 (14)
多功能密码锁
⼀、⽬的
1、了解和掌握8086,8255,等接⼝芯⽚以及LED显⽰器的原理和功能;
2、能⽤这些接⼝芯⽚构建⼀个简单的系统控制对象,
3、掌握接⼝电路的综合设计与使⽤;
4、通过⾃⼰动⼿,进⼀步了解计算机得⼯作原理,接⼝技术,提⾼计算机硬件,
软件综合应⽤能⼒,即对微机原理,接⼝技术,汇编语⾔程序设计进⾏综合训练。
⼆、内容
密码锁在输⼊密码正确的条件下输出开锁电平,控制电控锁开启,同
显⽰00字样。当输⼊密码错误时,发出错误警告声⾳,同时显⽰FF字样。当六次误码输⼊的条件下,产⽣报警电平报警。还可以实现对密码的修改,修改成功后,蜂鸣器发出确认⾳。
三、设计任务
1、选⽤8086和适当的存储器及接⼝芯⽚完成相应的功能。
2、⽤LED显⽰器显⽰电⼦锁的当前状态。
3、画出详细的硬件连接图。
4、给出程序设计思路、画出软件流程图。
5、给出地址分配表。
6、给出所有程序清单并加上必要注释。
7、完成设计说明书(列出参考⽂献,所⽤器件型号)。
四、⽅案选择及原理
这次的设计要求是在密码输⼊正确时输出开锁电平和显⽰“00”,密码错误时显⽰“FF”和蜂鸣器发出报警声⾳等,我们采⽤8255A的B⼝作为显⽰器的输出,c⼝为选管和接蜂鸣器,开锁及报警电平。对于6次密码错误输⼊,刚开始⽤8253计数器,后来发觉可以直接⽤软件控制,线路简单,程序也很易实现。⽤蜂鸣器发声次数来区分确认和警告声⾳,⼀声表⽰确认,三声表⽰警告。键盘上的按键⽤SW-
PB共12个,0-9为数字键,连接到8255A的A⼝对应⼆进制数,还有确认键和密码修改键,按下表⽰A⼝接收到低电平信号。
五、所⽤器件
CPU8086、并⾏接⼝8255A、存储器27c513、地址锁存器8282、74LS138、⽯英晶振,8284A、共阴极数码管、⾮门
74LS04、蜂鸣器,电阻、开关等。
主要器件简介
CPU8086
8086是Inter系列的16位微处理器,芯⽚上有2.9万个晶体管,采⽤HMOS⼯艺制造,⽤单⼀的+5V电源,时钟频率为
5MHz~10MHz。8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。可寻址的内存空间为1MB.
并⾏接⼝8255
Intel 8086/8088 系列的可编程外设接⼝电路(Programmable Peripheral Interface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输⼊/输出引脚、
可编程的通⽤并⾏输⼊/输出接⼝电路。它是⼀⽚使⽤单⼀+5V电源的40脚双列直插式⼤规模集成电路。8255A的通⽤性强,使⽤灵活,通过它CPU可直接与外设相连接。
地址锁存器74LS138
74LS138 为3 线-8 线译码器,共有54/74S138和54/74LS138 两种线路结构型式,其⼯作原理如下:当⼀个选通端(G1)为⾼电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的⼆进制编码在⼀个对应的输出端以低电平译出。利⽤G1、/(G2A)和/(G2B)可级联扩展成24 线译码器;若外接⼀个反相器还可级联扩展成32 线译码器。若将选通端中的⼀个作为数据输⼊端时,74LS138还可作数据分配器。
六、原理图
1、8086和存储器连接
存储器地址:0000H~3FFFH
2、CPU与8255A连接
8255A地址分配:PA800H PB802H PC804H 控制寄存器806H
为了满⾜8255A的四个端⼝地址必须为偶地址这⼀要求,将8255A的A1、A0分别与8086系统地址总线的A2、A1相连,并
且,CPU在对8255A的端⼝进⾏访问时,总是将地址中的A0设置为0.
3、8255A的A⼝与键盘连接
共12个按键,0-9为数字键,每个⼗进制数对应PA3~PA0四位⼆进制数,确认键和修改密码键按下时,PA4和PA5为低电平。
4、8255A的B、C⼝
初中化学实验报告
C⼝低四位⽤了低三位,都是输出⾼电平有效,⾼四位⽤了两位,输出低电平有效。
5、完整电路图
七、软件设计思路
由于我们的硬件设计部分没有⽤到8259和8253,主要器件是8086和8255,所以使得我们的设计简单很多。程序也主要解决如何利⽤8255来实现所要求的功能这个问题。⾸先需要初始化8255,A⼝作为输⼊,B、C⼝作为输出。⼀开始纵观设计内容及要求,可以⼤致知道需要三个⼦程序,修改密码程序、开锁程序、闭锁程序。由A⼝输⼊的数据决定调⽤哪个⼦程序,⽽相关⼦程序需要具有所要求的功能,⽐如修改密码程序需要在修改成功后发出蜂鸣声,开锁程序需要输出开锁电平和显⽰00字样,
等等。为⽅便程序编写,采⽤输⼊数据逐位与正确密码相⽐的⽅法,只要有⼀位不相同即转⼊闭锁程序,⽽在闭锁程序中需要设置计数值,当转⼊闭锁程序六次也即输⼊错误密码六次则输出报警电平报警。这样则能完成所需的所有功能。程序设计思路基本如此。按此思路画完流程图之后则进⼊程序设计阶段。⼤框架已经确定下来,现在需要决定⼀些重要的细节。⽐如如何安排计数值的位置,⼦程序的返回处,等等。经过多次试探与检验,最终将这些细节确定下来。最后将程序开始的初始化、退出程序补充完整,整体再检查⼀遍,查漏补缺,即可完成设计。
⼋、流程图主程序流程图
修改密码⼦程序流程图闭锁⼦程序流程图开锁⼦程序流程图
九、程序代码
DATAS SEGMENT
PASSWORD DB 0,0,0,0,0,0 ;设置初始密码
DATAS ENDS
CODES SEGMENT
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
⼗、设计中的难点
1.硬件
本次设计总的来说还是⽐较简单的,但设计过程也遇到不少的问题。在硬件⽅⾯,我们⽤的是protel99se软件画连接图,由于对这个软件不是很熟悉,在元件和连线时花了不少的时间。在画图过程中通过不断的修改,最终画出如上电路图。
2.软件
⾸先是如何安排好⼏个⼦程序调⽤的顺序。按照⼀般的逻辑思维,我将修改密码安排在第⼀个,如果⽤户刚开始即要修改密码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。