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

上传人:b****6 文档编号:4777040 上传时间:2022-12-08 格式:DOCX 页数:15 大小:123.60KB
下载 相关 举报
单片机电子密码锁的设计汇编语言.docx_第1页
第1页 / 共15页
单片机电子密码锁的设计汇编语言.docx_第2页
第2页 / 共15页
单片机电子密码锁的设计汇编语言.docx_第3页
第3页 / 共15页
单片机电子密码锁的设计汇编语言.docx_第4页
第4页 / 共15页
单片机电子密码锁的设计汇编语言.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

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

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

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

单片机电子密码锁的设计(汇编语言)

一、设计总说明

 

随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。

 

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

 

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

 

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

修改密码之前必须再次输入密码,在输入新密码时候需要二次确 以防止误操作。

 

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

密码输入用发光管显示,当连续3次输入错误 密码,系统声光报警。

 

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

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

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

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

 

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

 

(1)密码输入功能:

按下一个数字键,一个“-”就显示在最右边的数码 管上,同时将先前输入的所有“-”向左移动一位。

 

(2)密码清除功能:

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

 

(3)密码更改功能:

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

 

(4)开锁功能:

当按下开锁键,系统将输入与密码进行检查核对,如果 确锁打开,否则不打开。

 

主要的设计实施过程:

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

第二步,设计硬件电路。

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

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

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

 关键词:

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

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

密码输入用发光管显示,当连续3次输入错误 密码,系统声光报警。

四、 课题分析 

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

 

4.1矩阵键盘输入控制电路 

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

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

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

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

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

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

 

五、课题方案选择 

方案一:

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

 

方案二:

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

 

方案三:

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

 

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

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

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

六、程序部分 

ORG  1000H 

MOV R4,#08H 密码个数8个 

 MOV R0,#40H 密码暂存区  

MOV A,#00H 初始密码0,1,2,3,4,5  

GO:

 MOV @R0,A 

 INC R0 

 INC A  

DJNZ R4,GO 

SETB P3.0; 确认 

SETB P3.1 锁开  

SETB P3.2 错误 

SETB P3.4 报警  

MOV R0,#20H 

  MOV A,#03H 

  MOV @R0,A  ;8155初始化   

MOV R0,#79H   

MOV R7,#06H

 INIT:

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

 INC R0 

  DJNZ R7,INIT 

LOP:

 LCALL DISP   

LCALL KEYB 

  JB ACC.4,LOP  ;未按键返回   

MOV R0,#7EH   

MOV R7,#05H        

PUSH A 

SETD:

 DEC R0 

MOV A,@R0

INC R0 

MOV @R0,A

DEC R0 

DJNZ R7,SETD 

POP ACC 

MOV @R0,A 

MOV 7DH,7CH 

CJNE ,A,#0AH,LOP 

CLR P3.0 

ACALL COMP  

CJNE  R3,  #03H, LOP 

CLR  P3.4 

SJMP LOP

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

KEYB:

 LCALL BKS  ;按键处理子程序   

JNZ BLK1   

LCALL DISP  

SJMP KEYB 

BLK1:

 LCALL DISP   

LCALL DISP   

LCALL BKS   

JNZ BLK2   

LCALL DISP   

SJMP KEYB 

BLK2:

 MOV R2,#0FEH   

MOV R4,#0 

BLK4:

 MOV R1,#21H   

MOV A,R2   

MOVX @R1,A   

MOV R1,#23H   

MOVX A,@R1   

JB ACC.0,BL1   

MOV A,#0   

SJMP BLKP 

BL1:

  JB ACC.1,BL2   

MOV A,#08H   

SJMP BLKP 

BL2:

 JB ACC.2,BL3   

MOV A,#10H   

SJMP BLKP 

BL3:

 JB ACC.3,BL   

MOV A,#18H 

BLKP:

 ADD A,R4   

PUSH ACC

BLK3:

 LCALL DISP   

LCALL BKS   

JNZ BLK3   

POP ACC 

  CJNE A,#10H,PP 

PP:

  JNC PP1 

  MOV DPTR,#TBL   

MOVC A,@A+DPTR 

PP1:

 RET 

TBL:

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

DB 02H,0FH,03H,0EH,0CH,0DH 

BL:

   INC R4   

MOV A,R2

JNB ACC.7,BKLD   

RL A 

  MOV R2,A   

SJMP BLK4 

BLKD:

 SJMP KEYB

BKS:

 MOV R1,#21H   

MOV A,#0   

MOVX @R1,A   

MOV R1,#23H   

MOVX A,@R1   

CPL A 

  ANL A,#0FH   

RET 

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

DISP:

 MOV R0,#79H   

MOV R3,#20H 

BTL:

 MOV A,R3   

MOV R1,#21H   

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

MOV A,@R0 

 MOV DPTR,#TAB1 

  MOVC A,@A+DPTR 查表   

INC R1   

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

LCALL DELAY  ;延时   

INC R0   MOV A,R3 

  JB ACC.0,HERE  ;一轮显示完到HERE   

RR A 

  MOV R3,A 

  SJMP BTL   ;继续本轮显示 

HERE:

 RET 

TAB1:

 DB 0C0H,0F9,0A4H,0B0H,99H,92H,82H 共阳显示码   

DB 0F8H,80H,90H 

DELAY:

 MOV R6,#0FFH ;延时子程序 

 D1:

 MOV R5,#0FFH  

D2:

 DJNZ R5,D2   

