微机原理多功能密码锁Word格式文档下载.docx

上传人:b****1 文档编号:1081674 上传时间:2023-04-30 格式:DOCX 页数:30 大小:1.42MB
下载 相关 举报
微机原理多功能密码锁Word格式文档下载.docx_第1页
第1页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第2页
第2页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第3页
第3页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第4页
第4页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第5页
第5页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第6页
第6页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第7页
第7页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第8页
第8页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第9页
第9页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第10页
第10页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第11页
第11页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第12页
第12页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第13页
第13页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第14页
第14页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第15页
第15页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第16页
第16页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第17页
第17页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第18页
第18页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第19页
第19页 / 共30页
微机原理多功能密码锁Word格式文档下载.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理多功能密码锁Word格式文档下载.docx

《微机原理多功能密码锁Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理多功能密码锁Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。

微机原理多功能密码锁Word格式文档下载.docx

根据实验系统的配置,可以通过使步进电机转动180度来模拟开锁和关锁动作。

二、设计要求

1、用LED显示器现实电子锁的当前状态;

2、画出详细的硬件连接图;

3、给出程序设计思路、画出软件流程图;

4、给出所有程序清单,并加上必要注释;

5、完成设计说明书(列出参考文献)。

三、方案选择及原理这次的设计要求是在密码输入正确时输出开锁电平和显示“0”,密码错误时显

示“C”和蜂鸣器发出报警声音等,我们采用8255A的A口低四位和C口的低三位组成4x3的矩阵键盘,同时A口的低六位为选管;

B口作为显示器的输出;

C口高四位的PC4口输出开锁电平,对于6次密码错误输入,PC5口输出报警电平。

用8253计数器产生警告音和确认音。

用蜂鸣器发声次数来区分确认和警告声音,一声表示确认,三声表示警告。

采用Proteus自带的键盘元件KEYPAD-PHO,NE0-9为数字键,#为确认/返回键和*为密码修改键,每次对键盘扫描,获得对应的键值。

四、使用器件

CPU8086、并行接口8255A、地址锁存器74LS273、4线-16线译码器74HCT154、石英晶振,可编程定时/计数器8253、共阴极数码管、各类逻辑门、蜂鸣器,电阻、键盘等。

五、主要器件简介

CPU8086

8086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz-10MH。

z8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。

可寻址的内存空间为1MB。

并行接口8255

Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255,具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

可编程定时/计数器8253

8253可编程定时器/计数器是8086微机系统常用的定时/计数器芯片,它具有定时与计数两大功能。

8253可编程定时器/计数器具有3个独立的16位计数器通过编程可选择六种工作方式,可选择二进制或十进制计数,最高计数速率可达2.6MHz。

所有的输入、输出电平都与TTL兼容。

地址锁存器74LS273是带清除端的D触发器,只有清除端为高电平时才具有锁存功能,锁存控制端为11脚CLK,在上升沿锁存。

8086的ALE端输出的锁存控制信号必须经反相器后才能连到74LS273的CLK端,以满足CLK在上升沿锁存的要求。

4线-16线译码器74HCT154

74HCT154为4线-16线译码器,将4个二进制编码输入译成16个彼独立的输出之一,并能将数据从一个输入线分配到16个输出的任意一个而实现解调功能,与大部分TTL和DTL电路完全兼容。

其工作原理如下:

这种单片4线—16线译码器非常适合用于高性能存储器的译码器。

当两个选通输入G1和G2为低时,它可将4个二进制编码的输入译成16个互相独立的输出之一。

实现解调功能的办法是:

用4个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。

当任何一个选通输入是高时,所有输出都为高。

六、原理图

1、8086和8255A连接

8255A地址分配:

PA:

200HPB:

202HPC:

204H控制寄存器:

206H为了满足8255A的四个端口地址必须为偶地址这一要求,将8255A的A1、A0分别与8086系统地址总线的A2、A1相连,并且,CPU在对8255A的端口进行访问时,总是将地址中的A0设置为0。

2、8255A的A口、C口与矩阵键盘连接

