单片机控制的智能密码锁设计概述.docx
《单片机控制的智能密码锁设计概述.docx》由会员分享,可在线阅读,更多相关《单片机控制的智能密码锁设计概述.docx(36页珍藏版)》请在冰豆网上搜索。
单片机控制的智能密码锁设计概述
单片机控制的智能密码锁的设计
摘要:
本文从经济实用的角度出发,以AT89C51单片机为核心,结合外围的键盘输入、数码管显示、报警、开锁等电路模块,设计了一款具有自动报警功能的电子密码锁。
该系统能实现密码的输入、清除、比较,密码正确开锁,密码错误次数超次报警等功能。
该系统具有设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有比较强的实用性。
关键词:
电子密码锁;矩阵键盘;报警;数码管显示
Single-chipmicrocomputercontrolofintelligent electronic combination lock design
Abstract:
This article from economical practical angle embarking, take AT89C51 the monolithic integrated circuit as a core, unifies electric circuit modules and so on periphery keyboard entry, nixietube demonstration, warning, unblanking, designed one section to have the auto-alarm function electronic combination lock. This system can realize the password input, the elimination, the comparison, the password unlocks correctly, functions and so on password wrong number of times ultra warning. This system has the design to be simple, easy to develop, the cost is low, safe reliable, characteristics and so on ease of operation, may apply the place which in the housing, the office safety deposit box and the filing cabinet and so on needs to guard against theft, has the quite strong usability.
Keywords:
Electronic combination lock; Matrix keyboard; Warning; Nixietube demonstration
目录
1概述1
2总体方案设计2
2.1单片机系统2
2.2矩阵键盘3
2.3LED显示3
2.4报警系统3
3硬件电路设计3
3.1键盘电路设计3
3.2LED显示电路设计4
3.3报警电路设计5
3.4晶振振荡电路设计5
3.5复位电路设计6
4软件设计6
4.1软件总体设计6
4.2各子程序的设计7
5调试及分析11
5.1软件介绍12
5.1.1KEIL简介12
5.1.2Proteus介绍 12
5.2软件调试12
6总结13
参考文献14
致谢15
附录16
1概述
随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全、可靠的技术实现大门的管理。
在我国密码锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。
但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。
国内的不少企业也引进了世界上先进的技术,发展前景非常可观。
希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。
1.1设计任务
设计一个8位数字密码锁,密码内容可通过开关进行设置 并且设置8位输入按键,按照设计要求利用仿真软件画出电路图进行仿真,最后分析出现误差的原因以及影响因素。
1.2设计要求
1、系统通过4*4的矩阵键盘输入或设定开锁密码
2、可以通过LCD查看已输入的字符个数(显示*)
3、用户可以自行设定和修改密码。
4、按每个密码键时都有声音提示。
5、开锁密码错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。
6、键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。
7、电磁锁的电磁线圈每次充电5秒,然后恢复初态。
8、密码设定完毕后要有2秒的提示音。
2总体方案设计
该系统主要以MCS-51单片机为核心,结合具体的电路,组合成一个智能密码锁系统,该系统的其他电路主要包括:
密码输入模块、密码检测系统、声光显示电路、、数码管显示电路、晶振复位电路八个主要模块。
如下图所示:
图2-1系统总设计图
2.1单片机系统
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。
它由单片机、时钟电路、复位电路等组成。
为了简化电路、降低成本、提高可靠性,本系统采用STC90C51单片机作为主控制器。
利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,进行智能密码锁的设计。
此次课题用单片机P2口与键盘相连,作输入口,P0口与LED显示器相连,作显示。
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:
内部振荡和外部振荡。
由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。
2.2矩阵键盘
此次毕业设计采用矩阵式按键,用于密码输入模块。
4*4矩阵键盘,4行4列分别与P2口相连,采用行列反转扫描法。
设有“0—9”10个数字密码按键和3个拨码开关作为功能键。
3个功能键中包括清除键、密码修改键、确认键,键盘0—9键按下将会显示10个不同的数字,密码修改键用来修改当前密码。
2.3 LED显示
此次毕业设计设置8位密码,按键后数码管显示器显示,采用动态显示。
P0口送显示数据,P1口显示扫描,根据按键顺序,显示器第一位显示第一次按的密码,第二位显示第二次按的密码,依此类推第8位显示第8次按的密码,按键完成后按确认键后,系统进行密码比较密码对则执行开锁动作,对应的发光二极管亮。
2.4报警系统
当输入的8位开锁密码完全正确时,有1秒的提示音开锁,当输入的密码3次不正确后,蜂鸣器会长叫一分钟报警。
3硬件电路设计
3.1 键盘电路设计
单片机应用系统设计中,若使用按键较多时(一般多于8个按键),通常采用矩阵式键盘,较之独立式按键键盘要节省很多I/O端口。
其原理如图所示
图3-1键盘电路设计图
所示为矩阵式键盘的结构,由4根行线和4根列线组成,按键位于行、列线的交叉点上,行线和列线分别连接到按键的两端,构成了一个4×4(16个按键)的矩阵式键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
键盘程序扫描法识别按键一般应包括以下内容:
判别有无键按下;
键盘扫描取得闭合键的行、列号;
用计算法或查表法得到键值;
判断闭合键是否释放,如没释放则继续等待;
将闭合键的键值保存,同时转去执行该闭合键的功能。
除了程序扫描法识别按键外,还可以采用下面两种方法识别按键:
一种是定时扫描方式,每隔一段时间对键盘扫描一次;另一种是利用单片机定时器产生一个定时时间(例如10ms),采用中断方式,当定时时间到产生定时器溢出中端,CPU响应中断后,在中断函数中对键盘进行编程扫描,识别键值。
采用以上两种键盘扫描方式时,无论是否有按键按下,CPU都要定时扫描键盘,而单片机应用系统工作时并不是经常需要键盘输入,因此,CPU经常处于空扫描状态。
为提高CPU的工作效率,可采用中断扫描方式。
当无键按下时,CPU处理自己的工作;当有键按下时,产生中断申请,CPU转去执行键盘扫描函数,并识别键值,这一应用充分体现了中断处理的实时处理功能。
3.2 LED显示电路设计
图3-2电路显示图
共阴极8位数码管组的A-G端口分别与排阻的输出端1-8端口连接。
电路选用动态显示原理:
动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端”有效,并送出相应的字型显示编码。
其他位的数码管因“位选端”无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。
这一过程称为动态扫描显示。
与静态显示方式比较,当显示位数较多时,动态显示方式可节省I/O端口资源,硬件电路简单;但其显示的亮度低于静态显示方式;由于CPU要不断地依次运行扫描显示程序,将占用CPU更多的时间。
若显示位数较少,采用静态显示方式更加简便。
3.3 报警电路设计
图3-3报警电路原理图
此次设计中,密码输入正确,控制开锁电平,喇叭短时提示。
密码输入错误时喇叭长时提示,3次密码输入错误时报警电路报警。
3.4晶振振荡电路设计
图3-4晶振振荡电路
XTAL1脚和XTAL2脚分别构成片内振荡器的反相放大器的输入和输出端,外接石英晶体或陶瓷振荡器以及补偿电容C1、C2构成并联谐振电路。
当外接石英晶体时,电容C1、C2选20PF-40PF;当外接陶瓷振荡器时,电容C1、C2选37PF-57PF。
AT89C51系统中晶振可在0-24MHz选择。
外接电容C1、C2的大小会影响晶振器频率的高低、振荡频率的稳定度、起振时间及温度稳定性。
在设计电路板时,晶振和电容应靠近单片机芯片,以便减少寄生电容,保证振荡器稳定可靠工作。
在系统设计中,为保证串行通信波特率的误差,选择了12MHz的石英晶振,电容C1、C2为30PF。
3.5复位电路设计
图3-5按键复位电路图
复位是单片机的初始化操作。
单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其它部件都处一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式,但是单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
整个复位电路包括内外两个部分。
外部电路产生的复位信号通过复位引脚RST进入片内的斯密特触发器(抑制噪声),再与片内复位电路相连。
单片机的外部复位电路有上电自动复位和按键手动复位两种。
4软件设计
4.1软件总体设计
图4-1软件总设计
P1.0-P1.7是作为密码按键输入;P2.0-P2.7口为数码管的段选控制口;P3.4口为蜂鸣器控制口;P3.3和P3.5口为指示灯控制口。
该密码锁上电或按键复位后能自动显示系统提示,进入工作状态。
密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
当输入密码正确时可修改密码。
密码的设定,此程序的初始密码放在一个数组中,假设预设的密码为"12345678"共8位密码。
由于采用4*4矩阵式键盘完成密码的输入,那么将a-f按键为功能键,0-9个按键为数字键。
在输入过程中,输入以为密码显示一杠,接着根据显示杠的数目来确定输入密码的位数,直到8位密码都已经输入完毕;输入完后按确认功能键之后,才能完成密码的输入过程。
进入密码的判断比较处理状态并给出相应的处理过程。
4.2各子程序的设计
a.开锁判定子程序
uchartest()
{
图4-2开锁判定图
ucharflag;
for(ee=0;ee<8;ee++)
{
if(tab1[ee]==tab4[ee])
{
flag=1;
D1=0;
D2=1;
}
else
{
flag=0;
ee=8;
D1=1;
D2=0;
beep=0;
}
}
return(flag);
}
开锁判定子程序的功能是将输入值与密码相比较,当输入密码与原始密码一致时,成功开锁。
当三次输入的密码错误时显示错误并报警,其中一个重要环节是密码位数的比较,当每按下一个数字时,数码管由右向左依次显示位数,若位数一致再逐位比较数值是否相同。
b.更改密码判定子程序
图4-3更改密码流程图
//更改密码判定子函数
ucharxiugai()
{
uchark,flag2=0;
D1=1;
loop0:
shuru1(0);
display3();
ff=test();
if(ff==1)
{
sfj2(tab4,tab2);
loop1:
shuru1(3);
D1=1;
display3();
sfj2(tab5,tab4);
shuru1(3);
display3();
for(k=0;k<8;k++)
{
if(tab4[k]==tab5[k])
{
flag2=1;
}
else
{
k=8;
sfj2(tab4,tab2);
flag2=0;
gotoloop1;
}
}
sfj2(tab1,tab4);
sfj2(tab4,tab2);
}
else
{
sfj2(tab4,tab2);
gotoloop0;
}
returnflag2;
}
首先是判断密码的正确性,在此基础上方可修改密码。
当密码输入正确时,按下确认键,接下来才能进行修改密码的步骤。
c.动态显示密码输入函数
图4-4动态显示流程图
//密码输入动态显示子函数
voiddisplay3()
{
D1=1;
D2=1;
sfj2(tab4,tab2);
while
(1)
{
intk;
intn=0x80;
gg=display2();
delete();
for(k=0;k{
P2=~n;
P0=table6[tab3[gg]];
delay(5);
n=n>>1;
}
aa=key();
if(eee==1||aaa==1)
{
eee=0;
gg=0;
break;
}
}
}
ucharnext()
{
ucharflag1;
cc=test();
if(cc==1)
{
beep=0;
delay(500);
beep=1;
delay(500);
beep=0;
delay(500);
beep=1;
while
(1)
{
display(table3,6);
flag1=1;
aa=key();
if(bbb==1||aaa==1)
{
bbb=0;
break;
}
}
}
else
{
sfj2(tab4,tab2);
while(!
aaa)
{
beep=0;
display(table5,6);
P2=0x80;
flag1=0;
key();
}
}
returnflag1;
}
动态显示程序主要完成的是将字型码通过LED显示出来,其中数码管的显示是按顺序有规律的显示出来。
5调试及分析
5.1软件介绍
5.1.1KEIL简介
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展。
KEIL是目前最流行的51单片机开发软件,它提供了一个集成开发环境UVISION,它包括C编译器,宏汇编,连接器,库管理和一个功能强大的仿真调试器。
这样在开发应用软件的过程中,编辑、编译、汇编、连接、调试等各阶段都集成在一个环境中,先用编辑其编写程序,接着调用编译器进行编译,连接后即可直接运行,可以缩短开发周期。
5.1.2Proteus介绍
Proteus软件是一块功能强大的电路设计分析软件。
它组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统,它和Keil结合起来就可以实现软硬件的联调仿真。
ISIS是Proteus系统的中心,它远不仅是一个 表库。
Proteus的ISIS是一款Lab-center出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机。
元件库齐全,使用方便,是不可多得的专业单片机软件仿真系统,它具有控制原理图设计外观的超强制作环境。
无论用户的要求是快速实现复杂设计的仿真以及PCB设计,还是设计精美的原理图以供出版,ISIS是您的最好工具。
5.2 软件调试
通过编写出系统的主程序、密码比较判断程序、显示程序的测试,结合外围电路及输出驱动控制等器件来检测系统是否能够正常工作。
通过Keil uVision2软件来编译调试程序,看程序中是否有死循环错误、机器码错误及转移地址错误,若程序正确并执行跟踪或单步运行,确保了程序的正确性后结合Proteus仿真软件的使用来判断程序和原理图的结合是否能实现所要求的功能,即能够顺利的实现开锁及报警的功能。
其调试的结果如图所示
图5-1智能密码锁设计仿真图
6总结
本次毕业设计,采用AT89C51芯片为核心器件来设计智能密码锁,结合外围的键盘输入、LED显示、报警系统等电路来完成错误报警,超次锁定、修改用户密码等功能。
在设计中,通过动手实践操作进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步巩固了对单片机只是的理解,掌握简单的单片机应用系统的设计、制作、调试的方法。
在设计时更具课题要求,复习相关的知识,查询相关的资料。
本次设计还存在一些问题,比如报警设备不够完善,开锁装置不尽合理,指示灯不正确显示等,总之,完整的设计需要一步步的完善,多次的修改才能得到更好的结果。
参考文献
[1] 许立梓.微型计算机原理及应用[M].机械工业出版社.2002
[2] 刘乐善.微型计算机接口技术及应用[M].华中理工大学出版社.2000
[3] 邹逢兴.计算机硬件技术基础试验教程[M].高等教育出版社.2000
[4] 吴秀清.微型计算机原理与接口技术[M].中国科学技术出版社.2001
[5] 邓亚平.微型计算机接口技术[M].清华大学出版社.2001
[6] 王迎旭.单片机原理与应用[M].机械工业出版社.2001
[7] 周航慈.单片机应用程序设计技术[M].北京航空航天大学出版社. 2002
[8] 谢宜仁.单片机实用技术问答[M].人民邮电出版社.2002
[9]李光飞,单片机C程序设计指导[M].北京:
北京航空航天大学出版社.2003.01
[10]马忠梅.单片机应用程序设计(第四版)[M].北京:
北京航空航天大学出版社.2006。
致谢
此次单片机控制的智能密码锁的毕业设计,让我们将课堂上学到的理论知识运用到实际中,通过查阅网络和图书馆搜集到的资料,加上许燕萍老师的指导,让我们更加深刻的验证了所学的知识。
回顾此次毕业设计,至今感慨良多,整个过程可以说是苦多于甜,但是可以学到很多很多东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
然而在设计的过程中我也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机c语言掌握得不好,通过这次毕业设计之后,一定把以前所学过的知识重新温故。
虽然这个设计做的也不太完善,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我受益终身。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
天外有天,人外有人。
挫折是一份财富,经历是一份拥有。
最后衷感谢各位老师对我的指导和谆谆教诲,我也在努力的积蓄着力量,尽自己的微薄之力回报母校的培育之恩,争取自己的人生对社会产生更多积极价值。
附录
附录A源程序清单
#include//51单片机头文件
#include
typedefunsignedcharuchar;
typedefunsignedintuint;
sbitD1=P3^3;//开锁成功指示灯
sbitD2=P3^5;//开锁错误指示灯
sbitbeep=P3^4;//蜂鸣器接口
ucharcodetable1[]={
0x3f,0x38,0x5e,0x40,
0x39,0x3f,0x5e,0x79
};
ucharcodetable2[]={21,21,17,14,18,18,0,21};
ucharcodetable3[]={0,19,14,20,14,13};
ucharcodetable4[]={12,18,0,5,14,13};
ucharcodetable5[]={14,10,10,0,10};
ucharcodetable6[]={
0x3f,0x