汇编语言单片机电子密码锁.docx

上传人:b****4 文档编号:6854508 上传时间:2023-05-10 格式:DOCX 页数:14 大小:22.25KB
下载 相关 举报
汇编语言单片机电子密码锁.docx_第1页
第1页 / 共14页
汇编语言单片机电子密码锁.docx_第2页
第2页 / 共14页
汇编语言单片机电子密码锁.docx_第3页
第3页 / 共14页
汇编语言单片机电子密码锁.docx_第4页
第4页 / 共14页
汇编语言单片机电子密码锁.docx_第5页
第5页 / 共14页
汇编语言单片机电子密码锁.docx_第6页
第6页 / 共14页
汇编语言单片机电子密码锁.docx_第7页
第7页 / 共14页
汇编语言单片机电子密码锁.docx_第8页
第8页 / 共14页
汇编语言单片机电子密码锁.docx_第9页
第9页 / 共14页
汇编语言单片机电子密码锁.docx_第10页
第10页 / 共14页
汇编语言单片机电子密码锁.docx_第11页
第11页 / 共14页
汇编语言单片机电子密码锁.docx_第12页
第12页 / 共14页
汇编语言单片机电子密码锁.docx_第13页
第13页 / 共14页
汇编语言单片机电子密码锁.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编语言单片机电子密码锁.docx

《汇编语言单片机电子密码锁.docx》由会员分享,可在线阅读,更多相关《汇编语言单片机电子密码锁.docx(14页珍藏版)》请在冰点文库上搜索。

汇编语言单片机电子密码锁.docx

汇编语言单片机电子密码锁

概述

本次基于8051单片机电子密码锁的设计,其主要具有如下功能:

