logo资料库

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

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
一、设计总说明
二、 绪论
2.1         背景
2.2          电子锁
一、设计总说明 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC 卡辨 认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只 能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容 易机械损坏,IC 卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度 上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子 密码锁是这类电子防盗产品的主流。 本次基于 8051 单片机电子密码锁的设计,其主要具有如下功能: (1)设置 6 位密码,密码通过键盘输入,若密码正确,则将锁打开。 (2)密码可以由用户自己修改设定(只支持 6 位密码),锁打开后才能 改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确 以防止误操作。 (3)报警、锁定键盘功能。密码输入用发光管显示,当连续 3 次输入错误 密码,系统声光报警。 电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁 的控制电路、输出八段显示电路。另外系统还有 LED 提示灯等。 密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能: (1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码 管上,同时将先前输入的所有“-”向左移动一位。 (2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所 有显示。 (3)密码更改功能:将输入的值作为新的密码。 (4)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果 确锁打开,否则不打开。 主要的设计实施过程:首先,选用 8051 单片机,以及选购其他电子元器件。 第二步,设计硬件电路。第三步,编写单片机语言实现功能。第四部,分别进行 软件和硬件的调试。最后,联合软、硬件调试整个系统,完成本次课程设计。 关键词:4×4 矩阵键盘;8051 单片机;密码锁;密码二次确认 1
二、 绪论 2.1 背景 随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来 就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方 便,这也是制锁者长期以来研制的主题。目前国内,大部分人使用的还是传统的 机械锁。然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。所谓互开率, 是各种锁具的一个技术质量标准,也就是 1 把钥匙能开几把锁的比率。经国家工 商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互开率 居然超标 26 倍。 为何弹子锁的“互开率”会如此之高?据有关专家人士剖析,弹子锁质量好 坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件 的限制。此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏 锁的前提下将锁打开。机械锁的这些弊端为一种新型的锁---电子密码锁,提供 了发展的空间。 2.2 电子锁 电子锁是采取电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的 机电一体化锁具,相比传统的机械锁具,电子锁不使用金属钥匙,保密性、精度 都有很大提高。 电子锁的发明思路,源自古代发明的自动机械,例如古希腊数学家赫伦的液 压自动门,中国古代诸葛亮的木牛流马,它们以重力或蒸汽压力驱动,最广泛的 用途乃是用在古代墓道的地下机关。电子工业的诞生,使得以微小电量驱动机械 成为可能,于是有了电子锁一日千里的跃进。 三、课题要求 本次课程设计,基于 8051 单片机电子密码锁的设计,利用 4*4 小键盘作为输 入,LED 作为显示。当输入密码和设定的密码一致时,系统利用继电器输出解 锁信号,其主要具有如下功能: (1)设置 6 位密码,密码通过键盘输入,若密码正确,则将锁打开。 (2)密码可以由用户自己修改设定(只支持 6 位密码),锁打开后才能 改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确 以防止误操作。 (3)报警、锁定键盘功能。密码输入用发光管显示,当连续 3 次输入错误 密码,系统声光报警。 2
四、 课题分析 电路主要包括矩阵键盘输入密码,外部密码验证,单片控制,原理方框图如下: 图一:电子密码锁原理方框图 4.1 矩阵键盘输入控制电路 设计方案是非编码键盘,每条行线和列线都对应一条 I/O 口线,键位设在 行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要 确定接触的是哪两条线,即哪两个 I/O 口线,就可以确定哪一个键被触动。 行 线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。通过不断读行线 口线,或者中断方式触发键位扫描。 当发现有键按下,将列线逐一置低,其他 列线置高,读行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条 线的交点处的按钮被按下。 将每个行线和列线的组合值作成列表,每次就可以 通过查表确定键位,以决定之后要进行的操作。 五、课题方案选择 方案一:使用 8051 单片机,采用汇编语言编写程序,该程序语言功能强大, 调试较为方便,具有很强的实用性。 方案二:利用数字逻辑电路,运用电压比较器,555 单稳态电路,计数器, JK 触发器,UPS 电源等实现对门的电子控制。 方案三:使用 8051 单片机,利用基于单片机的 C 语言编写程序,通过 Keil C51 uVision2 软件进行仿真模拟。 方案二基于数字电路,操作繁琐,会出现较多的器件故障,同时调试复杂, 难于维护。方案三该逻辑语言较为复杂,编写程序时也较为复杂,还需进行软件 仿真模拟,设计复杂。综上所述,使用方案一,设计较为简便,调试简单,硬件 电路较少,易于维护。 3
六、程序部分 1000H ORG 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 ;8155 初始化 ;显示缓冲区清零 ;未按键返回 INIT: LOP: SETD: MOV A,#03H MOV @R0,A MOV R0,#79H MOV R7,#06H MOV @R0,#0 INC R0 DJNZ R7,INIT LCALL DISP LCALL KEYB JB ACC.4,LOP MOV R0,#7EH MOV R7,#05H PUSH A 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 CLR SJMP LOP R3, P3.4 #03H, LOP 4
;按键处理子程序 BLK2: BLK4: BLK1: ----------------------------------- KEYB: LCALL BKS JNZ BLK1 LCALL DISP SJMP KEYB LCALL DISP LCALL DISP LCALL BKS JNZ BLK2 LCALL DISP SJMP KEYB MOV R2,#0FEH MOV R4,#0 MOV R1,#21H MOV A,R2 MOVX @R1,A MOV R1,#23H MOVX A,@R1 JB ACC.0,BL1 MOV A,#0 SJMP BLKP JB ACC.1,BL2 MOV A,#08H SJMP BLKP JB ACC.2,BL3 MOV A,#10H SJMP BLKP JB ACC.3,BL MOV A,#18H BL1: BL2: BL3: BLKP: ADD A,R4 BLK3: PP: PP1: TBL: PUSH ACC LCALL DISP LCALL BKS JNZ BLK3 POP ACC CJNE A,#10H,PP JNC PP1 MOV DPTR,#TBL MOVC A,@A+DPTR RET DB 07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H DB 02H,0FH,03H,0EH,0CH,0DH BL: INC R4 MOV A,R2 5
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: BTL: MOV R0,#79H MOV R3,#20H MOV A,R3 MOV R1,#21H MOVX @R1,A MOV A,@R0 MOV DPTR,#TAB1 MOVC A,@A+DPTR ;查表 INC R1 MOVX @R1,A LCALL DELAY INC R0 MOV A,R3 JB ACC.0,HERE RR A MOV R3,A SJMP BTL ;送位选码到 PA 口 ;送显示码到 PB 口 ;延时 ;一轮显示完到 HERE ;继续本轮显示 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 6
RET --------------------------------- COMP: MOV R1,#40H A,@R1 MOV CJNE INC R1 A,30H, MORE MOV A,@R1 A,31H, MORE CJNE INC R1 MOV A,@R1 A,32H, MORE CJNE INC R1 MOV A,@R1 A,33H, MORE CJNE INC R1 MOV A,@R1 A,34H, MORE CJNE SJMP K MORE: INC R3 CLR P3.2 K: RET END 1000H ORG 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 MOV R0,#79H MOV R7,#06H MOV @R0,#0 INC R0 DJNZ R7,INIT INIT: ;8155 初始化 ;显示缓冲区清零 7
;未按键返回 LOP: LCALL DISP LCALL KEYB JB ACC.4,LOP MOV R0,#7EH MOV R7,#05H PUSH A DEC R0 SETD: 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 CLR SJMP LOP R3, P3.4 #03H, LOP ;按键处理子程序 BLK1: ----------------------------------- KEYB: LCALL BKS JNZ BLK1 LCALL DISP SJMP KEYB LCALL DISP LCALL DISP LCALL BKS JNZ BLK2 LCALL DISP SJMP KEYB MOV R2,#0FEH MOV R4,#0 MOV R1,#21H MOV A,R2 MOVX @R1,A MOV R1,#23H MOVX A,@R1 JB ACC.0,BL1 MOV A,#0 SJMP BLKP JB ACC.1,BL2 BL1: BLK2: BLK4: 8
分享到:
收藏