1、Keywords: Combination lock, Single-chip microcomputer, alarm1 引言1.1设计要求此次单片机课程设计所使用的单片机是AT89C51,利用了键盘电路以及LED灯等器件实现了密码锁的设计,该密码锁主要需要实现如下功能和目标。(1) 输入密码功能:键盘上敲击任意一个数字键,LED显示屏上就会出现一个“”显示在LED显示屏的最右侧,每多敲击一个数字按键就会将之前敲入的所有“”向左移一位。(2) 清除密码功能:每当按下清除键“CLR”就会自动清除前一个输入的数值,这样便实现了修改密码的功能。(3) 开锁功能:当密码输入完毕后,敲击“ENTER”
2、键,系统将会将输入的密码与系统内的内置密码进行比较核对,若密码正确,则产生一个低电屏信号,表示密码正确。若密码不正确则无此信号。(4) 报警和提示功能:输入密码错误,或输入密码超出指定密码个数时,密码锁将会启动报警电路,产生报警。密码正确则密码指示灯会起来。(5) 密码锁锁定功能:当密码输入错误或密码不符合规则时引起报警后,密码锁将开启锁定功能,将密码锁锁定3秒钟,防止被恶意软件套取密码。(6) 系统内置密码修改功能,此功能可以通过修改程序中KEY中的值来改变系统的内置密码。1.2设计方法第一步,使用PROTEUS 软件选用 ATMEL公司的单片机 AT89C51,以及需要用到的其他电子元器件
3、,做好先期的准备。第二步,使用PROTEUS设计硬件电路原理图,并完成电路的布线。第三步,使用 Keil uVision4 软件编写单片机的汇编语言程序、仿真、软件调试。第四步,使用 PROTEUS 软件导入汇编程序并进行模拟、调试。最终完成本次毕业设计2 设计方案及原理本密码锁的总体框图如下。图1 密码锁的总体框图本密码锁设计由输入模块、显示模块、报警指示模块共三各模块组成,各模块的功能为。(1) 输入模块:负责提供输入各数字,修改回删,完成回车的按键,已完成密码的输入和修改功能。(2) 显示模块:其主要部件为一块LED屏,主要用来显示当前输入密码的个数,并用“”表示。(3) 报警指示模块:
4、包括报警蜂鸣器和通路指示灯两部分组成,分别提供密码错误时的报警和密码正确是的通路提示灯。3 硬件设计3.1键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。键盘接P3.0P3.6其电路如图2所示。图2 密码锁的键盘电路图3.2LED显示电路显示电路的电路原理图如图3.2所示。图3 密码锁显示电路图用P0.0P0.7接74LS245的A0A7八个端口,74LS245的输出口接LED的AG和DP;而P2.0P2.7的输出口接LED的18。用软件实现数字和位控制。3.3开锁报警电路开锁报警电路如图4所示。
5、图4 开锁报警电路 在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如4所示。当P1.0口输出低电时,二极管发光,表示开锁。当89C51的P1.7口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。4 软件设计程序设计流程图如图6所示。图5 程序设计流程图电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。当输入密码连续输入错误时,系统报警。密码的预设的值为123456共6位密码。由于采用两个按键来完成密码的输入,
6、那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。5 系统调试本次调试采用Protues软件仿真。首先设计电子密码锁的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。依次按下1,2,3,4,5,6后,LED显示如图7所示。图6 电路调试结果6 总结本次单片机课程设计历时三周终于完成,在制作课程设计的过程中也遇到了不少的困难和阻碍,期间少不了与同学们之间的互相交流,和与老师的探讨,到亏了老师和同学们
7、的帮助,此次单片机课程设计才能如期完成,在老师同学们的帮助下我能够熟练掌握Keil uVision4 软件编写汇编语言和制作HEX文件以及使用 PROTEUS进行仿真,并掌握了一定的程序编写能力,和电路设计能力,总之,受益良多,在此感谢各位给过我帮助的老师和同学。参考文献1 冯博琴,吴宁.微型计算机原理与接口技术M.北京:清华大学出版社,2010.2 周航慈.单片机应用程序设计技术M.北京:北京航空航天大学出版社,2010.3 王思明,张金敏,苟军年,张鑫,杨乔礼.单片机原理及应用系统设计M.北京:科学出版社,2012.附录附录一:系统仿真电路附录二:源程序;以下8字节存放8位数码管的段码LE
8、D_BIT_1 EQU 30HLED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35HLED_BIT_7 EQU 36HLED_BIT_8 EQU 37H以下6个字节存放初始密码WORD_1 EQU 38HWORD_2 EQU 39HWORD_3 EQU 3AHWORD_4 EQU 3BHWORD_5 EQU 3CHWORD_6 EQU 3DH以下6个字节存放用户输入的6位密码KEY_1 EQU 3EHKEY_2 EQU 3FHKEY_3 EQU 40HKEY_4 EQU 41HK
9、EY_5 EQU 42HKEY_6 EQU 43HCNT_A EQU 44HCNT_B EQU 45HKEY_CNT EQU 46H ;已输出的密码位数LINE EQU 47H ;按键行号ROW EQU 48H ;按键列号VAL EQU 49H ;键值以下为初始化程序,包括数据存储空间初始化,设置初始密码 ORG 00H SJMP START ORG 0BH LJMP INT_T0START:MOV CNT_A,#00H ;程序初始化 MOV CNT_B,#00H MOV KEY_CNT,#00H MOV LINE,#00H MOV ROW,#00H MOV VAL,#00H SETB P1.
10、0 MOV LED_BIT_1,#00H ;段码存储区清零 MOV LED_BIT_2,#00H MOV LED_BIT_3,#00H MOV LED_BIT_4,#00H MOV LED_BIT_5,#00H MOV LED_BIT_6,#00H MOV LED_BIT_7,#79H MOV LED_BIT_8,#73H MOV KEY_1,#00H ;输入密码存储区清零 MOV KEY_2,#00H MOV KEY_3,#00H MOV KEY_4,#00H MOV KEY_5,#00H MOV KEY_6,#00H MOV WORD_1,#6 ;设置初始密码为“123456” MOV W
11、ORD_2,#5 MOV WORD_3,#4 MOV WORD_4,#3 MOV WORD_5,#2 MOV WORD_6,#1 MOV TMOD,#01H MOV TH0,#(65536-700)/256 MOV TL0,#(65536-700)MOD 256 MOV IE,#82HA0: LCALL DISP ;以下为键盘扫描程序,计算键值并存入VALLSCAN: MOV P3,#0F0H ;扫描行码L1: JNB P3.0,L2 LCALL DLY_S LJMP RSCANL2: JNB P3.1,L3 MOV LINE,#01HL3: JNB P3.2,L4 MOV LINE,#02H
12、L4: JNB P3.3,A0 MOV LINE,#03HRSCAN: MOV P3,#0FH ;扫描列码C1: JNB P3.4,C2 LJMP CALCUC2: JNB P3.5,C3 MOV ROW,#01HC3: JNB P3.6,C1 MOV ROW,#02HCALCU: MOV A,LINE ;计算键值 MOV B,#03H MUL AB ADD A,ROW MOV VAL,A ;以下为按键处理程序,对不同的按键作出响应 CJNE A,#0AH,J1 ;是否为“CLR”键 MOV R1,KEY_CNT CJNE R1,#00H,J2 LCALL ALARM_1 LJMP START
13、J2: LCALL SHIFTR DEC KEY_CNTW00:等待按键抬起 MOV A,P3 CJNE A,#0FH,W01 LJMP A0W01: CJNE A,#0F0H,W02W02: SJMP W00J1: MOV A,VAL CJNE A,#0BH,J3 ;判断是否为“ENTER”键 CJNE R1,#06H,J4 MOV A,WORD_1 ;比较密码 CJNE A,3EH,J5 MOV A,WORD_2 CJNE A,3FH,J5 MOV A,WORD_3 CJNE A,40H,J5 MOV A,WORD_4 CJNE A,41H,J5 MOV A,WORD_5 CJNE A,4
14、2H,J5 MOV A,WORD_6 CJNE A,43H,J5 CLR P1.0 LCALL DLY_L LJMP FINIJ5: LCALL ALARM_2J4:J3: INC KEY_CNT ;按下数字键 MOV A,KEY_CNT CJNE A,#07H,K1W10: CJNE A,#0FH,W11W11: CJNE A,#0F0H,W12W12: SJMP W10K1: LCALL SHIFTLW20: CJNE A,#0FH,W21W21: CJNE A,#0F0H,W22W22: SJMP W20 ALARM_1:SETB TR0 ;操作错误报警 JB TR0,$ RETALAR
15、M_2:密码错误报警 LCALL DLY_L RET ;定时器中断服务程序,用于声音报警INT_T0: CPL P1.7 MOV TL0,#(65536-700)MOD 256 INC CNT_A MOV R1,CNT_A CJNE R1,#30,RETUNE MOV CNT_A,#00H INC CNT_B MOV R1,CNT_B CJNE R1,#20,RETUNE MOV CNT_B,#00H CLR TR0RETUNE:RETI ;段码,输入密码左移子程序SHIFTL:MOV LED_BIT_6,LED_BIT_5 MOV LED_BIT_5,LED_BIT_4 MOV LED_BI
16、T_4,LED_BIT_3 MOV LED_BIT_3,LED_BIT_2 MOV LED_BIT_2,LED_BIT_1 MOV LED_BIT_1,#40H MOV KEY_6,KEY_5 MOV KEY_5,KEY_4 MOV KEY_4,KEY_3 MOV KEY_3,KEY_2 MOV KEY_2,KEY_1 MOV KEY_1,VAL RET ;段码,输入密码右移子程序SHIFTR:MOV LED_BIT_1,LED_BIT_2 MOV LED_BIT_2,LED_BIT_3 MOV LED_BIT_3,LED_BIT_4 MOV LED_BIT_4,LED_BIT_5 MOV L
17、ED_BIT_5,LED_BIT_6 MOV KEY_1,KEY_2 MOV KEY_2,KEY_3 MOV KEY_3,KEY_4 MOV KEY_4,KEY_5 MOV KEY_5,KEY_6以下为数码显示子程序DISP: CLR P2.7 MOV P0,LED_BIT_8 SETB P2.7 CLR P2.6 MOV P0,LED_BIT_7 SETB P2.6 CLR P2.5 MOV P0,LED_BIT_6 SETB P2.5 CLR P2.4 MOV P0,LED_BIT_5 SETB P2.4 CLR P2.3 MOV P0,LED_BIT_4 SETB P2.3 CLR P2.2 MOV P0,LED_BIT_3 SETB P2.2 CLR P2.1 MOV P0,LED_BIT_2 SETB P2.1 CLR P2.0 MOV P0,LED_BIT_1 SETB P2.0DLY_S: MOV R6,#10D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1DLY_L: MOV R5,#100D2: MOV R6,#100D3: MOV R7,#248 DJNZ R6,D3 DJNZ R5,D2FINI: NOP END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1