(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能

改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确

以防止误操作。

(3)报警、锁定键盘功能。

密码输入用发光管显示,当连续3次输入错误

密码,系统声光报警。

电子密码锁的设计主要由三部分组成:

4×4矩阵键盘接口电路、密码锁

的控制电路、输出八段显示电路。

另外系统还有LED提示灯等。

密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:

(1)密码输入功能:

按下一个数字键,一个“-”就显示在最右边的数码

管上,同时将先前输入的所有“-”向左移动一位。

(2)密码清除功能:

当按下清除键时,清除前面输入的所有值,并清除所

有显示。

(3)密码更改功能:

将输入的值作为新的密码。

(4)开锁功能:

当按下开锁键,系统将输入与密码进行检查核对,如果

确锁打开,否则不打开。

主要的设计实施过程:

首先,选用8051单片机,以及选购其他电子元器件。

第二步,设计硬件电路。

第三步,编写单片机语言实现功能。

第四部,分别进行软件和硬件的调试。

最后,联合软、硬件调试整个系统,完成本次课程设计。

关键词:

4×4矩阵键盘;8051单片机;密码锁;密码二次确认

 

课题要求

本次课程设计,基于8051单片机电子密码锁的设计,利用4*4小键盘作为输入,LED作为显示。

当输入密码和设定的密码一致时,系统利用继电器输出解锁信号,其主要具有如下功能:

(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能

改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确

以防止误操作。

(3)报警、锁定键盘功能。

密码输入用发光管显示,当连续3次输入错误

密码,系统声光报警。

课题分析

电路主要包括矩阵键盘输入密码,外部密码验证,单片控制,原理方框图如下:

 

图一:

电子密码锁原理方框图

4.1矩阵键盘输入控制电路

设计方案是非编码键盘,每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。

行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。

通过不断读行线口线,或者中断方式触发键位扫描。

当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。

当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。

将每个行线和列线的组合值作成列表,每次就可以通过查表确定键位,以决定之后要进行的操作。

课题方案选择

方案一:

使用8051单片机,采用汇编语言编写程序,该程序语言功能强大,调试较为方便,具有很强的实用性。

方案二:

利用数字逻辑电路,运用电压比较器,555单稳态电路,计数器,JK触发器,UPS电源等实现对门的电子控制。

方案三:

使用8051单片机,利用基于单片机的C语言编写程序,通过KeilC51uVision2软件进行仿真模拟。

方案二基于数字电路,操作繁琐,会出现较多的器件故障,同时调试复杂,难于维护。

方案三该逻辑语言较为复杂,编写程序时也较为复杂,还需进行软件仿真模拟,设计复杂。

综上所述,使用方案一,设计较为简便,调试简单,硬件电路较少,易于维护。

程序部分

ORG1000H

MOVR4,#08H;密码个数8个

MOVR0,#40H;密码暂存区

MOVA,#00H;初始密码0,1,2,3,4,5

GO:

MOV@R0,A

INCR0

INCA

DJNZR4,GO

SETBP3.0;确认

SETBP3.1;锁开

SETBP3.2;错误

SETBP3.4;报警

MOVR0,#20H

MOVA,#03H

MOV@R0,A;8155初始化

MOVR0,#79H

MOVR7,#06H

INIT:

MOV@R0,#0;显示缓冲区清零

INCR0

DJNZR7,INIT

LOP:

LCALLDISP

LCALLKEYB

JBACC.4,LOP;未按键返回

MOVR0,#7EH

MOVR7,#05H

PUSHA

SETD:

DECR0

MOVA,@R0

INCR0

MOV@R0,A

DECR0

DJNZR7,SETD

POPACC

MOV@R0,A

MOV7DH,7CH

CJNE,A,#0AH,LOP

CLRP3.0

ACALLCOMP

CJNER3,#03H,LOP

CLRP3.4

SJMPLOP

-----------------------------------

KEYB:

LCALLBKS;按键处理子程序

JNZBLK1

LCALLDISP

SJMPKEYB

BLK1:

LCALLDISP

LCALLDISP

LCALLBKS

JNZBLK2

LCALLDISP

SJMPKEYB

BLK2:

MOVR2,#0FEH

MOVR4,#0

BLK4:

MOVR1,#21H

MOVA,R2

MOVX@R1,A

MOVR1,#23H

MOVXA,@R1

JBACC.0,BL1

MOVA,#0

SJMPBLKP

BL1:

JBACC.1,BL2

MOVA,#08H

SJMPBLKP

BL2:

JBACC.2,BL3

MOVA,#10H

SJMPBLKP

BL3:

JBACC.3,BL

MOVA,#18H

BLKP:

ADDA,R4

PUSHACC

BLK3:

LCALLDISP

LCALLBKS

JNZBLK3

POPACC

CJNEA,#10H,PP

PP:

JNCPP1

MOVDPTR,#TBL

MOVCA,@A+DPTR

PP1:

RET

TBL:

DB07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H

DB02H,0FH,03H,0EH,0CH,0DH

BL:

INCR4

MOVA,R2

JNBACC.7,BKLD

RLA

MOVR2,A

SJMPBLK4

BLKD:

SJMPKEYB

BKS:

MOVR1,#21H

MOVA,#0

MOVX@R1,A

MOVR1,#23H

MOVXA,@R1

CPLA

ANLA,#0FH

RET

---------------------------------

DISP:

MOVR0,#79H

MOVR3,#20H

BTL:

MOVA,R3

MOVR1,#21H

MOVX@R1,A;送位选码到PA口

MOVA,@R0

MOVDPTR,#TAB1

MOVCA,@A+DPTR;查表

INCR1

MOVX@R1,A;送显示码到PB口

LCALLDELAY;延时

INCR0

MOVA,R3

JBACC.0,HERE;一轮显示完到HERE

RRA

MOVR3,A

SJMPBTL;继续本轮显示

HERE:

RET

TAB1:

DB0C0H,0F9,0A4H,0B0H,99H,92H,82H;共阳显示码

DB0F8H,80H,90H

DELAY:

MOVR6,#0FFH;延时子程序

D1:

MOVR5,#0FFH

D2:

DJNZR5,D2

DJNZR6,D1

MOV30H,7EH

MOV31H,7DH

MOV32H,7CH

MOV33H,7BH

MOV34H,7AH

MOV35H,79H

RET

---------------------------------

COMP:

MOVR1,#40H

MOVA,@R1

CJNEA,30H,MORE

INCR1

MOVA,@R1

CJNEA,31H,MORE

INCR1

MOVA,@R1

CJNEA,32H,MORE

INCR1

MOVA,@R1

CJNEA,33H,MORE

INCR1

MOVA,@R1

CJNEA,34H,MORE

SJMPK

MORE:

INCR3

CLRP3.2

K:

RET

END

 

ORG1000H

MOVR4,#08H;密码个数8个

MOVR0,#40H;密码暂存区

MOVA,#00H;初始密码0,1,2,3,4,5

GO:

MOV@R0,A

INCR0

INCA

DJNZR4,GO

SETBP3.0;确认

SETBP3.1;锁开

SETBP3.2;错误

SETBP3.4;报警

MOVR0,#20H

MOVA,#03H

MOV@R0,A;8155初始化

MOVR0,#79H

MOVR7,#06H

INIT:

MOV@R0,#0;显示缓冲区清零

INCR0

DJNZR7,INIT

LOP:

LCALLDISP

LCALLKEYB

JBACC.4,LOP;未按键返回

MOVR0,#7EH

MOVR7,#05H

PUSHA

SETD:

DECR0

MOVA,@R0

INCR0

MOV@R0,A

DECR0

DJNZR7,SETD

POPACC

MOV@R0,A

MOV7DH,7CH

CJNE,A,#0AH,LOP

CLRP3.0

ACALLCOMP

CJNER3,#03H,LOP

CLRP3.4

SJMPLOP

-----------------------------------

KEYB:

LCALLBKS;按键处理子程序

JNZBLK1

LCALLDISP

SJMPKEYB

BLK1:

LCALLDISP

LCALLDISP

LCALLBKS

JNZBLK2

LCALLDISP

SJMPKEYB

BLK2:

MOVR2,#0FEH

MOVR4,#0

BLK4:

MOVR1,#21H

MOVA,R2

MOVX@R1,A

MOVR1,#23H

MOVXA,@R1

JBACC.0,BL1

MOVA,#0

SJMPBLKP

BL1:

JBACC.1,BL2

MOVA,#08H

SJMPBLKP

BL2:

JBACC.2,BL3

MOVA,#10H

SJMPBLKP

BL3:

JBACC.3,BL

MOVA,#18H

BLKP:

ADDA,R4

PUSHACC

BLK3:

LCALLDISP

LCALLBKS

JNZBLK3

POPACC

CJNEA,#10H,PP

PP:

JNCPP1

MOVDPTR,#TBL

MOVCA,@A+DPTR

PP1:

RET

TBL:

DB07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H

DB02H,0FH,03H,0EH,0CH,0DH

BL:

INCR4

MOVA,R2

JNBACC.7,BKLD

RLA

MOVR2,A

SJMPBLK4

BLKD:

SJMPKEYB

BKS:

MOVR1,#21H

MOVA,#0

MOVX@R1,A

MOVR1,#23H

MOVXA,@R1

CPLA

ANLA,#0FH

RET

---------------------------------

DISP:

MOVR0,#79H

MOVR3,#20H

BTL:

MOVA,R3

MOVR1,#21H

MOVX@R1,A;送位选码到PA口

MOVA,@R0

MOVDPTR,#TAB1

MOVCA,@A+DPTR;查表

INCR1

MOVX@R1,A;送显示码到PB口

LCALLDELAY;延时

INCR0

MOVA,R3

JBACC.0,HERE;一轮显示完到HERE

RRA

MOVR3,A

SJMPBTL;继续本轮显示

HERE:

RET

TAB1:

DB0C0H,0F9,0A4H,0B0H,99H,92H,82H;共阳显示码

DB0F8H,80H,90H

DELAY:

MOVR6,#0FFH;延时子程序

D1:

MOVR5,#0FFH

D2:

DJNZR5,D2

DJNZR6,D1

MOV30H,7EH

MOV31H,7DH

MOV32H,7CH

MOV33H,7BH

MOV34H,7AH

MOV35H,79H

RET

---------------------------------

COMP:

MOVR1,#40H

MOVA,@R1

CJNEA,30H,MORE

INCR1

MOVA,@R1

CJNEA,31H,MORE

INCR1

MOVA,@R1

CJNEA,32H,MORE

INCR1

MOVA,@R1

CJNEA,33H,MORE

INCR1

MOVA,@R1

CJNEA,34H,MORE

SJMPK

MORE:

INCR3

CLRP3.2

K:

RET

END

七、系统调试

电子密码锁主要由矩阵键盘,LED数码显示器,提示灯,单片机程序组成。

调试部分主要是数码显示和程序细节的调试。

数码管调试主要是看其能否完整显示6位数字。

不可以显示只能重新换过。

程序的调试是比较复杂的部分,它又可以分为比较部分和键盘部分。

首先在输入程序时,应该先输入键盘部分,然后单独运行键盘程序看键盘输入时数码管能否显示出与键盘输入的数字相对应的数字。

然后以键盘程序为主程序,把比较部分的程序作为子程序输入。

那是由于键盘程序中我们所输入的数字存在79H~7EH显示缓存中只能在键盘程序中被调用,如果把键盘程序作为子程序,那我们在比较部分中要掉用显示缓存中的数据便不可行。

比较部分时遇到最大的问题就是把密码部分与我们输入的数据作比较,而2个数据又不能直接比较,因此需要一个中间量,我们取A寄存器作为密码的存放位置,然而当我们输入

MOVA,40H(密码地址)

COMP1:

CJNEA,7EH,ONCE时,A中却不能出现40H单元中的数据,这样无论怎么比较都是没用的,永远都是错的。

八、总结与体会

以上为实习期间所设计的基于8051单片机电子密码锁电路,它经过多次修改和整理,以是一个比较不错的设计,可以满足人们的基本要求,但因为水平有限,此电路中也存在一定的问题,譬如说电路的密码不能遗忘,一旦遗忘,就很难打开,这可以通过增加电路解决,但过于复杂,本次设计未其中;

通过这两周的设计,我们获得巨大收获:

首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我们团结合作精神,能够充分利用图书馆去查阅资料,增加了许多课本以外的知识,能达到学以致用。

对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。

九、参考文献

[1]黄仁欣主编,马彪副主编.单片机原理及运用技术.

北京:

清华大学出版社,2005

[2]黄正瑾编著.CPLD系统设计技术入门与应用.北京:

电子工业出版社,2002

[3]谢自美编著.电子线路设计·实验·测试.华中理工大学出版社,2002

[4]康华光主编.电子技术基础(第四版).北京:

高等教育出版社,1999

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

当前位置:首页 > 解决方案 > 学习计划

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

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