基于单片机的电子密码锁电路的研究.docx
《基于单片机的电子密码锁电路的研究.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁电路的研究.docx(30页珍藏版)》请在冰豆网上搜索。
![基于单片机的电子密码锁电路的研究.docx](https://file1.bdocx.com/fileroot1/2023-4/18/8b17ad2c-698e-4d0a-826f-e31801fa23d4/8b17ad2c-698e-4d0a-826f-e31801fa23d41.gif)
基于单片机的电子密码锁电路的研究
基于单片机的电子密码锁电路的研究
论文类型PaperType:
研究总结SummaryofFocusedResearch
论及主题SubjectCovered:
基于单片机的电子密码锁电路的研究
课程名称Course:
嵌入式系统EmbeddedSystem
课程性质CourseNo:
研究生专业课GraduateCourse
学分数Credits:
2
开设学院College:
计算机及信息学院Computers&Information
开设时间Semester:
2012~2013学年第一学期
基于单片机的电子密码锁电路的研究
摘要:
单片机就是将微处理器、存储器、总线、定时器/计数器、输入/输出接口和其他多种功能器件集成在一块芯片上的微型计算机,它的重要应用领域为智能化电子产品,一般需要嵌入仪器设备中。
本系统以MCS-51单片机为核心,设计电子密码锁的硬件和软件,实现以下功能:
包括密码的输入、删除、修改,声光报警提示,开锁电路,密码显示。
下文简要介绍了MCS-51单片机内部结构及应用特点,详细阐述了电子密码锁的原理,硬件设计和软件设计,给出了硬件电路图和软件流程图。
鉴于其安全可靠、价格低廉、硬件电路简单、便于实现、易于改进等优点,它有很好的实用价值。
关键词:
单片机;电子密码锁;MCS-51
Abstract:
Single-chipmicrocomputerisasinglechipintegratedwithmicroprocessors,memory,bus,timer/counters,input/outputinterfaceandothermulti-functionaldevices.Itsimportantapplicationsareintelligentelectronicproducts,whichgenerallyneedembedintoinstrumentationdevices.
BasedonMCS-51single-chipmicrocomputer,thesystemdesignshardwareandsoftwareofelectroniclockstoachievethefollowingfunctions:
inputting,deletting,modifyingthepassword,alarmmationofsoundandlight,thecircuitofunlocking,displayingthepassword.PassagebelowdescribedtheinternalstructureandcharacteristicsofapplicationofMCS-51single-chipmicrocomputerbriefly,theprinciplesofelectroniclocks,designofhardwareandsoftwareindetail,andgiveshardwarecircuitryandflowchartofsoftware.Inviewofitsvariousadvantages,includingsafe,reliable,cheap,simplehardwarecircuit,easytorealizeandeasytoimprove,ithasgoodpracticalvalue.
Keywords:
mcu,electroniclocks,mcs-51
1引言
随着科技的发展,在安全技术防范领域,防盗报警功能的电子密码逐渐兴起,技术上正日趋成熟,功能也越来越大。
出现了以数字逻辑为原理的电子密码锁和以单片机为原理的电子密码锁。
近年来许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但成本较高,一定程度上限制这类产品的普及和推广。
鉴于目前的技术水平与市场的接受程度,以单片机实现的电子密码锁是这类防盗产品的主流。
一个简单的密码锁应该具有输入设备,用户可以输入密码并确认或取消,应该有输出设备,用户可以看到自己输入的密码,还应包括报警提示,若是能保证密码掉电不丢失,待系统复位的时候重新加载修改的密码就更好了。
电子密码锁内部的单片机是核心处理设备,负责获取密码,将其和正确密码相比较产生输出,还要让单片机记录下用户输入错误密码的次数,若超出限制则要采取相应保护措施,以防他人反复试探密码。
本文介绍的是一种基于MCS-51单片机密码锁的硬件和软件设计和实现方法。
这种密码锁具有输入、删除密码,控制开锁,声光提示,修改密码等多种功能。
密码最少可设置8位,最多可设置16位,若修改了密码,掉电后系统再次复位时密码为上次修改的密码的前8位,增加了保密性,灵活性。
2电子密码锁原理
本密码锁主要可以完成以下三项功能:
1、当输入正确的密码时,开锁并且声光提示20s,当输入错误的密码时,声光提示1s,错三次长音提示30s;2修改密码时,必须先输入原始密码,输入正确没反应,可接着输入新密码,输入错误声光提示1s,错三次长音提示30s,修改的密码位数不固定,最少8位,最多为16位,修改密码时数码管显示“L”;3修改的密码的前8位掉电不丢失。
本密码锁硬件包括以下几个部分:
MCS-51单片机,键盘输入部分,声光报警部分,驱动开锁电路部分,CAT24WC02的串行EEROM,密码显示部分。
键盘输入部分由4*3键盘和一个单独键“改密键”组成;声光报警部分主要由三极管放大电路、喇叭和发光二极管组成;驱动开锁电路主要由三极管放大电路和继电器组成;密码显示部分由数码管和上拉电阻组成。
整个硬件电路器件较少,方便焊接。
在软件方面,采用汇编语言编写。
在51单片机的RAM里,地址为35H~44H内存用来存放待设定的密码,而用R0存放下一个要设定的密码的地址,地址为45H~54H内存用来存放待输入的密码,而用R1存放下一个要输入的密码的地址。
20H.0为设置密码标志位,20H.1为可改密码标志位,按下“改密键”,20H.0为1,20H.1为1,当输入正确的密码后,20H.1为0,当修改完密码后,20H.0为0。
修改密码后向EEROM的20H单元送数1,复位时察看该单元的第0位是否为1就可以判断密码有没有修改过,若为1加载修改的密码的前8位,若为0加载初始值88888888。
2.1MCS-51单片机
MCS-51单片机系列中的各个引脚是相互兼容的,其中8051单片机是高性能的单片机,它包含8位CPU,128B片内RAM,4KB片内ROM,2个定时器/计数器,并行I/O接口P0~P4,串行I/O接口和中断系统等几大系统。
在不接任何外围电路的情况下可以实现大部分较为复杂的逻辑控制功能,进行片外扩展后可实现更多功能。
51单片机的存储器有片内和片外之分,无论片内还是片外都分为程序存储器和数据存储器。
数据存储器可读写,部分单元可以位寻址。
在计算机中,中断是指计算机暂停程序执行转而为外设服务,并在中断服务完成后自动返回原程序执行的过程。
51单片机中断源包括外部中断请求源,内部中断请求源T0、T1,串行口。
8051单片机的每个端口都是8位准双向口,每一条I/O口都能独立地用做输入和输出,用做输出时,数据可以锁存,用做输入时,数据可以缓冲。
在无片外扩展存储器的系统中,这4个端口都可以作为准双向通用的I/O口使用。
P0口作为通用I/O口时需要在外部引脚处外接上拉电阻,它还可作为地址/数据总线口,P2口还可以作为地址口,P3口为多功能端口。
P3.0为串行输入口,P3.1为串行输出口,P3.2为外中断0,P3.3为外中断1,P3.4为定时器/计数器0外部输入口,P3.5为定时器/计数器1外部输入口,P3.6为外部数据存储器写选通,P3.7为外部数据存储器读选通。
8051的时钟有两种方式,本文采用片内时钟振荡方式,在X1和X2脚外接12MHZ的石英晶体和30pF的振荡电容。
RESET为复位信号引脚,高电平有效,复位后CPU回到初始状态,程序从0000H开始执行。
RESET通过电容与电源相连,通过电阻与地线相连构成上电自动复位电路。
EA/Vpp是允许访问片外程序存储器/编程电源线,EA为高电平并且程序地址小于4KB时,读取内部程序存储器指令数据,而超过4KB地址则读取外部程序存储器指令。
2.2键盘输入部分
由12个微动开关组成的3*4键盘如右,EN代表确认,用来结束输入的密码,DEL
0
1
2
3
4
5
6
7
8
9
DEL
EN
代表删除,用来删除之前输入的密码,另有一个改密键“SET”用来修改密码。
键盘的硬件电路图如下,P1.0~P1.3为扫描线,P1.4~P1.6为回送线,程序执行时,先判断是否有键按下,若有,消除按键抖动,计算出按键值,再转入相应程序。
中断0接到“SET”键,当这个键按下时,转入中断程序,准备重新设置密码。
2.3声光提示部分
声光提示电路如右图所示,PNP三极管的发射极接+5V电源,基极连接到4.7K的电阻,电阻的另一端接到P2.0。
扬声器为外磁式扬声器。
BJT的放大作用,主要是依靠它的发射极电流能够通过基区传输,然后到达集电极而实现的。
为了保证这一个传输过程,一方面要满足内部条件,即要求发射区杂质浓度要远大于基区杂质浓度,同时基区厚度要很小;另一方面要满足外部条件,即发射结要正向偏置、集电结要反向偏置。
当P2.0为0时,三极管导通,喇叭响,二极管点亮。
通过设定P2.0为0的时间控制喇叭响和二极管发光的时间。
2.4驱动开锁电路部分
驱动开关电路部分如右图所示,4.7K的电阻接到P2.1。
电磁继电器实质是一种用较小电流来控制较大电流的开关器件,即只要有很小的电流通过继电器的线圈,就能产生机械动作,并利用相关簧片带动触点,连接或断开所控制的电路。
二极管的作用是防止继电器电感线圈断开后产生的电压烧坏外部电路。
当P2.1为0时,三极管导通,放大电流,驱动继电器吸合,使得电机工作,电子锁打开。
2.5掉电保密电路部分
掉电保密电路如下图,24WC02集成块为电可擦除可编程只读存储器EEROM,可以读写,数据不丢失。
SCL为串行时钟,是一个输入引脚,用于产生器件所有数据发送或接收的时钟;SDA为串行数据/地址,是一个双向传输端,用于传送地址和所有数据的发送或接收。
对于一般的数据传输,仅在SCL为低期间SDA才允许变化;A0、A1、A2为器件地址输入端;WP为写保护,连接到Vss或悬空时允许器件进行正常的读/写操作,连接到Vcc时只能读。
把P2.4定义为SDA,P2.5定义为SCL,就能使单片机I/O口模拟成C总线。
C总线由串行数据线SDA和串行时钟线SCL构成,可发送和接收数据。
C总线中的器件既可作为主控器,也可作为被控器,既可作为发送器,也可作为接受器。
总线忙时,SDA、SCL都要为高电平。
在SCL为高电平的状态下,SDA出现下降沿,为开始信号。
SCL为高电平的状态下,SDA出现上升沿,为停止信号。
数据传送开始后,SCL为高电平的时候,SDA的数据必须保持稳定,只有SCL为低电平的时候,才允许SDA上的数据改变。
C总线在传送数据过程中共有三种类型信号:
开始信号、停止信号、应答信号。
接受数据的器件在接受到8位数据后,向发送数据的器件发出特定的低电平脉冲,表示已收到数据,即应答信号。
本系统中修改密码后向EEROM里00H开始的单元里写入密码,向20H写入数1,复位时读EEROM里20H单元,判断最低位是否为1,若20H.0=1,读EEROM里的密码。
2.6密码显示部分
表2七段LED字型码
电路显示部分由一个共阴极数码管和上拉电阻组成,如下图所示。
P0.0~P0.7有一位为“1”,数码管相应的段点亮。
由于单片机P0口高电平输出电流较小,需要接上拉电阻才能驱动数码管点亮。
显示字符
0
1
2
3
4
5
6
7
8
9
L
“灭”
共阴极字符
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
7FH
6FH
38H
00H
3单片机密码锁软件设计
开始上电时,密码锁初始化密码为8个“8”,提示1秒,接着开始扫描是否有键按下,若有键按下,消除抖动后算出按键值,转到相应的程序。
若是密码已经改过,复位后密码为上次已经修改的密码的前8位。
当外部中断0输入由“1”变成“0”时,转入中断程序,设置密码标志位20H.0=1,可改密码标志位20H.1=1。
定时器0定时时间为50ms,利用软件计数器可以定时1s,用来控制声光提示时间。
定时器1定时时间为6ms,用来延时消除抖动。
根据单片机密码锁原理设计软件流程图1如上。
判断是否有键按下及获得按键值的流程图2如下。
键输入程序的功能包括五个部分:
①判断是否有键按下;②去除机械抖动;③确定闭合键物理位置;④得到闭合键编号;⑤确保CPU对键的一次闭合只做一次一次处理,防止操作人员的一次按键被高速运行的程序误判断为多次按下该键。
按下确认键时,若20H.0=1,20H.1=1,表示修改密码之前输完旧密码,查看密码输入是否正确,错误有声光提示,正确没有声光提示,可以输入新密码,20H.1=0;若20H.0=1,20H.1=0,表示新密码输入完毕,声光提示1秒,20H.0=0;若20H.0=0,表示输入完密码,查看密码输入是否正确,错误有声光提示,正确开锁并且声光提示20秒。
确认单元流程图3如下。
删除单元的程序流程图4如下。
当20H.0=1,20H.1=1或者20H.0=0时,密码存储在45H开始的数据存储器单元里,数码管显示当前输入的密码,若删除密码,数码管显示之前的密码;当20H.0=1,20H.1=0时,密码存储在35H开始的数据存储器单元里,数码管显示“L”,删除密码时,数码管仍显示“L”,直到删除完密码。
4结论
单片机的出现是近代计算机技术发展史上的一个重要的里程碑,单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机应嵌入式应运而生,广泛应用于仪器仪表、工业控制、家用电器、计算机网络和通信等领域。
它可靠性高,抗干扰能力优于PC,便于扩展,控制功能强,可以对逻辑功能比较复杂的系统进行控制,低电压、低功耗,片内存储容量较小,但可以外部扩展。
本文简单介绍了利用单片机制作的电子密码锁的硬件及软件。
硬件电路简单,只有单片机和一些外围电路,没有扩展芯片,还有一些并行接口、串口、外部中断没有用到,但已完成密码锁的基本功能,包括输入、显示、声音提示、改密,这是机械锁无法超越的。
单片机控制功能强,便于扩展,在原有的基础上,我们还可以改进完善电子密码锁,例如可以增加数码管,利用静态显示或者动态扫描方法,还可以加入一些其他的电路(例如时钟、闹铃),使得功能更加强大。
在利用单片机设计制作电子产品时,需要合理分配系统内部的硬件、软件资源。
软件能实现的功能应尽可能由软件实现。
致谢(Acknowledgements)
首先非常感谢老师一个学期以来的认真授课,让我在嵌入式系统的课程中收益颇多,不仅让带领我进入了嵌入式系统的大门,更让学到到了更多思想和方法。
同样感谢很多关心和支持我的人,我在此表示深深的谢意。
参考文献(References)
[1]张鑫.单片机原理及应用[M].北京:
电子工业出版社,2005.8:
14-126
[2]宋占波.单片机技术实用教程[M].北京:
国防工业出版社,2008.10:
154-157
[3]谢振辉.改进式MCS-51单片机实验[M].北京:
科学出版社,2006.2:
76-81
[4]侯振鹏.嵌入式C语言程序设计——使用MCS-51[M].北京:
人民邮电出版社,2006.7:
75-22
[5]康华光.电子技术基础模拟部分[M].北京:
高等教育出版社,2004.4:
56-85
[6]杜虎林.电工电子通用元器件检测技巧[M].北京:
中国电力出版社,2007.6:
28-30
附录(Appendix)
硬件电路图
单片机密码锁汇编程序
SDAEQUP2.4
SCLEQUP2.5
ORG0000H
JMPSTART
ORG0003H
SETB20H.0
SETB20H.1
MOVR1,#45H
ORG000BH
AJMPTIME0
ORG001BH
MOVTH1,#0E8H
MOVTL1,#90H
CLRTR1
ORG0030H
BEGIN:
MOVSP,#60H
MOVR1,#45H
LCALLIRDBYTE
RRCA
JCL0;若修改过密码,转去加载修改的密码
MOVR0,#35H
MOVR6,#8
MOVA,#08H
LOOP:
MOV@R0,A
INCR0
DJNZR6,LOOP;初始化密码
SJMPNEXT0
L0:
LCALLIRDNBYTE
NEXT0:
MOVR2,#20;R2为软件计数器,初始值为20
MOVTMOD,#11H;定时器/计数器工作方式都为方式1
MOVTH0,#3CH
MOVTL0,#0B0H;定时器定时50ms
MOVTH1,#0E8H;定时器定时6ms
MOVTL1,#090H
MOVIE,#8BH;开外部中断0及定时器/计数器
MOVTCON,#01H;外部中断0为负边沿触发方式
SETBTR0
SJMP$
SETBP2.0
MOVR3,#03H;R3存放最多错误次数3
MOVDPTR,#TABLE1
AGAIN:
ACALLKEY
CJNEA,#0BH,NEXT1
AJMPMAKESURE
NEXT1:
CJNEA,#0AH,NEXT2
AJMPDEL
NEXT2:
AJMPNUMBERR
MAKESURE:
JNB20H.0,SURE1;设置密码标志位为0转到SURE1
JB20H.1,SURE1
LCALLIWRBYTE;设置一个标志位,存放到EEROM
SETBTR0
SJMP$
SETBP2.0
LCALLIWRNBYTE
AJMPAGAIN
SURE1:
MOV29H,R0;把储存最后一个密码的下一个地址送给29H
MOVA,R0
ADDA,#10H
MOV55H,R1
CJNEA,55H,ERROR;若是输入的密码长度错误转到ERROR
L1:
DECR1
DECR0
MOVA,@R0
MOV55H,@R1
CJNEA,55H,ERROR;比较密码,错误转到ERROR
CJNER0,#35H,L1;密码没比较完,继续比较
JB20H.0,SURE2
CLRP2.1;密码正确,开锁
MOVR2,#400
SETBTR0
SJMP$
SETBP2.0
MOVR3,#03H;R3存放错误次数,为3次
MOVR0,29H;R0指向下一个要输入密码的地址
MOVR1,#45H
AJMPAGAIN
SURE2:
CLR20H.1
MOVR3,#03H
MOVR0,#35H
MOVR1,#45H
AJMPAGAIN
ERROR:
DJNZR3,ERROR3;错误次数不到3次转到ERROR3
MOVR2,#600
SETBTR0
SJMP$
SETBP2.0
ERROR3:
SETBTR0
SJMP$
SETBP2.0
MOVR0,29H;R0指向下一个要输入密码的地址
MOVR1,#45H
AJMPAGAIN
DEL:
JNB20H.0,DELL1;设置密码标志位为1转到DELL1
JB20H.1,DELL1
CJNER0,#35H,DELL3
SJMPDISPLAY1;没有密码可删转到DISPLAY1
DELL3:
DECR0;删除密码
SJMPDISPLAY1
DELL1:
CJNER1,#45H,DELL2
SJMPDISPLAY2;没有密码可删转到DISPLAY2
DELL2:
DECR1;删除密码
SJMPDISPLAY2
NUMBERR:
JNB20H.0,STORE;设置密码标志位为1转到SETN
JB20H.1,STORE
MOV@R0,A;储存设置的密码
INCR0
INCR6
SJMPDISPLAY1
STORE:
MOV@R1,A
INCR1
SJMPDISPLAY2
DISPLAY1:
CJNER0,#35H,DISPLAY3
MOVA,#0BH;没有密码可显示,数码管清零
SJMPDISPLAY4
DISPLAY3:
MOVA,#0AH
SJMPDISPLAY4
DISPLAY2:
DECR1
CJNER1,#44H,DISPLAY5
MOVA,#0BH;没有密码可显示,数码管清零
INCR1
SJMPDISPLAY4
DISPLAY5:
MOVA,@R1
INCR1
DISPLAY4:
MOVCA,@A+DPTR
MOVP0,A
AJMPAGAIN
KEY:
ACALLKEY1
JNZLKEY1
SETBTR1
SJMP$
AJMPKEY
LKEY1:
SETBTR1
SJMP$
SETBTR1
SJMP$
ACALLKEY1
JNZLKEY2
SETBTR1
SJMP$
AJMPKEY
LKEY2:
MOVR4,#0FEH
MOVR5,#00H
LKEY4:
MOVP1,R4
NOP
MOVA,P1
JBACC.4,LONE
MOVA,#00H
AJMPLKEYP
LONE:
JBACC.5,LTWO
MOVA,#04H
AJMPLKEYP
LTWO:
JBACC.6,NEXT
MOVA,#08H
LKEYP:
ADDA,R5
PUSHACC
LKEY3:
SETBTR1
SJMP$
ACALLKEY1