微机原理课程设计电子密码锁文档格式.docx

上传人:b****3 文档编号:17066461 上传时间:2022-11-28 格式:DOCX 页数:19 大小:280.97KB
下载 相关 举报
微机原理课程设计电子密码锁文档格式.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硬件连接框图

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

(键盘输入中断)设定密码修改的中断向量(即IR1的中断向量)

MOVDX,SEGCHANGE

MOVDX,OFFSETCHANGE

MOVAL,1BH;

初始化8259

OUT10H,AL;

单片工作,高电平有效

MOVAL,08H

OUT11H,AL

MOVAL,03H

MOVAL,0FCH

OUT11H,AL;

开放IR0,IR1

MOVAL,20H

OUT10H,AL

MOVAL,68H

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]

数码管显示‘--’提示输入密码

MOVBX,0H

MOVCX,03H;

设置循环次数

IN3:

MOVAL,[BP]

数码管提示输入位数

CALLCCSCAN;

调用键盘扫描程序

CMPAL,0BH;

判断是否按下返回键

JZIN4

MOV[BX+SI],AL;

保存输入密码

INCBX

INCBP

LOOPIN3

MOVBP,OFFSETDTABLE;

判断密码是否正确

CLD

MOVCX,03

REPZCMPSB;

JNZWRO;

假如错误就报警

MOVAL,[BP+3]

假如正确数码管就显示‘00‘

MOVAL,04H

且给LED高电平使其点亮

XORDL,AL

JMPIN4

WRO:

出错报警局部

INCDL

MOVAL,[BP+5];

数码管显示’FF‘提示错误

OUT04H,AL

设定蜂鸣器响的次数

W1:

MOVAL,02H;

使蜂鸣器发声

OUT00H,AL

W2:

延时

MOVBL,3FH

DECBL

CMPBL,00H

JNZW2

XORAL,AL;

输出低电平关蜂鸣器

W3:

JNZW3

LOOPW1

JMPIN1;

中断返回

IN4:

IRET

CHANGE:

密码修改程序

INP1:

CMPDL,06H

JNZINP2

MOVCX,03FFH

RR1:

RR2:

JNZRR2

LOOPRR1

JMPC4

INP2:

MOVBX,0000H

MOVCX,03H

INP3:

CALLCCSCAN

CMPAL,0BH

MOV[BX+SI],AL

LOOPINP3

REPZCMPSB

JNZWRRO

XORDL,DL

JMPCHANGE

WRRO:

MOVAL,[BP+5]

WW1:

WW2:

JNZWW2

XORAL,AL

WW3:

JNZWW3

LOOPWW1

JMPINP1;

当密码输入正确时,转入密码修改局部

CHAN:

修改密码局部

MOVDI,OFFSETCODECH

MOVAL,[BP+6];

数码管提示第一次输入

Y1:

LOOPY1

C1:

JZC4

存放在输入密码缓冲区

LOOPC1

MOVAL,[BP+7]

数码管提示第二次输入

Y2:

LOOPY2

C2:

MOV[BX+DI],AL;

存放在修改密码缓冲区

LOOPC2

JNZCHAN;

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

REPMOVSB;

假如是相等那就保存密码

且蜂鸣器响一下提示修改成功

C3:

LOOPC3

C4:

CCSCANPROCNEAR;

键盘扫描子程序

INAL,02H

NOTAL

ANDAL,0FH

CMPAL,00H;

判断是否有键按下

JNZK1

JMPCCSCAN

K1:

MOVCX,0EFFH;

LOOPK1

CMPAL,00H

JZCCSCAN

MOVAH,60H;

扫描第一列

K2:

MOVAL,AH

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!

STRING3DB'

OPEN!

'

STRING4DB'

CLOSE!

BUFFERDB40,?

40DUP(0)

TAB_LENEQU26

;

STACKSEGMENT

DB100DUP(0)

STACKENDS

ASSUMECS:

DATA,ES:

STACK

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,STRING1

MOVAH,09H

INT21H

LEADX,BUFFER

MOVAH,0AH

MOVSI,DX

INCSI

MOVBL,[SI]

MOVBH,0

LEADI,TABLE

MOVCX,TAB_LEN

CMPCX,BX

JNCGOON

LEADX,STRING2

JMPEXIT

GOON:

CLD

MOVAL,[SI]

SCAN:

REPNZSCASB

JZMATCH

ERROR:

LEADX,STRING4

MATCH:

INCCX

JCERROR

PUSHCX

PUSHSI

PUSHDI

MOVCX,BX

DECDI

REPZCMPSB

POPDI

POPSI

POPCX

JZFOUND

JCXZERROR

JMPSCAN

FOUND:

LEADX,STRING3

EXIT:

MOVAH,09H

MOVAH,4CH

ENDSTART

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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