键盘元件KEYPAD-PHO,NE0-9为数字键,#为确认/返回键和*为密码修改键。

数字键1-9的键值为相应的数值,数字键0的键值为0BH,功能键*的键值为0AH,能键#的键值为0CH。

3、8255A的A口、B口与数码管的连接

8255A的B口输出数码管的段码,A口输出数码管的位码

4、8086与8253连接

8253地址分配:

计数器0:

400H计数器1:

402H计数器2:

404H控制寄存器:

406H为了满足8255A的四个端口地址必须为偶地址这一要求,将8255A的A1、A0分别与8086系统地址总线的A2、A1相连,并且,CPU在对8255A的端口进行访问时,总是将地址中的A0设置为0。

6、完整电路图

整个硬件设计,主要采用器件CPU8086、并行接口8255和可编程定时/计数器8253。

由并行接口8255控制键盘扫描、数码管显示、开锁电平以及报警电平,8255的工作方式是A口输出,B口输出,C口高四位输出,C口低四位输入。

通过键盘扫描获得对应的键值,通过对键值判断,判断按键是功能键或数字键,达到输入密码,修改密码,确认输入,返回等功能。

由可编程定时/计数器8253产生方波,控制蜂鸣器产生“滴”声。

8253工作在计数器0方式3,产生方波,通过延时,是蜂鸣器产生“滴”。

8253在每次调用发声子程序中初始化。

根据条件要求,程序首先需要实现的是输入密码。

为了区别输入密码和修改密码,当数码管显示都显示“—”,是输入密码。

当数码管全灭时,是修改密码。

当密码输入完且按下确认键,则输入数字与密码比对。

密码正确,则输出开锁电平(高电平有效)。

在此时,则可以通过功能键修改密码,密码修改成功发出“滴”声。

若不需要,按返回键返回。

若密码错误,则发出三声“滴”声,密码错误次数加1,并判断是否已经输入六次错误,是则输出报警电平(高电平有效),并置密码错误次数置0,等待返回键返回;

否则等待返回按键返回。

为了实现上述程序,首先要初始化8086、8255,接着进入键盘扫描。

每次有按键输入后,还应判断按键是否弹起,可以实现键盘消抖。

无论密码正确与否,均需要通过返回键才能返回,所以每次显示完后都要对键盘扫描,判断是否按下

返回键,有则退出键盘扫描,没有则继续扫描。

开锁电平以及报警电平均在返回时置低电平。

八、流程图

主程序流程图

修改密码子程序流程图

 

开锁子程序流程图

开始

输出开锁电平,显示“0”

键盘扫描

返回键是否按下?

修改键是否按下?

调用修改密码子程序

关开锁电平

结束

闭锁子程序流程图是

否是否已达到6次错误?

输出报警电平

8255片选端口始地址

8255的A口地址

8255的B口地址

九、程序代码

IOY0EQU0200H

MY8255_AEQUIOY0+00H*2

MY8255_BEQUIOY0+01H*2

MY8255_CEQUIOY0+02H*2MY8255_MODEEQUIOY0+03H*2IOY1EQU0400HMY8253_COUNT0EQUIOY1+00H*2MY8253_COUNT1EQUIOY1+01H*2MY8253_COUNT2EQUIOY1+02H*2MY8253_MODEEQUIOY1+03H*2

8255的C口地址

8255的控制寄存器地址

8253片选端口始地址;

8253计数器0端口地址;

8253计数器1端口地址;

8253计数器2端口地址

8253控制寄存器端口地址

DATASEGMENT

COUNT1DB00H

COUNT2DB00H;

错误密码次数

DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,3FH,39H,5EH,79H,71H,00H,40H;

键值表,0~F对应的7段数码管的

段位值

DTABLE[11]=3FH;

对应键值11,显示"

0"

DTABLE[16]=00H;

数码管熄灭

DATABLE[17]=04H;

显示数码管"

-"

STRINGDB01H,02H,03H,04H,05H,06H;

初始密码,密码内存空间

DATAENDS

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

START1:

MOVDX,MY8255_MODE