DJNZ R6,D1       

MOV 30H,7EH       

MOV 31H,7DH       

MOV 32H,7CH 

MOV 33H,7BH 

MOV 34H,7AH 

MOV 35H,79H

RET 

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

COMP:

 MOV  R1,#40H        

MOV  A,@R1 

       CJNE  A,30H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,31H, MORE       

 INC R1 

MOV  A,@R1 

       CJNE  A,32H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,33H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,34H, MORE        

SJMP K 

MORE:

 INC R3        

CLR P3.2    

K:

 RET   

END   

ORG  1000H 

MOV R4,#08H 密码个数8个  

MOV R0,#40H 密码暂存区  

MOV A,#00H 初始密码0,1,2,3,4,5  

GO:

 MOV @R0,A  

INC R0  

INC A  

DJNZ R4,GO 

SETB P3.0; 确认 

SETB P3.1 锁开  

SETB P3.2 错误 

SETB P3.4 报警 

MOV R0,#20H 

  MOV A,#03H 

  MOV @R0,A  ;8155初始化   

MOV R0,#79H   

MOV R7,#06H 

INIT:

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

INC R0 

  DJNZ R7,INIT

LOP:

 LCALL DISP   

LCALL KEYB 

  JB ACC.4,LOP  ;未按键返回   

MOV R0,#7EH   

MOV R7,#05H        

PUSH A 

SETD:

 DEC R0 

MOV A,@R0 

INC R0 

MOV @R0,A 

DEC R0 

DJNZ R7,SETD 

POP ACC 

MOV @R0,A 

MOV 7DH,7CH 

CJNE ,A,#0AH,LOP 

CLR P3.0 

ACALL COMP  

CJNE  R3,  #03H, LOP 

CLR  P3.4 

SJMP LOP   

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

KEYB:

 LCALL BKS  ;按键处理子程序   

JNZ BLK1   

LCALL DISP   

SJMP KEYB 

BLK1:

 LCALL DISP   

LCALL DISP   

LCALL BKS   

JNZ BLK2   

LCALL DISP   

SJMP KEYB 

BLK2:

 MOV R2,#0FEH   

MOV R4,#0 

BLK4:

 MOV R1,#21H   

MOV A,R2   

MOVX @R1,A   

MOV R1,#23H   

MOVX A,@R1   

JB ACC.0,BL1   

MOV A,#0   

SJMP BLKP 

BL1:

  JB ACC.1,BL2 

MOV A,#08H   

SJMP BLKP 

BL2:

 JB ACC.2,BL3   

MOV A,#10H   

SJMP BLKP 

BL3:

 JB ACC.3,BL   

MOV A,#18H 

BLKP:

 ADD A,R4   

PUSH ACC 

BLK3:

 LCALL DISP   

LCALL BKS   

JNZ BLK3   

POP ACC 

  CJNE A,#10H,

PP PP:

  JNC PP1 

  MOV DPTR,#TBL   

MOVC A,@A+DPTR 

PP1:

 RET 

TBL:

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

DB 02H,0FH,03H,0EH,0CH,0DH 

BL:

 INC R4 

  MOV A,R2 

  JNB ACC.7,BKLD   

RL A 

  MOV R2,A   

SJMP BLK4 

BLKD:

 SJMP KEYB 

BKS:

 MOV R1,#21H   

MOV A,#0   

MOVX @R1,A  

MOV R1,#23H   

MOVX A,@R1   CPL A 

  ANL A,#0FH   

RET 

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

DISP:

 MOV R0,#79H   

MOV R3,#20H 

BTL:

 MOV A,R3 

  MOV R1,#21H   

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

MOV A,@R0 

  MOV DPTR,#TAB1 

 MOVC A,@A+DPTR 查表

INC R1   

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

LCALL DELAY  ;延时   

INC R0   

MOV A,R3 

  JB ACC.0,HERE  ;一轮显示完到HERE   

RR A 

  MOV R3,A 

  SJMP BTL   ;继续本轮显示 

HERE:

 RET 

TAB1:

 DB 0C0H,0F9,0A4H,0B0H,99H,92H,82H 共阳显示码   

DB 0F8H,80H,90H 

DELAY:

 MOV R6,#0FFH ;延时子程序 

 D1:

 MOV R5,#0FFH  

D2:

 DJNZ R5,D2   

DJNZ R6,D1        

MOV 30H,7EH        

MOV 31H,7DH        

MOV 32H,7CH 

MOV 33H,7BH 

MOV 34H,7AH 

MOV 35H,79H 

RET 

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

COMP:

 MOV  R1,#40H        

MOV  A,@R1 

      CJNE  A,30H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,31H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,32H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,33H, MORE        

INC R1 

MOV  A,@R1 

       CJNE  A,34H, MORE        

SJMP K 

MORE:

 INC R3 

       CLR P3.2        

K:

  RET     

END 

七、 系统调试 

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

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

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

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

 

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

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

 

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

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

 

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

MOV A,40H(密码地址) 

COMP1:

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

 

八、总结与体会 

 

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

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

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

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

 

九、参考文献 

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

北京:

清华大学出版社,2005 

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

 电子工业出版社, 2002 [3]谢自美编著.电子线路设计·实验·测试.华中理工大学出版社,2002 [4] 康华光主编.电子技术 基础(第四版).北京:

高等教育出版社,1999 

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

当前位置:首页 > 工程科技 > 电子电路

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

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