微机原理课程设计++多功能密码锁.docx

上传人:b****8 文档编号:9523568 上传时间:2023-02-05 格式:DOCX 页数:19 大小:484.44KB
下载 相关 举报
微机原理课程设计++多功能密码锁.docx_第1页
第1页 / 共19页
微机原理课程设计++多功能密码锁.docx_第2页
第2页 / 共19页
微机原理课程设计++多功能密码锁.docx_第3页
第3页 / 共19页
微机原理课程设计++多功能密码锁.docx_第4页
第4页 / 共19页
微机原理课程设计++多功能密码锁.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理课程设计++多功能密码锁.docx

《微机原理课程设计++多功能密码锁.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计++多功能密码锁.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理课程设计++多功能密码锁.docx

微机原理课程设计++多功能密码锁

微机原理课程设计报告

 

学院:

专业:

班级:

姓名:

指导老师:

设计任务:

多功能密码锁

目录

一、设计目标

二、设计要求

三、整体功能描述

四、硬件设计功能模块

1.键盘

2.中断控制

3.计时

4.按键响应

5.报警

6.储存器及片选

7.整机电路

五、程序流程图

六、程序清单

七、设计总结

 

一、设计目标

1.密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同

显示O字样。

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

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

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

 

二、设计要求

1、选用8088和适当的存储器及接口芯片完成相应的功能。

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

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

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

5、给出地址分配表。

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

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

 

三、整体功能描述

本设计为多功能密码锁,使用存储器保存密码防止断电后密码丢失。

工作时按下按键蜂鸣器会发出声音提示按键有效并在数码管有“--”闪烁字样,若相隔1分钟无按键按下,则清零。

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

开锁后可按下“复位/修改密码键”实现修改密码功能的转入,之后先输入密码再输入同样的密码确认才可成功修改,修改成功后蜂鸣器会发出三声,数码管“O”闪烁三次提示修改密码成功。

当输入密码错误时,发出错误警告声音,同时显示FF字样,当输入密码错误次数累积够6次后,蜂鸣器会产生90秒的报警声响进行报警。

 

四、硬件设计功能模块 

本设计使用了8088、8259A、8255、8253、A28F512、74LS138、74LS148、地址锁存器、数码管以及74系列逻辑门、蜂鸣器、开关等芯片与元器件,实现了键盘输入、中断控制、计时、按键响应、开锁及报警等功能模块。

以下一一详述。

1.键盘

本设计8255A的A口与两片级联的74LS148组合接用于输入键盘,实现对输入键号的读入。

工作时,8086通过程序扫描键盘,当无键盘按下时,74LS148工作于无输入状态,GS口输出高电平,接到PA4作为识别有无按键按下信号,PA口输入为10H;当有按键输入时,74LS148输入口接到低电平,输入有效,经编码后键号转换为相应二进制编码送到PA口,成为能为cpu识别的代表键值的有效信号。

读入的按键信号经8086判断后,根据不同的功能,输出不同的按键响应,并转移到相对应的功能服务程序。

本设计总共用到11位按键,包括10位数码输入按键及一位“复位/修改密码”按键,电路设计总共可用按键有16位,供升级功能使用。

键盘电路如下所示:

图1键盘连接图

2.中断控制

用一片8259芯片作为中断控制接口电路。

可通过编程开中断,通过编程或者8253计时器关中断。

电路连接如下:

图2中断控制器连接图

3.计时

采用8253计时器控制中断的关断,实现单次输入密码超时则退出输入密码中断子程序、报警器响铃时间控制等功能。

电路如图2所示。

4.按键响应

8255PC0、PC1接到数码管片选、PC2接到蜂鸣器、PC3接到电子锁。

电路连接如图3所示:

图3按键响应、报警、开锁功能电路

5.报警功能

同时用8255A的B口控制数码管的显示,C口片PC0、PC1选数码管,PC2用来驱动SPEAK发出报警。

电路如图3所示。

6.储存器及片选电路:

图4片选及存储器电路

 

7.整机电路图:

五、软件流程图:

六、程序清单:

各芯片地址:

825930H

825560H

825320H

存储器2000H

DATASSEGMENT;程序初始化

DATA1DB'0','0','0','0','0','0'

DATA2DB6DUP(?

DATA3DB6DUP(?

DATA4DB6DUP(?

DATASENDS

STACKSSEGMENTPARASTACK'STACK'

STADB100DUP(?

TOPEQULENGTHSTA

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS,ES:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

MOVAX,STACKS

MOVSS,AX

MOVSP,TOP

MOVAX,0;初始化中断向量表

MOVES,AX

MOVBX,84H;IR1中断类型码21h*4=84h

MOVAX,OFFSETINPUT

MOVES:

[BX],AX

MOVAX,SEGINPUT;段地址

MOVES:

[BX+2],AX

MOVAL,90H;8255初始化,A口方式0,输入;B、c口方式0,输出

OUT63H,AL

MOVAL,36H;8253初始化,方式0

OUT23H,AL

MOVAL,13H;8259A初始化,ICW1

OUT30H,AL

MOVAL,20H;ICW2

OUT31H,AL

MOVAL,01;ICW4

OUT31H,AL

MOVAL,00;OCW1

OUT31H

MOVCX,06H;从RAM里读出密码到DATA2,密码为6位

MOVSI,2000H

MOVDI,OFFSETDATA2

LP1:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPLP1;读入密码结束

MOVBX,00;输入密码次数计数器初始值

RE:

MOVAL,03H

OUT62H,AL

MOVAL,71H;未开锁,B口输出显示FF

OUT61H,AL

MOVCX,06H

MOVSI,OFFSETDATA2;定义SI、DI

MOVDI,OFFSETDATA3

HLT

STI;停机,开中断,等待密码输入

CLD

INCBX;输入密码次数加1

REPECMPSB;将输入六位数码与密码比较

CMPCX,00

JEOPEN;相等则转到开锁

CMPBX,06H;输入错误且累积未够6次,重新输入

JNERE

MOVAL,07H;若错误次数累积够6次,触发蜂鸣器报警

OUT62H,AL

MOVAL,71H;B口输出FF

OUT61H,AL

MOVAL,2048H;报警铃响计时,90秒后关断蜂鸣器,保持显示FF

OUT20H,AL

MOVAL,03H

OUT62H,AL

JMPDOON;跳到结束

OPEN:

MOVAL,0BH;开锁,并显示00

OUT62,AL

MOVAL,3FH

OUT61H

C1:

INAL,60H

CALLD20MS;去抖动

CMPAL,00H

JEC1

CMPAL,0AH;扫描键盘,是否有修改密码建(10)输入

JNEDOON;没有则结束

C0:

MOVSI,OFFSETDATA2;重新定义SI、DI

MOVDI,OFFSETDATA3

MOVCX,06H

HLT

STI;开中断,输入修改程序

C2:

MOVAL,[DI]

MOV[SI],AL

INCSI

INCDI

LOOPC2;输入密码转移到data2

INAL,60H;扫描键盘,若有修改密码键输入则重新修改

CALLD20MS

CMPAL,0AH

JEC0

C3:

MOVSI,OFFSETDATA2;再次输入密码确认

MOVDI,OFFSETDATA3

MOVCX,06H

HLT

STI

REPECMPSB

CMPCX,00;若data2与data3不相等则从新输入

JNEC3

MOVCX,06H;若相等,则从DATA2写密码到RAM

MOVSI,2000H

MOVDI,OFFSETDATA2

C4:

MOVAL,[DI]

MOV[SI],AL

INCSI

INCDI

LOOPC4;转存密码结束

CALLRING2;蜂鸣三次,表示修改好了

INAL,60H;扫描键盘,若有修改密码键输入则重新修改

CALLD20MS

CMPAL,0AH

JEC0

JMPDOON;修改完毕,转到结束

;中断子程序

INPUT:

PUSHAX;保护现场

PUSHDS

PUSHBX

PUSHCX

PUSHDI

PUSHSI

MOVAL,1020H;8253开始一分钟输入限制计时

OUT20H,AL

IN1:

INAL,60H;读A口

CALLD20MS;去抖动

CMPAL,10H

JEIN1;若无按键按下,则重新扫描

CMPAL,0AH;若有按键按下,比较是否为复位键

JNEIN3

CALLRING1;为复位键则输出按键有效提示音并重新输入

MOVCX,06H

MOVDI,OFFSETDATA3

JMPIN1

IN3:

CALLRING1;若不是复位键,则把键值送到data3

MOV[DI],AL

INCDI

LOOPIN1;循环,扫描下一次按键,直到输入够6位密码

MOVAL,01

OUT30,AL

POPSI;中断结束恢复现场

POPDI

POPCX

POPBX

POPDS

POPAX

CLI;关中断

IRET;中断返回

DOON:

MOVAH,4CH

INT21H

;20ms延时子程序

D20MSPROCNEAR

PUSHCX

MOVCX,0080H

D1:

DECCX

LOOPD1;循环

POPCX

RET;返回

D20MSENDP

;输入按键响应子程序

RING1PROCNEAR

PUSHAX;保护AX\CX

PUSHCX

MOVCX,05H;设置提示音为0.1秒

MOVAL,07H;输出显示“--”字样

OUT62H,AL

MOVAL,40H

OUT61H,AL

R1:

CALLD20MS

LOOPR1

MOVAL,00H;数码管灭

OUT62H,AL

POPCX

POPAX

RET;返回

RING1ENDP

;修改确认铃声子程序

RING2PROCNEAR

PUSHAX

PUSHCX

MOVCX,03H;三次0.1秒的提示声

R2:

MOVAL,0FH;开铃声

OUT62H,AL

MOVAL,40H

OUT61H,AL

CALLD20MS;延时0.1秒

CALLD20MS

CALLD20MS

CALLD20MS

CALLD20MS

MOVAL,00H

OUT62H,AL;关铃声

CALLD20MS;延时0.1秒

CALLD20MS

CALLD20MS

CALLD20MS

CALLD20MS

LOOPR2;循环

MOVAL,0BH;恢复开锁状态

OUT62H,AL

MOVAL,3FH

OUT61H,AL

POPCX

POPAX

RET

RING1ENDP;返回

CODESENDS

ENDSTART;结束

七、设计总结

1、遇到的问题及解决方法

首先遇到的问题是键盘的设计,刚开始想用8279,但是对8279不够熟悉,研究了一下就放弃了,再而想到用8255的A、B口组合64位矩阵键盘或者用C口低4位与高4位组合的16位键盘,但最后还是使用了开关与编码器组合的形式组成16位键盘,简单明了,但是还没有解决双键同时按下的问题。

再而由于学8259的时候不够认真,所以开始写8259初始化的时候也显的力不从心,最终参考了书本和其他资料,还是写了出来。

设计中接触到的另一个问题是密码的储存的问题,刚开始没有想到cpu关机后密码消失的问题,后来加了一篇存储器实现了密码的保存。

遇到的其他问题都跟同学们讨论而得到了一定的解决。

2、课程设计总结

通过本次课程设计,我进一步了解8255,8253,8259等芯片的内部结构,熟悉各种基本工作模式和编程方法;

加深了对8086中断系统工作过程的了解;

学会综合应用多种微机接口与单元电路,构成满足要求的小型微机应用系统;

学会了CPU与存储器的连接方法,扩展存储空间的方法。

3、参考资料

《微型计算机原理及应用》吴荣光吕钧星编著,华南理工大学出版社

《微型计算机原理与汇编语言程序设计》赵国相等编著,科学出版社

《精通ProtelDXP2004电路设计》张睿赵艳华刘志刚编著,电子工业出版社

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

当前位置:首页 > 人文社科 > 军事政治

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

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