微机原理课程设计电子密码锁.docx

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

微机原理课程设计电子密码锁.docx

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

微机原理课程设计电子密码锁.docx

微机原理课程设计电子密码锁

一、设计目的

通过课程设计掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、8086微型计算机的应用方法、控制算法的设计及硬件设计方法。

复习并学习用软件编程控制硬件。

了解和掌握8086微机应用系统的软硬件设计过程、方法及实现,为以后设计实现8086微机应用系统打下良好的基础。

二、设计任务与要求

(1)密码锁在输入密码正确时控制电控锁开启,同时显示00字样;当输入密码错误时,发出错误警告,并显示FF字样;当3次误码输入时,产生报警;具有密码修改的功能。

(2)选用8086和适当的存储器及接口芯片完成相应的功能,用LED显示器显示电子锁的当前状态;画出详细的硬件连接图;给出程序设计思路、画出软件流程图;给出所有程序清单并加上必要注释;完成设计说明书(包括封面、目录、设计任务书、硬件设计思路、硬件原理图、软件设计思路、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。

三、整体功能描述

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

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

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

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

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

四、总体设计方案

根据本次设计的设计目的及设计要求,可有下列两种方案:

4.1方案一

在本次设计中,因为密码锁的基本功能使可以判断密码是否正确,以及完成对密码的修改,所以需要用到输入设备以及CPU的接口电路以及相关存储设备;因为有报警提示功能,所以要用到相关的输出设备以及接口电路。

因为要完成逻辑运算功能,所以必须要有CPU,CPU就选用我们最常用也最熟悉的8086,考虑到8255的端口兼具输入输出功能,灵活方便,所以选用一片8255作为输入输出设备与8086间的借口;采用0到9数字按键以及相关功能选择的输入;输出设备方面,采用两位数码管实现题目的状态提示要求,用一个蜂鸣器作为相关的警报,提示的声音输出。

另外,为简化编程,采用8259中断控制器来触发中断实现密码锁工作模式的转换,其中的密码输入及判断功能与密码修改功能分别用两个外部中断来触发中断服务程序来实现。

本设计的密码位数为6位。

4.2方案二

用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。

4.2.1使用设备

含有Windows汇编编译环境的MASM软件及Office2003软件的计算机一台。

4.2.2汇编程序编写

汇编程序编写,根据设计要求编写实现该功能的源程序代码。

4.2.3使用方法

在masm环境下运行本程序,按提示输入正确密码,则在屏幕上显示00字样,否则显示FF字样。

五、硬件设计

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

图1硬件连接框图

5.1键盘

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

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

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

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

键盘电路如下图2所示:

5.2中断控制

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

其中IR0与IR1中断开放,单片工作于非缓冲方式,电平触发,优先级是普通全嵌套方式。

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

电路连接如图3所示:

图2键盘连接图

5.3计时

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

电路如图3所示。

图3中断控制器连接图

5.4输入输出接口

输入输出接口采用可编程的8255A,8255A是Intel系列的并行接口芯片,常作为微机系统与外部设备接口。

在连接电路时8255的PC0、PC1接到数码管片选,电路连接如图3所示。

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

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

5.5.储存器及片选电路

存储器及片选电路采用一片2764存储器和一片74LS138,连接电路如图5所示:

图5片选及存储器电路

5.6整机电路图:

见附录一

六、软件设计

6.1程序流程图

图6程序流程图

 

6.2程序清单:

见附录二

七、设计总结与体会

通过本次课程设计,我对8255,8253,8259等芯片的各引脚的功能、名称、工作方式、内部结构有了更深层次的掌握,对这三种芯片的编程从陌生转向熟练。

通过这次的微机课程设计,对书本所学的知识有了进一步的巩固,并且对三种芯片各自的功能、工作方式有了明确性的区分。

在设计过程中遇到问题时,遇到含糊不清或者看不懂的地方及时翻阅相关课本知识。

有时看课本也没有结果时就和组员互相探讨。

在设计过程中,才发现自己遗漏许多课本的相关知识,对各芯片的功能及其工作方式掌握的不够清楚。

这说明在实践中才能真正的掌握从课本中所学的知识。

这次的课程设计让我为一年后的毕业设计打下了基础。

八、参考资料

九、附录

附录一:

电路基本连接图

附录二:

程序清单

(一)

DATASEGMENT;以下代码写入RAM

CODEINDB6DUP(?

);输入的密码保存的地址

CODECHDB6DUP(?

);修改后的密码的保存地址

CODEORDB0,0,0,0,0,0;初始密码

ORG01000H;下面的代码写入ROM

DTABLEDB80H,02H,10H,3FH,79H,71H,60H,5BH

DATAENDS

STACKSSEGMENT

STADB20DUP(?

STACKSENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKS

START:

MOVSI,OFFSETCODEIN

MOVDI,OFFSETCODEOR

MOVBP,OFFSETDTABLE

MOVAL,09H;(键盘输入中断)设定密码输入的中断向量(即IR0的中断向量)

MOVAH,25H

INT21H

PUSHBX

PUSHDS

MOVDX,SEGINPUT

MOVDS,DX

MOVDX,OFFSETINPUT

INT21H

MOVAL,09H;(键盘输入中断)设定密码修改的中断向量(即IR1的中断向量)

MOVAH,25H

INT21H

PUSHBX

PUSHDS

MOVDX,SEGCHANGE

MOVDS,DX

MOVDX,OFFSETCHANGE

INT21H

MOVAL,1BH;初始化8259

OUT10H,AL;单片工作,高电平有效

MOVAL,08H

OUT11H,AL

MOVAL,03H

OUT11H,AL

MOVAL,0FCH

OUT11H,AL;开放IR0,IR1

MOVAL,20H

OUT10H,AL

MOVAL,68H

OUT10H,AL

MOVAL,82H;初始化8255A口方式0输出,B口方式0输入,C口输出

OUT06H,AL

AA:

STI

MOVAL,00H

OUT04H,AL;输出低电平使数码管熄灭

INPUT:

;密码输入程序

CLI

MOVDL,00H

IN1:

CMPDL,06H;判断是否连续6次输入错误密码

JNZIN2;若不是这继续输入

MOVCX,03FFH;使蜂鸣器长鸣报警(通过延时实现)

R1:

MOVDH,3FH

MOVAL,02H

OUT00H,AL;输出高电平使蜂鸣器发声

R2:

DECDH

CMPDH,00H

JNZR2

LOOPR1

JMPIN4;报警完毕,跳至中断返回

IN2:

;输入密码

MOVAL,[BP+4]

OUT04H,AL;数码管显示‘--’提示输入密码

MOVBX,0H

MOVCX,03H;设置循环次数

IN3:

MOVBP,OFFSETDTABLE

MOVAL,[BP]

OUT04H,AL;数码管提示输入位数

CALLCCSCAN;调用键盘扫描程序

CMPAL,0BH;判断是否按下返回键

JZIN4

MOV[BX+SI],AL;保存输入密码

INCBX

INCBP

LOOPIN3

MOVBP,OFFSETDTABLE;判断密码是否正确

CLD

MOVCX,03

MOVSI,OFFSETCODEIN

MOVDI,OFFSETCODEOR

REPZCMPSB;判断密码是否正确

JNZWRO;若错误就报警

MOVAL,[BP+3]

OUT04H,AL;若正确数码管就显示‘00‘

MOVAL,04H

OUT00H,AL;且给LED高电平使其点亮

XORDL,AL

JMPIN4

WRO:

;出错报警部分

INCDL

MOVAL,[BP+5];数码管显示’FF‘提示错误

OUT04H,AL

MOVCX,03H;设定蜂鸣器响的次数

W1:

MOVAL,02H;使蜂鸣器发声

OUT00H,AL

W2:

;延时

MOVBL,3FH

DECBL

CMPBL,00H

JNZW2

XORAL,AL;输出低电平关蜂鸣器

OUT00H,AL

W3:

;延时

MOVBL,3FH

DECBL

CMPBL,00H

JNZW3

LOOPW1

JMPIN1;中断返回

IN4:

STI

IRET

CHANGE:

;密码修改程序

CLI

MOVDL,00H

INP1:

CMPDL,06H

JNZINP2

MOVCX,03FFH

RR1:

MOVDH,3FH

MOVAL,02H

OUT00H,AL

RR2:

DECDH

 

CMPDH,00H

JNZRR2

LOOPRR1

JMPC4

INP2:

MOVAL,[BP+4]

OUT04H,AL

MOVBX,0000H

MOVCX,03H

INP3:

MOVBP,OFFSETDTABLE

MOVAL,[BP]

OUT04H,AL

CALLCCSCAN

CMPAL,0BH

JZIN4

MOV[BX+SI],AL

INCBX

INCBP

LOOPINP3

MOVBP,OFFSETDTABLE

CLD

MOVCX,03

MOVSI,OFFSETCODEIN

MOVDI,OFFSETCODEOR

REPZCMPSB

JNZWRRO

MOVAL,[BP+3]

OUT04H,AL

XORDL,DL

JMPCHANGE

WRRO:

INCDL

MOVAL,[BP+5]

OUT04H,AL

MOVCX,03H

WW1:

MOVAL,02H

OUT00H,AL

WW2:

MOVBL,3FH

DECBL

CMPBL,00H

JNZWW2

XORAL,AL

OUT00H,AL

WW3:

MOVBL,3FH

DECBL

CMPBL,00H

JNZWW3

LOOPWW1

JMPINP1;当密码输入正确时,转入密码修改部分

CHAN:

;修改密码部分

MOVSI,OFFSETCODEIN

MOVDI,OFFSETCODECH

MOVAL,[BP+6];数码管提示第一次输入

OUT04H,AL

MOVCX,03FFH

Y1:

LOOPY1

MOVBP,OFFSETDTABLE

MOVBX,0H

MOVCX,03H

C1:

MOVAL,[BP]

OUT04H,AL

CALLCCSCAN

CMPAL,0BH

JZC4

MOV[BX+SI],AL;存放在输入密码缓冲区

INCBX

INCBP

LOOPC1

MOVBP,OFFSETDTABLE

MOVAL,[BP+7]

OUT04H,AL;数码管提示第二次输入

MOVCX,03FFH

Y2:

LOOPY2

MOVBP,OFFSETDTABLE

MOVBX,0H

MOVCX,03H

C2:

MOVAL,[BP]

OUT04H,AL

CALLCCSCAN

CMPAL,0BH

JZC4

MOV[BX+DI],AL;存放在修改密码缓冲区

INCBX

INCBP

LOOPC2

MOVBP,OFFSETDTABLE

REPZCMPSB

JNZCHAN;判断两次输入的密码是否一致

MOVDI,OFFSETCODEOR

MOVCX,03H

CLD

REPMOVSB;若是相等那就保存密码

MOVAL,02H;且蜂鸣器响一下提示修改成功

OUT00H,AL

MOVCX,03FFH

C3:

LOOPC3

XORAL,AL

OUT00H,AL;中断返回

C4:

STI

IRET

CCSCANPROCNEAR;键盘扫描子程序

MOVAL,00H

OUT00H,AL

INAL,02H

NOTAL

ANDAL,0FH

CMPAL,00H;判断是否有键按下

JNZK1

JMPCCSCAN

K1:

MOVCX,0EFFH;延时

LOOPK1

INAL,02H

CMPAL,00H

JZCCSCAN

MOVAH,60H;扫描第一列

K2:

MOVAL,AH

OUT00H,AL

INAL,02H

NOTAL

ANDAL,0FH

CMPAL,00H;判断是否有键按下

JNZK3

ORAH,01H

RORAH,1;扫描下一列

ANDAH,0FH

JMPK2

K3:

ADDAL,AH

RET

CCSCANENDP

CODEENDS

ENDSTART

程序清单

(二)利用DOS调用显示

DATASEGMENT

TABLEDB'888'

STRING1DB'Pleaseenterapassward:

',0DH,0AH,'$'

STRING2DB'Wrong!

',0DH,0AH,'$'

STRING3DB'OPEN!

','$'

STRING4DB'CLOSE!

','$'

BUFFERDB40,?

40DUP(0)

TAB_LENEQU26

DATAENDS

;

STACKSEGMENT

DB100DUP(0)

STACKENDS

;

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,STRING1

MOVAH,09H

INT21H

LEADX,BUFFER

MOVAH,0AH

INT21H

MOVSI,DX

INCSI

MOVBL,[SI]

MOVBH,0

INCSI

LEADI,TABLE

MOVCX,TAB_LEN

CMPCX,BX

JNCGOON

LEADX,STRING2

JMPEXIT

GOON:

CLD

MOVAL,[SI]

SCAN:

REPNZSCASB

JZMATCH

ERROR:

LEADX,STRING4

JMPEXIT

MATCH:

INCCX

CMPCX,BX

JCERROR

PUSHCX

PUSHSI

PUSHDI

MOVCX,BX

DECDI

REPZCMPSB

POPDI

POPSI

POPCX

JZFOUND

JCXZERROR

JMPSCAN

FOUND:

DECDI

LEADX,STRING3

EXIT:

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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