MOVAL,81H

OUTDX,AL

MOVDX,MY8255_C

MOVAL,00H

MOVSI,0200H

MOVAL,11H

MOV[SI],AL

MOV[SI+1],AL

MOV[SI+2],AL

MOV[SI+3],AL

MOV[SI+4],AL

MOV[SI+5],AL

MOVDI,0205H

初始化8255工作方式

方式0,A口、B口输出,C口高四位输出,C口低4位输入

开锁电平、报警电平置0

建立缓冲区,存放要显示的键值

先初始化键值为11H,显示“-

确认键

修改密码键,此处不用,返回键盘扫描

保存按键值;

按键未弹起则继续循环等待弹起

密码比对

读C口,用于判断是哪一列按键闭合

是否为第1列

不是则继续判断

设置第1行第1列的对应的键值;

是否为第2列

BEGIN:

CALLKEYPAD

CMPAL,0CH

JZRENZ

CMPAL,0AH

JZBEGIN

CALLPUTBUF

CALLKEYLS

JMPBEGIN

RENZ:

CALLKEYLS

CALLCRCMP

CMPCX,0FFH

JZSHOW1

JMPSHOW2SHOW1:

CALLSHOWC

JMPSTART1

SHOW2:

CALLSHOWO

JMPSTART1QUIT:

HLT

KEYPADPROCNEARBEGINk:

CALLDIS

CALLCLEAR

CALLCCSCAN

JNZGETKEY1GETKEY1:

CALLDIS

JNZGETKEY2

JMPBEGINkGETKEY2:

MOVCH,0FEH

MOVCL,00HCOLUM:

MOVAL,CH

MOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_C

INAL,DX

L1:

TESTAL,01H

JNZL2

MOVAL,01H

JMPKCODE

L2:

TESTAL,02H

JNZL3

密码错误

密码正确

键盘扫描程序

显示刷新

清屏

扫描按键

有键按下则跳置GETKEY1

再次扫描按键;

有键按下则跳置GETKEY2;

否则跳回开始继续循环;

选取一行

设置第1行第2列的对应的键值

是否为第3列

设置第1行第3列的对应的键值

确定按键值

检测是否扫描到第4行

是则跳回到开始处

没检测到第4行则准备检测下一列

扫描是否有按键闭合子程序

将4行全选通,

读C口

取出C口值的反值

按键是否弹起子程序

扫描按键,判断按键是否弹起

未弹起则继续循环等待弹起

清除数码管显示子程序

段位置0即可清除数码管显示

MOVAL,02H

L3:

TESTAL,04H

JNZNEXT

MOVAL,03H

JMPKCODEKCODE:

ADDAL,CLJMPQUITk

NEXT:

ADDCL,3

MOVAL,CHTESTAL,08H

JZKERR

ROLAL,1

MOVCH,AL

JMPCOLUMKERR:

JMPBEGINkQUITk:

RETKEYPADENDP

CCSCANPROCNEAR

MOVDX,MY8255_AOUTDX,AL

MOVDX,MY8255_CINAL,DXNOTALANDAL,0FH

RET

CCSCANENDP

KEYLSPROCNEAR

PUSHAX

KON:

JNZKON

POPAX

KEYLSENDP

CLEARPROCNEARMOVDX,MY8255_B

RETCLEARENDP

DISPROCNEAR

MOVDL,0DFH

MOVAL,DL

AGAIN:

PUSHDX

MOVDX,MY8255_A

MOVAL,[SI]

MOVBX,OFFSETDTABLEANDAX,00FFHADDBX,AX

MOVAL,[BX]

MOVDX,MY8255_B

CALLDALLY

INCSI

POPDX

TESTAL,01H

JZOUT1

RORAL,1

MOVDL,AL

JMPAGAIN

OUT1:

POPAX

DISENDP

显示键值子程序

以缓冲区存放的键值为键值表偏移

找到键值并显示

选通一个数码管

取出缓冲区中存放键值

将键值作为偏移和键值基地址相加

得到相应的键值

写入数码管A~Dp

