微型计算机原理及应用课程设计--多功能密码锁
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一.课设目的 (1)
二.课设内容
三.问题分析、设计思路及原因 (1)
四.电路设计及功能说明,硬件原理图 (2)
五.软件部分的程序流程图,算法和使用的编程技巧 (10)
六.汇编源程序清单 (11)
七.课设结果分析 (20)
八.收获、体会和建议 (20)
九.参考文献 (21)
一.课设目的
1.掌握8086,8255等芯片的工作原理和使用方法,了解各引脚的功能。
2.掌握各芯片之间的连接方法,设计多功能密码锁电路。
3.运用《微机原理及应用》中学习到的知识,编写汇编语言程序,通过对芯片的控制实现多功能密码锁的各种功能。
4.巩固本学期学习到的微机原理的相关知识,通过实践加强对知识的理解,同时提高自身思考问题的能力,培养对本课程的兴趣,提高动身能力。
二.课设内容
课程设计题目选取多功能密码锁,实现的功能为:
1.判断输入的密码是否正确
2.修改密码
3.密码输入错误时发错警告声音
4.当密码输入错误四次时发出警报
三.问题分析、设计思路及原因
1.问题分析
考虑到实现以上功能需要使用数码管、开锁电平、报警电平、蜂鸣器等输出,因此使用微机实验中用过的芯片8255A作为接口芯片,该芯片能比较好地满足这次课程设计的功能要求。而CPU则选择我们熟悉的8086。
2.设计思路及原因
密码的输入主要通过系统功能调用语句“MOV AH,1; INT 21H”(即带显示的单字符键盘输入功能)和循环语句实现,而密码输入是否正确则通过串比较指令来实现。程序中的提示语句可以使用系统功能调用语句“MOV AH,9; INT 21H”(即字符串输出)功能来实现。
对接口芯片,首先要完成芯片的初始化,使8255A芯片的A,B口作为输出端口,A口用于控制数码管在密码输入正确或错误的情况下的显示“00”或“FF”,B口用于控制提示音和相应的发光二极管。当输入错误时,B口输出03H(即00000011B),使对应的蜂鸣器发声,相应的发光二极管发光。而当四次输入密码错误时,B口输出0CH(即00001100B),使对应蜂鸣器发声,对应二极管发光。当密码输入正确时,B口输出30H(即00110000B),发出开锁提示音,并使对应二极管发光。
程序的设计思路总体来说就是“输入->各种逻辑运算->输出”,为了实现各种不同输入情况下的响应,本程序使用了比较多的转移指令,从而使结构变得复杂,因此采用了两个字程序,让程序的结构更加清晰。
四.电路设计及功能说明,硬件原理图
1.设计所使用的元件清单
PC机一台,8086处理器,8255A接口芯片一片,74LS138译码器一个,6264随机存储器一片,七段数码管两个,发声器及发光二极管各四个,非门一个
2.电路中用到的芯片介绍
(1)微处理器8086CPU
8086是Intel系列的16位微处理器,它采用HMOS工艺技术制造,芯片采用40系列线封装,单一的+5V电源,时钟频率为5~10MHz。
8086有16根数据线和20根地址线,可以处理8位和16位数据,寻址1MB 的储存单元和64KB的I/O端口。如图所示
(2)并行接口芯片8255A
8255A是Intel系列的并行接口芯片,常作为微机系统与外部设备接口。由于它是可编程的,可以通过软件来设置芯片的工作方式,因此,用它连接外部设备时,一般不需要在附加外部电路,给使用带来很大方便。如图所示
3.电路连接图
五.软件部分的流程图,算法和使用的编程技巧
1.主程序流程图
2.密码输入子程序流程图
3.RIGHT子程序流程图
六.汇编源程序清单
DATA SEGMENT
NUM DB ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’;设定初始的密码
INPUT DB 6 DUP (?) ;定义保存输入密码的数据串
MESS0 DB ‘please input the password’,0DH,0AH, ‘$’;定义各种提示字符串
MESS1 DB ‘Do you want to change zhe password? y/n’ ,0DH,0AH, ‘$’
MESS2 DB ‘please input a new password’ ,0DH,0AH, ‘$’
MESS3 DB ‘please insure the new password’ ,0DH,0AH, ‘$’
MESS4 DB ‘The password is different with the last one you input’ ,0DH,0AH, ‘$’
MESS5 DB ‘You have succeefully changed the password.’ ,0DH,0AH, ‘$’
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
STA DB 200 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC FAR
MOV AX ,DATA
MOV DS,AX
MOV ES,AX
MOV 63H,80H ;8255的初始化,A,B口同为输出,工作方式0
LOOP1:LEA DX,MESS0 ;提示输入密码
MOV AH,09H
INT 21H
LOOP2:CALL INPUT ;调用输入密码子程序
LEA SI,NUM
LEA DI,INP
MOV CX ,06H
CLD
REPZ CMPSB ;将输入密码同正确的密码进行串比较
MOV BL ,00H
JNZ WARN ;若不相同,则发出警告
CALL RIGHT ;若为正确的密码,则调用RIGHT子程序进行处理
JMP LOOP1
WARN:MOV AL,03H ;警告提示部分
OUT 61H,AL ;B口,发出密码错误警告,相应二极管亮MOV AL,71H
OUT 60H,AL ;A口连接的两个数码管显示“FF”
INC BL ; BL+1
CMP BL,04H
JE ALARM ;若连续输入四次错误密码,则转ALARM报警
JMP LOOP1 ;没有达到四次,则继续提示输入密码