基于单片机控制的电子密码锁Word文档格式.docx
《基于单片机控制的电子密码锁Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的电子密码锁Word文档格式.docx(39页珍藏版)》请在冰点文库上搜索。
矩阵键盘
引言
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
1.总体设计方案
1.1设计思路
该电路是一种采用以ATM89C52为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还要根据实际需要添加调电存储、声光提示甚至增加遥控控制功能。
1.2方案确立
为了实现密码的保密性,采用一个4×
4的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性。
设计采用一个超级密码,送电开机时,只要输入超级密码便可开门,这样可预防停电后再送电时无密码可用。
采用了1602液晶显示器来作为显示单元,提高了可读性,使用户对密码锁的运行情况一目了然。
1.3总设计框图
本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。
其中矩阵键盘用于输入数字密码和进行各种功能的实现。
由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可。
系统整体框图如图2.1所示。
图2.1总设计框图
●各模块功能如下:
1.键盘输入模块:
分为密码输入按键与几个功能按键,用于完成密码锁输入功能。
2.密码存储模块:
用于完成掉电存储功能,使修改的密码断电后仍能保存。
3.蜂鸣器报警电路:
用于完成输错密码时候的警报功能。
4.晶振电路:
用于单片机的起振。
5.复位电路:
完成系统的复位。
6.显示模块:
用于完成对系统状态显示及操作提示功能。
7.LED显示模块:
用于辅助报警与输入提示。
8.开锁电路:
应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。
2单片机硬件电路分析
2.1单片机引脚配置
在单片机的40条引脚中,有2条用于主电源的引脚,2条外接晶体的引脚,控制或其他电源复用引脚RST/Vpd、ALE、和VPP,32条输入/输出引脚。
下面就本系统用到的引脚分别说明这些引脚的名称和功能。
(1)主电源引脚Vcc和Vss
Vcc:
接+5V电源
Vss:
接电源地
(2)钟电路引脚XTAL1和XTAL2
XTAL1:
接外部晶体的一端。
在单片机内部,它是反相放大器的输入端,该放大器构成了片内振荡器。
在采用外部时钟电路时,对于HMOS单片机,此引脚必须接地;
对CHMOS单片机,此引脚作为驱动端。
XTAL2:
接外部晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端,振荡器的频率是晶体振荡频率。
若采用外部时钟电路时,对于HMOS单片机,该引脚输入外部时钟脉冲;
对于CHMOS单片机,此引脚应悬空。
(3)信号引脚RST/Vpd
RST/Vpd:
复位/备用电源输入端。
单片机上电后,只要在该引脚上输入24个振荡周期(2个机器周期)宽度以上的高电平就会使单片机复位;
若在RST与Vcc之间接一个10μF的电容,而在RST与Vss之间接一个8.2KΩ的下拉电阻,则可实现单片机上电自动复位。
RST/Vpd具有复用功能,在主电源Vcc掉电期间,该引脚可接上+5V备用电源。
当Vcc下掉到低于规定的电平,而Vpd在其规定的电压范围内时,Vpd就向片内RAM提供备用电源,以保持片内RAM中的信息不丢失,复电后能继续正常
(4)输入/输出(I/O)引脚P0、P1、P2和P3
MCS-51单片机有4个双向并行的8位I/O口P0~P3,P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为4个TTL电路。
P0.0--P0.7:
P0口是一个8位双向I/O端口。
在访问片外存储器时,它分时提供低8位地址和作8位双向数据总线。
在EPROM编程时,从P0口输入指令字节;
在验证程序时,则输出指令字节(验证时,要外接上拉电阻)。
P0口能以吸收电流的方式驱动8个LSTTL负载。
P1.0--P1.7:
P1口是8位准双向I/O端口。
在EPROM编程和程序验证时,它输入低8位地址。
P1口能驱动4个LSTTL负载。
图3-2
图3-3
P2.0--P2.7:
P2口是一个8位准双向I/O端口。
在CPU访问外部存储器时,它输出高8位地址。
在对EPROM编程和程序验证时,它输入高8位地址。
P2口可驱动4个LSTTL负载。
P3.0--P3.7:
P3口是8位准双向I/O端口。
它是一个复用功能口。
作为第一功能使用时,为普通I/O口,其功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表3-1所示。
P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
P3口能驱动4个LSTTL负载。
图3-4
图3-5
表3-1:
口线
第二功能
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD(串行口输入)
TXD(串行口输出)
INT0(外部中断0输入)
INT1(外部中断1输入)
T0(定时器0的外部输入)
T1(定时器1的外部输入)
WR(外部数据存储器“写”信号输出)
RD(外部数据存储器“读”信号输出)
2.2复位电路的设计
复位是单片机的初始化操作。
单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
该复位电路采用按键电平复位式复位电路。
当单片机已在运行当中时,按下复位键S后松开,在复位引脚RET(9脚)脚持续出现24个振荡器脉冲周期(即2个机器周期)的高电平信号将使单片机复位。
也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
如图3.2所示。
图3.2复位电路
2.3时钟电路的设计
时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下的进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。
当采
用内部时钟时,连接方法如下图所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个12MHZ晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如30PF。
如图3.3所示。
图3.3时钟电路
2.4密码锁控制电路
2.4.1矩阵键盘电路的设计
为了加强密码的保密性,采用一个4×
4的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性,同时也能减少与单片机接口时所占用的I/O口线的数目,节省了单片机的宝贵资源,在按键比较多的时候,通常采用这种方法。
其原理图如图3.4所示。
图3.4矩阵键盘
每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N根行线与M根列线,即可组成具有N×
M个按键的矩阵键盘。
在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就是要识别哪一个按键被按下。
对键的识别方法通常有两种:
一种是通用的组行扫描查询法;
另一种是速度较快的线反转法。
此系统中,我们采用线反转法。
首先辨别键盘中有无按键被按下,在单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
具体方法是:
向行线输出全扫描字00H,把全部列线置成低电平,然后将列线的电平状态读入累加器A中。
如果有按键被按下,总会有一根行线电瓶被拉至低电平从而使行线不全为1。
判断键盘中哪一个按键被按下通常是通过将列线逐列至低电平后,检查行输入状态来实现的。
方法是:
依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的按键不在此列;
如果不全为1,则所按下的按键必在此列,而且是在与零电平行线相交的交点上的那个按键。
按键的操作面板如图3.5所示,共计10个数字键和6个功能键,键盘侧面还有一个微型蜂鸣器。
键盘侧面还有一个蜂鸣器,每操作一次,它便发出声音,提示操作成功。
10个数字键用来输入密码,另外6个功能键分别是:
A查看键、B设置新密码键、C退格键、D返回键、E确认/退出键和F开启键。
其中退格键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。
确认键的功能是确认输入的密码。
开启键是切换到密码输入状态,输密码前需按该键才能开始输入密码。
按“F”键启动进入输入密码程序,按住“F”键不放3秒以后进入输入密码状态。
在输入密码状态下,0-9数字键为有效键,有时间和次数限制功能:
只有三次输入密码机会,每次限制在10秒内完成,输入密码有误或每次输入密码超时,则被认为是密码输入错误。
当3次输入都错误时,程序将返回起始状态。
密码输入正确后,继电器吸合,表示锁被打开。
在密码输入正确的情况下,程序进入查看密码和修改密码状态,按“E”键退出查看密码状态。
按“B”键进入重新设置密码状态,在输入密码时,如发现输入有误,可按“C”删除后,重新输入,按“E”确认后,程序退出修改密码状态。
按“D”键或等待10秒后程序退出修改密码和查看密码状态,回到起始状态。
程序内定密码为:
987654,送电开机时,只要输入内定密码便可开门,这样可预防停电后再送电时无密码可用。
当密码输入错误或密码输入时间超过规定的时间时,蜂鸣器报警。
表3.1按键功能表
按键
键名
功能说明
0-9键
数字键
输入密码
A键
查看键
查看密码
B键
设置新密码键
设置新密码
C键
退格键
退格删除
D键
返回键
返回到开始界面
E键
确认/退出键
确认/退出
F键
开启键
开启密码输入
2.4.2报警控制电路的设计
该电路采用单频音报警电路,实现单频音报警的接口电路比较简单,其发音元件通常可采用压电蜂鸣器,当在蜂鸣器两引脚上加3~15V直流工作电压,就能产生3kHZ左右的蜂鸣振荡音响。
压电式蜂鸣器结构简单、耗电少,更适于在单片机系统中应用。
压电式蜂鸣器,约需10mA的驱动电流,可在某端口接上一只三极管和电阻组成的驱动电路来驱动,P.3.1接三极管基极输入端,当P3.7输出高电平“1”时,三极管导通,蜂鸣器的通电而发音,当P3.1输出低电平“0”时,三极管截止,蜂鸣器停止发音。
如图3.6所示
图3.6报警电路控制
2.4.3液晶显示电路
液晶显示电路如图4-3所示,通过P1口传输数据,控制信号E1、E2、A0分别连在P2.0、P2.1、P2.2。
单片机通过P1口和部分P3口对液晶进行显示控制。
可调电阻RW1控制液晶显示的
图3-4液晶显示电路
本系统设计的显示电路是为了给使用者以提示而设置的为了达到界面友好的目的,显示部分由液晶显示器LCD1602取代普通的数码管完成。
开锁时,按下键盘上的开锁按键后,利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少
图3.8开机显示
图3.9输入状态
个*。
当密码输入完成时,按下确认键,如果输入的密码正确的话,LCD显示“888”,单片机其中P3.0引脚会输出低电平,使三极管T2导通,电磁铁吸合,继电器开关跳转,电子密码锁打
开,如果密码不正确,LCD显示屏会显示“IUPUTERROR”,P3.0输出的是高电平,电子密码锁不能打开。
通过LCD显示屏,可以清楚地判断出密码锁所处的状态
显示器主要用于显示以下几个字符,指示如图3.8所示
3系统软件设计
系统的主程序如图4-1所示。
由于用户在使用系统的过程中,可能在任何时刻按下任何按键,而程序都必须对此作出正确响应。
图4.1主程序流程图
3.1初始化及按键识别
如图4.2,系统的初始化包括堆栈起始地址的设定,两个定时/计数器的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的初始化,蜂鸣器初始化发声等操作。
系统初始化并读取密码完成后,液晶显示"
PASSWORDCONTROL"
,提示用户可以输入密码。
此时程序即不断测试按键,检查是否有按键被按下。
如果有,则进行按键识别;
如果没有按键按下,或者按下的按键没有被识别,R3赋值0FFH,并跳转至按键测试。
实际程序运行时,绝大部分时间都在测试按键,等待用户输入。
3.2开锁处理
首先LCD初始化,输入密码,密码正确则使开锁电路动作,继电器得电,开锁指示灯亮。
开锁程序流程图如图4.3所示。
图4.2初始化及按键识别流程图
3.3改密处理
如图4.4,可以看出,改密键的处理流程跟开锁键类似,都需检查密码是否正确,错误的话,提示重新输入,只有输入密码正确才可以进行改密。
然后再按更改键,密码更改程序被调用,进而更改密码,此过程,LCD都会显示信息。
3.4液晶显示子程序
液晶显示子程序在每次更新显示内容时都会被调用,其流程如图4.5所示。
图4.3开锁流程图
图4.4改密流程图
图4.5液晶显示子程序流程图
每次更新显示内容前,需清显示清空LCD原先的显示内容,清屏指令的指令码为01H,即将P0口赋值01H,然后写入指令寄存器IR。
LCD1602要显示的内容是根据其控制器内置的字符码表,事先列出要显示的ASCII字符串。
每次送一个字符的ASCII码入P0口,然后写入数据寄存器DR,最后将字符地址加一,LCD1602会将写入的ASCII码对应的字符依次显示出来。
由于显示字符串的长度不尽相同,约定每串字符以00H结尾;
程序检测到字符码为00H时,即停止写入,返回。
LCD显示的内容在下次更新前会一直保持。
4心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,在同学的帮助下,终于游逆而解。
非常感谢!
5参考文献
[1]《单片机原理及及应用》王迎旭编机械工业出版社2001
[2]《单片机应用程序设计技术》周航慈著北京航空航天大学出版社
[3]黄志君,高峰,王建.轮胎压力监测系统[J].广西工学院学报.2006(4):
9~12.
[4]单春贤,韩钧等.一种集成度较高的轮胎压力监测系统设计[J].拖拉机与农用运输车,2006(6):
33~38.
[5]张洪润单片机应用技术教程北京:
清华大学出版社,1997
[6]沙占友AStudyoftheControlSystemwithIntelligentTemperatureSensors.ICEMI第四届国际电子测量学术会议论文集,电子测量与一起学报.第13卷,1998(8),ISTP收录
[7]TheIntelMicroprocessorsArchitecture,Programming,andInterfacing.高等教育出版社(影印版),200120-081201-05-01
[8]JONATHAND.NASH,DOUGLASR.CALDWELL,MICHAELJ.ZELMAN,ANDJAMESN.MOUMAThermocoupleProbeforHigh-SpeedTemperatureMeasurementintheOcean.Manuscriptreceived18August1997,infinalform9November1998:
1447-1449.
[9]姚四改编著《Protel99SE电子线路设计教程》上海交通大学出版社2002.6
[10]谢自美编著《电子线路设计•实验•测试(第二版)》华中科技大学出版社2000
[11]《电子制作》2004.10
[12]《电子制作》2004.12
6附录一:
电路总原理图
7附录二:
PCB板
8附录三:
程序清单
BEEPBITP3.1
RELAYBITP3.6
SEC10BIT20H.1
SEC3BIT20H.2
PASS_OKBIT20H.3
PASS_OLDEQU30H
PASS_NEWEQU37H
PASS_DISEQU40H
COUNTEQU47H
SECEQU48H
POSEQU49H
BUSYBITP0.7
LCD_RSBITP2.0
LCD_RWBITP2.1
LCD_ENBITP2.2
DATAPORTEQUP0
LCD_XEQU29H
TIMESEQU2AH
BUSY_CHECKBIT20H.0
ORG0000H
AJMPMAIN
ORG000BH
LJMPTIMER0
ORG0050H
MAIN:
MOVSP,#60H
MOVP0,#0FFH
MOVP1,#0FFH
MOVP2,#0FFH
MOVTMOD,#01H
MOVTH0,#4CH
MOVTL0,#00H
SETBET0
SETBEA
MOVPASS_OLD,#09H
MOVPASS_OLD+1,#08H
MOVPASS_OLD+2,#07H
MOVPASS_OLD+3,#06H
MOVPASS_OLD+4,#05H
MOVPASS_OLD+5,#04H
ACALLLCD_INIT
MAIN1:
CLRTR0
CLRSEC3
CLRSEC10
CLRPASS_OK
MOVCOUNT,#00H
MOVSEC,#00H
SETBRELAY
ACALLMENU1
ACALLSTART_IN
MOVR4,#03H
MAIN2:
ACALLPASS_IN
ACALLPASS_COMP
MOVR5,#100
ACALLDELAY
JBPASS_OK,MAIN3
DJNZR4,MAIN2
AJMPMAIN1
MAIN3:
ACALLPASS_LOOK
ACALLCHANGE_PASS
JBSEC10,MAIN4
ACALLKEY_SCAN
CJNEA,#0DH,MAIN3
MAIN4:
ACALLBEEP_BL
AJMPMAIN1
MENU1:
MOVB,#00H
OVDPTR,#INFO1
ACALLW_STRING1
MOVDPTR,#INFO4
ACALLW_STRING2
RET
MENU2:
OVDPTR,#INFO3
MOVDPTR,#INFO2
MENU3:
MOVDPTR,#INFO7
MENU4:
MOVDPTR,#INFO8
INFO1:
DB"
0
INFO2:
PASSWORD------"
INFO3:
INPUTPASSWORD"
INFO4:
OFF"
INFO5:
888"
INFO6:
IUPUTERROR"
INFO7:
LOOKPASSWORD"
INFO8:
RESETPASSWORD"
KEY_SCAN:
MOVP1,#0F0H
NOP
MOVA,P1
ANLA,#0F0H
MOVB,A
MOVP1,#0FH
ANLA,#0FH