取下一个键值

判断是否显示完?

显示完,返回

未显示完,跳回继续

PUTBUFPROCNEAR;

保存键值子程序

MOVSI,DI

DECDI

CMPDI,01FFH

JNZGOBACK

GOBACK:

RET

PUTBUFENDP

CRCMPPROCNEAR

密码比对子程序

MOVSI,0205H

MOVDI,OFFSETSTRING

MOVCX,0

MOVBL,[DI]

CMPAL,BL

JZNEXT1

JMPNEXT6NEXT1:

MOVSI,0204H

MOVBL,[DI+1]

JZNEXT2

JMPNEXT6NEXT2:

MOVSI,0203H

MOVBL,[DI+2]

JZNEXT3

JMPNEXT6NEXT3:

MOVSI,0202H

MOVBL,[DI+3]

JZNEXT4

JMPNEXT6NEXT4:

MOVSI,0201H

MOVBL,[DI+4]

JZNEXT5

JMPNEXT6NEXT5:

MOVSI,0200H

MOVBL,[DI+5]

CMPAL,BLJZQUITER

JMPNEXT6

密码错误,则CX=0CCH为密码错误的标志

NEXT6:

MOVCX,0CH

QUITER:

CRCMPENDP

输出开锁电平

返回键,退出开锁子程序

修改密码键

修改密码,数码管全灭,用于与输入

密码区别

开锁电平置0

SHOWOPROCNEARMOVSI,0200HMOVAL,00HMOV[SI],ALMOV[SI+1],ALMOVAL,10HMOV[SI+2],ALMOV[SI+3],ALMOV[SI+4],ALMOV[SI+5],ALMOVDI,0205H

MOVAL,010H

LOOP21:

JZLOOP22

JZLOOP23

JMPLOOP21LOOP22:

JMPQUITSHOLOOP23:

CALLKEYLS

MOVAL,10HMOV[SI],ALMOV[SI+1],ALMOVDI,0205H

CALLCHANGECRQUITSHO:

MOVDX,MY8255_CMOVAL,00HOUTDX,ALRETSHOWOENDP

开锁子程序

显示00

CHANGECRPROCNEAR;

修改密码子程序

CHG1:

CALLKEYPAD

JZCHG2CALLPUTBUFCALLPUTBUFCRCALLKEYLSJMPCHG1CHG2:

CALLKEYLSCALLRINGCALLDALLYSRET

CHANGECRENDP

PUTBUFCRPROCNEARXORBX,BXMOVBL,[COUNT1]MOVSTRING[BX],ALMOVBL,[COUNT1]INCBLMOV[COUNT1],BLCMPBL,06HJNZGOBACKCRMOVBL,0MOV[COUNT1],BLGOBACKCR:

RETPUTBUFCRENDP

SHOWCPROCNEARMOVSI,0200HMOVAL,0FHMOV[SI],ALMOV[SI+1],ALMOVAL,10HMOV[SI+2],ALMOV[SI+3],ALMOV[SI+4],ALMOV[SI+5],ALMOVDI,0205H

MOVDX,MY8255_AMOVAL,0CFHOUTDX,ALMOVDX,MY8255_BMOVAL,71HOUTDX,AL

确认则发出“滴”的确认音

保存修改后的密码子程序

放入密码内存空间STRING

闭锁子程序

显示CC

发出三声“滴”声

CALLRING

CALLDALLYS

MOVBL,[COUNT2]

INCBL

CMPBL,06H

JZLOOP31

MOV[COUNT2],BL

JMPLOOP32

LOOP31:

MOVDX,MY8255_C

MOVAL,020H

MOVBL,0

MOV[COUNT2],BLLOOP32:

JZLOOP33

JMPLOOP32LOOP33:

SHOWCENDP

RINGPROCNEAR

MOVDX,MY8253_MODE

MOVAL,36H

MOVAX,0020H

MOVDX,MY8253_COUNT0OUTDX,AL

MOVAL,AH

取出密码错误次数,并判断是否已经达到6次

已达到六次,则输出报警电平

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2