基于单片机的密码锁绝对可用.docx
- 文档编号:9405070
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:18
- 大小:96.13KB
基于单片机的密码锁绝对可用.docx
《基于单片机的密码锁绝对可用.docx》由会员分享,可在线阅读,更多相关《基于单片机的密码锁绝对可用.docx(18页珍藏版)》请在冰豆网上搜索。
基于单片机的密码锁绝对可用
单片机原理及系统课程设计
评语:
考勤(10)
守纪(10)
过程(40)
设计报告(30)
答辩(10)
总成绩(100)
专业:
电气工程及其自动化
班级:
电气1001班
姓名:
学号:
指导教师:
兰州交通大学自动化与电气工程学院
2013年3月7日
基于单片机的密码锁设计
摘要
随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤其突出,传统的机械锁由于其构造简单,安全性能低,无法满足人们的需求。
随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器,所以具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码控制的密码量少,安全性能差的缺点。
通过单片机编写密码程序,并用74LS245驱动的数码管来显示密码。
数码管可以时时显示当前输入的四位数字。
当输入密码正确时,对应的指示灯亮;当密码不正确时,发出声音报警。
关键词:
密码锁,单片机,报警
Abstract
Withtheimprovementofpeople'slivingstandards,ithasbecomeparticularlyprominentabouthowtoachieveAnti-theftfamily.Thetraditionalmechanicallockhassuchshortcomingassimplestructure,Lowsecurity,itcan'tmeetpeople'sdemands.Aselectronicproductsaredevelopingtowardsintelligenceandminimization,single-chipcomputers(SCM)havebecomethefirstchoiceforcontrollersinthedevelopmentofelectronicproducts.Therefore,theelectronicanti-theftalarmfunctionpasswordcontrolsystemandgraduallyreplacethetraditionalmechanicalpasswordcontrolsystem,Overcomethelowmechanicalpasswordcontrolpasswordandtheshortcomingsofpoorsafetyperformance,thepasswordprogramwrittenbySCM,and74ls245digitalcontroltodisplaythepassword。
Digitaltubecanalwaysdisplaythecurrentinputofsixdigits。
Whenyouenterthepasswordcorrectly,thecorrespondingindicatorlight;Whenthepasswordisincorrect,thesoundalarm。
Keywords:
Combinationlock,Single-chipmicrocomputer,alarm
1引言
1.1设计要求
此次单片机课程设计所使用的单片机是AT89C51,利用了键盘电路以及LED灯等器件实现了密码锁的设计,该密码锁主要需要实现如下功能和目标。
(1)输入密码功能:
键盘上敲击任意一个数字键,LED显示屏上就会出现一个“-”显示在LED显示屏的最右侧,每多敲击一个数字按键就会将之前敲入的所有“-”向左移一位。
(2)清除密码功能:
每当按下清除键“CLR”就会自动清除前一个输入的数值,这样便实现了修改密码的功能。
(3)开锁功能:
当密码输入完毕后,敲击“ENTER”键,系统将会将输入的密码与系统内的内置密码进行比较核对,若密码正确,则产生一个低电屏信号,表示密码正确。
若密码不正确则无此信号。
(4)报警和提示功能:
输入密码错误,或输入密码超出指定密码个数时,密码锁将会启动报警电路,产生报警。
密码正确则密码指示灯会起来。
(5)密码锁锁定功能:
当密码输入错误或密码不符合规则时引起报警后,密码锁将开启锁定功能,将密码锁锁定3秒钟,防止被恶意软件套取密码。
(6)系统内置密码修改功能,此功能可以通过修改程序中KEY中的值来改变系统的内置密码。
1.2设计方法
第一步,使用PROTEUS软件选用ATMEL公司的单片机AT89C51,以及需要用到的其他电子元器件,做好先期的准备。
第二步,使用PROTEUS设计硬件电路原理图,并完成电路的布线。
第三步,使用KeiluVision4软件编写单片机的汇编语言程序、仿真、软件调试。
第四步,使用PROTEUS软件导入汇编程序并进行模拟、调试。
最终完成本次毕业设计
2设计方案及原理
本密码锁的总体框图如下。
图1密码锁的总体框图
本密码锁设计由输入模块、显示模块、报警指示模块共三各模块组成,各模块的功能为。
(1)输入模块:
负责提供输入各数字,修改回删,完成回车的按键,已完成密码的输入和修改功能。
(2)显示模块:
其主要部件为一块LED屏,主要用来显示当前输入密码的个数,并用“-”表示。
(3)报警指示模块:
包括报警蜂鸣器和通路指示灯两部分组成,分别提供密码错误时的报警和密码正确是的通路提示灯。
3硬件设计
3.1键盘电路设计
使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
键盘接P3.0—P3.6其电路如图2所示。
图2密码锁的键盘电路图
3.2LED显示电路
显示电路的电路原理图如图3.2所示。
图3密码锁显示电路图
用P0.0—P0.7接74LS245的A0—A7八个端口,74LS245的输出口接LED的A—G和DP;而P2.0—P2.7的输出口接LED的1—8。
用软件实现数字和位控制。
3.3开锁报警电路
开锁报警电路如图4所示。
图4开锁报警电路
在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。
电路图如4所示。
当P1.0口输出低电时,二极管发光,表示开锁。
当89C51的P1.7口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。
4软件设计
程序设计流程图如图6所示。
图5程序设计流程图
电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
当输入密码连续输入错误时,系统报警。
密码的预设的值为"123456"共6位密码。
由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。
在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
5系统调试
本次调试采用Protues软件仿真。
首先设计电子密码锁的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。
依次按下1,2,3,4,5,6后,LED显示如图7所示。
图6电路调试结果
6总结
本次单片机课程设计历时三周终于完成,在制作课程设计的过程中也遇到了不少的困难和阻碍,期间少不了与同学们之间的互相交流,和与老师的探讨,到亏了老师和同学们的帮助,此次单片机课程设计才能如期完成,在老师同学们的帮助下我能够熟练掌握KeiluVision4软件编写汇编语言和制作HEX文件以及使用PROTEUS进行仿真,并掌握了一定的程序编写能力,和电路设计能力,总之,受益良多,在此感谢各位给过我帮助的老师和同学。
参考文献
[1]冯博琴,吴宁.微型计算机原理与接口技术[M].北京:
清华大学出版社,2010.
[2]周航慈.单片机应用程序设计技术[M].北京:
北京航空航天大学出版社,2010.
[3]王思明,张金敏,苟军年,张鑫,杨乔礼.单片机原理及应用系统设计[M].北京:
科学出版社,2012.
附录
附录一:
系统仿真电路
附录二:
源程序
;以下8字节存放8位数码管的段码
LED_BIT_1EQU30H
LED_BIT_2EQU31H
LED_BIT_3EQU32H
LED_BIT_4EQU33H
LED_BIT_5EQU34H
LED_BIT_6EQU35H
LED_BIT_7EQU36H
LED_BIT_8EQU37H
;以下6个字节存放初始密码
WORD_1EQU38H
WORD_2EQU39H
WORD_3EQU3AH
WORD_4EQU3BH
WORD_5EQU3CH
WORD_6EQU3DH
;以下6个字节存放用户输入的6位密码
KEY_1EQU3EH
KEY_2EQU3FH
KEY_3EQU40H
KEY_4EQU41H
KEY_5EQU42H
KEY_6EQU43H
CNT_AEQU44H
CNT_BEQU45H
KEY_CNTEQU46H;已输出的密码位数
LINEEQU47H;按键行号
ROWEQU48H;按键列号
VALEQU49H;键值
;以下为初始化程序,包括数据存储空间初始化,设置初始密码
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVCNT_A,#00H;程序初始化
MOVCNT_B,#00H
MOVKEY_CNT,#00H
MOVLINE,#00H
MOVROW,#00H
MOVVAL,#00H
SETBP1.0
MOVLED_BIT_1,#00H;段码存储区清零
MOVLED_BIT_2,#00H
MOVLED_BIT_3,#00H
MOVLED_BIT_4,#00H
MOVLED_BIT_5,#00H
MOVLED_BIT_6,#00H
MOVLED_BIT_7,#79H
MOVLED_BIT_8,#73H
MOVKEY_1,#00H;输入密码存储区清零
MOVKEY_2,#00H
MOVKEY_3,#00H
MOVKEY_4,#00H
MOVKEY_5,#00H
MOVKEY_6,#00H
MOVWORD_1,#6;设置初始密码为“123456”
MOVWORD_2,#5
MOVWORD_3,#4
MOVWORD_4,#3
MOVWORD_5,#2
MOVWORD_6,#1
MOVTMOD,#01H
MOVTH0,#(65536-700)/256
MOVTL0,#(65536-700)MOD256
MOVIE,#82H
A0:
LCALLDISP;以下为键盘扫描程序,计算键值并存入VAL
LSCAN:
MOVP3,#0F0H;扫描行码
L1:
JNBP3.0,L2
LCALLDLY_S
JNBP3.0,L2
MOVLINE,#00H
LJMPRSCAN
L2:
JNBP3.1,L3
LCALLDLY_S
JNBP3.1,L3
MOVLINE,#01H
LJMPRSCAN
L3:
JNBP3.2,L4
LCALLDLY_S
JNBP3.2,L4
MOVLINE,#02H
LJMPRSCAN
L4:
JNBP3.3,A0
LCALLDLY_S
JNBP3.3,A0
MOVLINE,#03H
RSCAN:
MOVP3,#0FH;扫描列码
C1:
JNBP3.4,C2
MOVROW,#00H
LJMPCALCU
C2:
JNBP3.5,C3
MOVROW,#01H
LJMPCALCU
C3:
JNBP3.6,C1
MOVROW,#02H
CALCU:
MOVA,LINE;计算键值
MOVB,#03H
MULAB
ADDA,ROW
MOVVAL,A;以下为按键处理程序,对不同的按键作出响应
CJNEA,#0AH,J1;是否为“CLR”键
MOVR1,KEY_CNT
CJNER1,#00H,J2
LCALLALARM_1
LJMPSTART
J2:
LCALLSHIFTR
DECKEY_CNT
W00:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W01
LJMPA0
W01:
MOVA,P3
CJNEA,#0F0H,W02
LJMPA0
W02:
SJMPW00
J1:
MOVA,VAL
CJNEA,#0BH,J3;判断是否为“ENTER”键
MOVR1,KEY_CNT
CJNER1,#06H,J4
MOVA,WORD_1;比较密码
CJNEA,3EH,J5
MOVA,WORD_2
CJNEA,3FH,J5
MOVA,WORD_3
CJNEA,40H,J5
MOVA,WORD_4
CJNEA,41H,J5
MOVA,WORD_5
CJNEA,42H,J5
MOVA,WORD_6
CJNEA,43H,J5
CLRP1.0
LCALLDLY_L
LJMPFINI
J5:
LCALLALARM_2
LJMPSTART
J4:
LCALLALARM_1
LJMPSTART
J3:
INCKEY_CNT;按下数字键
MOVA,KEY_CNT
CJNEA,#07H,K1
LCALLALARM_1
W10:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W11
LJMPSTART
W11:
MOVA,P3
CJNEA,#0F0H,W12
LJMPSTART
W12:
SJMPW10
LJMPSTART
LJMPSTART
K1:
LCALLSHIFTL
W20:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W21
LJMPA0
W21:
MOVA,P3
CJNEA,#0F0H,W22
LJMPA0
W22:
SJMPW20
LJMPA0
ALARM_1:
SETBTR0;操作错误报警
JBTR0,$
RET
ALARM_2:
SETBTR0;密码错误报警
JBTR0,$
LCALLDLY_L
RET;定时器中断服务程序,用于声音报警
INT_T0:
CPLP1.7
MOVTH0,#(65536-700)/256
MOVTL0,#(65536-700)MOD256
INCCNT_A
MOVR1,CNT_A
CJNER1,#30,RETUNE
MOVCNT_A,#00H
INCCNT_B
MOVR1,CNT_B
CJNER1,#20,RETUNE
MOVCNT_A,#00H
MOVCNT_B,#00H
CLRTR0
RETUNE:
RETI;段码,输入密码左移子程序
SHIFTL:
MOVLED_BIT_6,LED_BIT_5
MOVLED_BIT_5,LED_BIT_4
MOVLED_BIT_4,LED_BIT_3
MOVLED_BIT_3,LED_BIT_2
MOVLED_BIT_2,LED_BIT_1
MOVLED_BIT_1,#40H
MOVKEY_6,KEY_5
MOVKEY_5,KEY_4
MOVKEY_4,KEY_3
MOVKEY_3,KEY_2
MOVKEY_2,KEY_1
MOVKEY_1,VAL
RET;段码,输入密码右移子程序
SHIFTR:
MOVLED_BIT_1,LED_BIT_2
MOVLED_BIT_2,LED_BIT_3
MOVLED_BIT_3,LED_BIT_4
MOVLED_BIT_4,LED_BIT_5
MOVLED_BIT_5,LED_BIT_6
MOVLED_BIT_6,#00H
MOVKEY_1,KEY_2
MOVKEY_2,KEY_3
MOVKEY_3,KEY_4
MOVKEY_4,KEY_5
MOVKEY_5,KEY_6
MOVKEY_6,#00H
RET;以下为数码显示子程序
DISP:
CLRP2.7
MOVP0,LED_BIT_8
LCALLDLY_S
SETBP2.7
CLRP2.6
MOVP0,LED_BIT_7
LCALLDLY_S
SETBP2.6
CLRP2.5
MOVP0,LED_BIT_6
LCALLDLY_S
SETBP2.5
CLRP2.4
MOVP0,LED_BIT_5
LCALLDLY_S
SETBP2.4
CLRP2.3
MOVP0,LED_BIT_4
LCALLDLY_S
SETBP2.3
CLRP2.2
MOVP0,LED_BIT_3
LCALLDLY_S
SETBP2.2
CLRP2.1
MOVP0,LED_BIT_2
LCALLDLY_S
SETBP2.1
CLRP2.0
MOVP0,LED_BIT_1
LCALLDLY_S
SETBP2.0
RET
DLY_S:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
DLY_L:
MOVR5,#100
D2:
MOVR6,#100
D3:
MOVR7,#248
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
RET
FINI:
NOP
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 密码锁 绝对 可用