单片机课程设计-密码锁-附截图_第1页
单片机课程设计-密码锁-附截图_第2页
单片机课程设计-密码锁-附截图_第3页
单片机课程设计-密码锁-附截图_第4页
单片机课程设计-密码锁-附截图_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计一个具有特定功能的密码锁。该密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。; 40H-45H 按键缓冲区,用于存放键码值; 50H-55H 显示缓冲区,用于存放要显示的段码; 70H-75H 密码区保存区,用于存放密码; 30H 单个单元存放段码地址(即存放50-55); 31H 单个单元存放键码地址(即存放40-45); 21H.0位 判断是否按下了修改密码键K2; 21H.1位 修改密码时用于

2、判断是否正确输入了原密码; 21H.2位 产生初始P. 只要有键按下,则该位置1,否则置0来不断输出P. ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV P2,#01H ;用来产生P.0的位控 MOV R1,#70H ;密码区,初始密码为六个8T: MOV R1,#08H INC R1 CJNE R1,#76H,T ACALL PP AJMP FIRSTPP: MOV R0,#50H ;显示缓冲区首地址Q: MOV R0,#0FFH ;“灭”段码 INC R0 CJNE R0,#56H,Q ;让8个显示缓冲区初始值为“灭”状态,后面按一次

3、则赋一次值 MOV 30H,#4FH ;段码地址临时 MOV 31H,#3FH ;按键后存放键码的缓冲区首地址 ACALL DL RET PQ: MOV P0,#0CH ;输出P. ACALL DL RET;下面实现按键功能FIRST:ACALL DIR ACALL KEY ;调用键处理函数K1: JNB ACC.0,K2 ;K1键确定键 判0转移 MOV 30H,#4FH ;段码地址临时 MOV 31H,#3FH ;按键后存放键码的缓冲区首地址 JB 21H.0,KK ;按了K2改密键,再K1,则表示修改密码,FUN0改密函数 LJMP FUN1KK: CLR 21H.0 LJMP FUN0

4、K2: JNB ACC.1,K3 ;K2键 改密码,但必须在输入原密码之后修改,而且要修改两次才确定修改 ACALL PP ;调用函数让数码显示管灭 JNB 21H.1,FIRST ;如果21H.1为0,表示未输入原密码 SETB 21H.0 ACALL DIR AJMP FIRSTK3: JNB ACC.2,K4 ;K3 ACALL DIR INC 31H MOV R0,31H MOV R0,#03H AJMP FIRSTK4: JNB ACC.3,K5 ;K4 ACALL DIR INC 31H MOV R0,31H MOV R0,#04H AJMP FIRSTK5: JNB ACC.4,

5、K6 ;K5 ACALL DIR INC 31H MOV R0,31H MOV R0,#05H AJMP FIRSTK6: JNB ACC.5,K7 ;K6 ACALL DIR INC 31H MOV R0,31H MOV R0,#06H AJMP FIRSTK7: JNB ACC.6,K8 ;K7 ACALL DIR INC 31H MOV R0,31H MOV R0,#07H AJMP FIRST K8: JNB ACC.7,FIRST ;K8 ACALL DIR INC 31H MOV R0,31H MOV R0,#08H AJMP FIRSTKS: MOV A,P1 CPL A RET

6、KEY: ACALL KS JNZ AGAIN ;有键闭合则转向再次判断 AJMP EXTI ;无键闭合则转向结束AGAIN: ACALL DIR ;延时16毫秒 ACALL DIR ACALL KS JNZ LKP ;两次判断有键闭合,则转向按键键值判断 ;MOV A,20H AJMP EXTI ;第二次判断无键闭合,则转向结束LKP:SETB 21H.2 ;有键闭合 JB ACC.0,LK1 ;要排除K1和K2键,因为那是作为确认和修改密码的,不是密码值 JB ACC.1,LK1LK0:INC 30H ;有键闭合,显示缓冲区地址加1 MOV R0,30H MOV R0,#0BFH ;有键闭

7、合,则让显示缓冲区状态为横杠LK1:PUSH ACCLK: ACALL DIR ;判断是否键起 ACALL KSJNZ LKPOP ACCEXTI:JB 21H.2,TT ACALL PQTT: RET DIR: MOV R0,#50H ;50H为显示缓冲区首地址N1: MOV P2,#80H ;位控制 MOV P0 ,R0 ;输出段控码 ACALL DL ;延时1毫秒N2: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,R0 ;输出横杠线 ACALL DLN3: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,R0 ;输出横杠线 ACAL

8、L DL N4: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,R0 ;输出横杠线 ACALL DLN5: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,R0 ;输出横杠线 ACALL DLN6: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,R0 ;输出横杠线 ACALL DLN7: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,#0FFH ;输出横杠线 ACALL DLN8: INC R0 MOV A,P2 RR A MOV P2,A MOV P0,#0FFH ;输出横杠线 AC

9、ALL DLEXTI0:RET;延时一毫秒函数DL: MOV IE,#00H MOV TMOD,#10H ;工作方式1, MOV TH1,#0FCH ;延时程序 延时一毫秒 MOV TL1,#18H SETB TR1STEP1:JBC TF1,STEP2 AJMP STEP1STEP2:CLR TR1 RETFUN0: MOV R2,#06H MOV R0,#40H ;修改密码 把40H-45H里的内容放到70H-75H里面去 MOV R1,#70HH: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,H MOV R0,#50HZ: MOV R0,#0F9H ;

10、输出1表示密码修改正确 INC R0 CJNE R0,#56H,Z ACALL DIR AJMP FIRSTFUN1: MOV R0,#40H ;输入的键码 MOV R1,#70H ;密码区W: MOV A,R0 SUBB A,R1 JNZ NO_SAME ;非0就转移 不相等就转移 INC R0 INC R1 MOV A,R0 SUBB A,R1 JNZ NO_SAME INC R0 INC R1 MOV A,R0 SUBB A,R1 JNZ NO_SAME INC R0 INC R1 MOV A,R0 SUBB A,R1 JNZ NO_SAME INC R0 INC R1 MOV A,R0 SUBB A,R1 JNZ NO_SAME INC R0 INC R1 MOV A,R0 SUBB A,R1 JNZ NO_SAMESAME:MOV R0,#50HZ2: MOV R0,#0F9H ;输出1表示密码正确 INC R0 CJNE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论