单片机设计电子密码锁.docx
《单片机设计电子密码锁.docx》由会员分享,可在线阅读,更多相关《单片机设计电子密码锁.docx(10页珍藏版)》请在冰豆网上搜索。
单片机设计电子密码锁
单片机课程设计
---电子密码锁
一.课题
1.电子密码锁:
随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。
为了更好地推广单片机在家电领域中的应用,本文介绍一种应用AT89C2051单片机设计的电子密码锁。
经实际制作表明该密码锁具有安全、实用、成本低等特点,符合住宅用锁的要求,具有一定的现实意义。
2.组员:
二.总体方案
1.设计方案论证与比较
方案一:
卡片式电子密码锁。
卡片式电子密码锁,它利用光电耦合的方式,将密码信息从打孔的形式做在卡片上,只要将卡片插入锁内,就能将锁打开。
如果卡片上密码信息不对,密码锁发出报警声。
这种方法是需要卡片做为钥匙,容易被盗和被仿制,安全性不高。
方案二:
磁卡式电子密码锁,具有功能强、故障率低、可靠性高和工作寿命长等优点,但这种方法的缺点是磁卡容易消磁,对用户造成不必要的麻烦。
方案三:
用STC89C51设计的多功能密码锁。
以单片机作为微控制器,可以实现基于以上优点,本系统选用该方案作为设计方案。
按键有效指示、输入错误、控制开锁、错误报警、密码修改等功能,工作稳定可靠,保密性高,实用性强。
2.电子密码锁的总体设计
图1电子密码锁的总体框图
电子密码锁是由以下几个部分组成的,其核心部分是8位STC89C51单片机作为整个系统的控制中心。
包括驱动电路模块,显示电路模块,报警模块和键盘模块。
三.硬件设计
1.电路设计
图2电路原理图
如图2所示是一种用STC89C51控制的电子密码锁的原理图。
其主要功能为:
可设定从1位到10位的密码,从键盘键入正确密码才可开锁。
输入三次错误密码电路就报警。
其主要工作原理为:
STC89C51的P1口为键盘扫描口,接着3行4列的键盘即“0、1、2…设置、”确定”,P3.0~P3.3接4盏LED灯显示系统状态等,P3.5接个小喇叭,当输入3次密码错误后报警,P3.5接个按钮,当输入正确密码开锁后,可以重新锁上。
XTAL1,XTAL2接晶振,用来充当驱动。
RST接的部分是用来复位的。
3.芯片选择
图3STC89C51引脚图
STC89C51可以代替AT89C51,功能更强,速度更快,寿命更长,价格更低。
外型:
40个引脚,双列直插DIP-40。
STC89C51可以完成ISP在线编程功能,而AT89C51则不能。
将AT89C51中的程序直接烧录到STC89C51中后,STC89C51就可以代替AT89C51直接工作(一般都不需要做任何改动即可正常工作)。
STC推出的系列51单片机芯片是全面兼容其它51单片机的,而51单片机是主流大军,每一个高等院校、普通学校、网站、业余单片机培训都是以51单片机为入门教材的,所以,教材最多,例子最多。
STC89C51内部有EEPROM,可以在程序中修改,断电不丢失。
还增加了两级中断优先级,等等。
四.软件设计
系统上电后首先完成初始化工作,然后按照事先设定好的程序执行。
本系己程序是基于单任务机制的。
这种机制的应用程序是一个无限的循环,在这循环的过程中调用相应的子程序函数来完成相应的操作。
这种机制具有简单直观,易于控制的优点。
在本系统中,软件结构应采用模块化设计方法,主要包括主程序,键盘程序,密码比较模块等等。
上电复位后,初始化各端口,标志位和有关寄存器,接着从P1口中读入密码,然后开始检测键盘是否有输入,如没有就不断检测,如果有输入就转到相应处理程序。
例如当密码锁通电后,由程序中设置一有电则表示电路上锁的LED灯亮,当有键按下时则表示按键有效的LED灯亮,等密码输入完毕,如密码锁正错,则开锁指示灯亮,按上锁键则重新锁住;若密码错误,则表示错误的灯亮,如果密码出现3次错误则蜂鸣器拉响警报并且按键锁住需按复位键还原。
1.键盘接口部分
系统开锁时密码的输入都需要由键盘输入。
同时采用发光二极管来进行提示操作,使用户操作更加直观和方便。
STC89C51单片机的I//O口线共有15根,能够满足系统设计的需要。
键盘接口电路设计系统中键盘的功能主要用于用户输入。
键盘需要设计11个按键,其中0~9数字键用于密码的输入。
功能键1个,为“确定”键,用于密码输入结束后确认。
键盘采用行列式设计,12个按键排成3×4矩阵。
设计中用单片机P1口的P1.0~P1.2接键盘的3根行线,P1.4~P1.7接4根列线。
原理图如图4。
图4电子密码锁的键盘模块
2.汇编程序
ORG00H
SJMPSTART
ORG0BH
START:
PASSWORD:
MOVR4,#08H;密码个数8个
MOVR0,#40H;密码暂存区
MOVA,#00H;初始密码0,1,2,3,4,5,6,7
PASSNEXT:
MOV@R0,A
INCR0
INCA
DJNZR4,PASSNEXT
MLOOP:
CLRP3.0;锁合
SETBP3.1;锁开
SETBP3.2;键有效
SETBP3.3;错误
SETBP3.4;报警
MOVR3,#03H;错误次数3次
GETPW:
MOVR4,#08H;密码个数
MOVR0,#30H;输入密码暂存区
AGAIN:
ACALLKEY;输入密码
CJNEA,#0AH,CONTIUE;按确认键无效
SJMPAGAIN
CONTIUE:
MOV@R0,A
ACALLDISPLED;按键有效显示
INCR0
DJNZR4,AGAIN
AGAIN1:
ACALLKEY;按确认键
CJNEA,#0AH,AGAIN1
ACALLDISPLED;按确认键有效显示
ACALLCOMP;比较密码
SETBP3.0;息锁合
CLRP3.1;开锁
WAIT:
MOVC,P3.5;是否重新上锁
JNCMLOOP;主循环
SJMPWAIT
COMP:
MOVR4,#08H
MOVR0,#30H
AGAI:
MOV50H,@R0;取输入密码到50H
MOVA,R0
ADDA,#010H;40H
MOVR0,A
MOVA,@R0;取密码
MOVB,A
MOVA,R0
SUBBA,#010H;30H
MOVR0,A
MOVA,B
CJNEA,50H,ONCEMORE;比较
INCR0
DJNZR4,AGAI
RET;正确返回
ONCEMORE:
ACALLDISPLED1
ACALLDISPLED2
CLRP3.3
CLRP3.4;输入错误
MOVR6,#0FFH
ACALLDELAY
MOVR6,#0FFH
ACALLDELAY
SETBP3.3
setbP3.4
DJNZR3,GETPW;3次错误输入
CLRP3.4;声报警
CLRP3.3;光报警
W:
SJMPW
DISPLED1:
CLRP3.3
MOVR6,#80H
ACALLDELAY
SETBP3.3
RET
DISPLED2:
CLRP3.4
MOVR6,#80H
ACALLDELAY
SETBP3.4
RET
DISPLED:
CLRP3.2
MOVR6,#80H
ACALLDELAY
SETBP3.2
RET
KEY:
MOVP1,#0F0H
MOVA,P1
CJNEA,#0F0H,k11
K10:
AJMPKEY
K11:
MOVR6,#02H
ACALLDELAY
MOVP1,#0F0H
MOVA,P1
CJNEA,0F0H,K12
SJMPK10
K12:
MOVB,A
MOVP1,#0FH
MOVA,P1
CJNEA,#0FH,K122
K121:
AJMPKEY
K122:
MOVR6,#02H
ACALLDELAY
MOVP1,#0FH
MOVA,P1
CJNEA,0FH,K13
AJMPK10
K13:
ORLA,B
MOVB,A
MOVR1,#11
MOVR2,#0
MOVDPTR,#K1TAB
K14:
MOVA,R2
MOVCA,@A+DPTR
CJNEA,B,K16
K15:
MOVA,R2
RET
K16:
INCR2
DJNZR1,K14
AJMPK10
K1TAB:
DB7eH,0beH,0deH,0eeH
DB7dH,0bdH,0ddH,0edH
DB7bH,0bbH,0dbH
DELAY:
MOVR7,#80H
AA1:
MOVR5,#0F8H
AA:
NOP
NOP
DJNZR5,AA
DJNZR6,AA1
RET
END
五.调试
板子终于焊完了,接下来就是调试了。
调试分为2个部分:
硬件,软件。
先是硬件部分的调试,我们一组先让系统通上电,然后用万用表测量两两间的电流和电阻情况。
看电路是否有短路,短路问题,幸运的是一切都没问题。
接下来就是软件调试了,通过下载器把程序烧录进去后,让系统通电看是否有理论上的那些功能。
一开始的情况是只有上锁的指示灯亮,其他一点反应都没,碰到此情况我们重新检测了下电路,没发现问题,然后问了下老师,老师叫我们把程序分解,一部分一部分慢慢调试,通过一下午的努力终于找到症结所在,原来是按键程序有误导致按键无效,找到问题后并改正,功夫不负有心人终于把程序调试完毕。
重新烧录下程序,系统通电后能完成理论上的大部分功能,令人惋惜的是在仿真上蜂鸣器能响,但实际情况则不能,而且该密码锁由于焊接的一些小毛病和布线上的缺陷使系统的抗干扰能力降低,为此比较惋惜。
六.心得体会
经过几天的努力我的电子密码锁课程设计终于完成了,不知道如何入手,觉得困难比较多,感觉有点累,不过最后还是做完了,有种如释重负的感觉。
在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。
在这次课程设计中,同学之间互相帮助,有什么不懂的大家在一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。
最后,课程设计中涉及到的电路图,本想用图片制作工具绘制,但还是水平有限,最后只能自己动手手工作图,就是效率太低也太累,以后要好好学习相关的图片制作。
特别是在调试程序过程中碰到的诸多问题,平时比较模糊的地方通过与同学的讨论和实践使我清晰很多。
在整个设计过程中懂得了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。
虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
七.参考文献
[1]李文石,电子锁的发展和设计综述,五金科技,3:
3-6,1993
[2]王磊,PLC控制的多功能磁卡式电子密码锁设计,河南大学学报,28(3):
58-61,1998
[3]宋文阁,李明颖,王学俊,单片机控制IC卡电子锁,大连轻工业学院学报18
(2):
111-115,1999
[4]曾咭昭,外遥控电子密码锁应用研究国外电子元器件,4:
7-8,2002
[5]祖龙起,刘仁杰,一种新型可编程密码锁大连轻工业学院学报21
(1):
41-43,2002
[6]汤荣生,李文石,触摸式电子锁的探头设计,五金科技,28(6):
12-14,2000
[7]宁爱民,应用AT89C2051单片机设计电子密码锁淮海工学院学报12
(2):
28-31,2003