数字式密码锁设计Word文档格式.docx
- 文档编号:19128456
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:31
- 大小:502.51KB
数字式密码锁设计Word文档格式.docx
《数字式密码锁设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字式密码锁设计Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
第四章软件程序设计12
4.1密码读取模块12
4.2密码设置模块13
4.3密码比较模块13
4.4声光状态模块13
第五章总结16
参考文献18
附录22
引言
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
基于以上思路,本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:
设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:
4×
4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED提示灯,报警蜂鸣器等。
密码锁设计的关键问题是实现密码的输入、清楚、更改、开锁等功能:
密码输入功能:
按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。
密码清除功能:
当按下清除键时,清除前面输入的所有值,并清除所有显示。
密码更改功能:
将输入的值作为新的密码。
开锁功能:
当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
第一章设计内容及要求
1.1背景
随着社会物质财富的日益增长,安全防盗已成为社会问题。
而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。
目前国内,大部分人使用的还是传统的机械锁。
然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。
所谓互开率,是各种锁具的一个技术质量标准,也就是1把钥匙能开几把锁的比率。
经国家工商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互开率居然超标26倍。
为何弹子锁的“互开率”会如此之高?
据有关专家人士剖析,弹子锁质量好坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件的限制。
此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。
机械锁的这些弊端为一种新型的锁---电子密码锁,提供了发展的空间。
1.2电子锁
电子锁是采取电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化锁具,相比传统的机械锁具,电子锁不使用金属钥匙,保密性、精度都有很大提高。
电子锁的发明思路,源自古代发明的自动机械,例如古希腊数学家赫伦的液压自动门,中国古代诸葛亮的木牛流马,它们以重力或蒸汽压力驱动,最广泛的用途乃是用在古代墓道的地下机关。
电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进。
1.3电子密码锁的特点
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁,主要特点如下:
保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
误码输入保护。
当输入密码多次错误时,报警系统自动启动,防止试探密码。
1.4电子密码锁的发展趋势
从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。
键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。
但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。
当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。
因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;
而“自动更改密码”技术使得本次输入的密码将自动更改成下次应输入的密码,更改的规律不为他人所知,因而不怕旁观者窥测;
独出心裁的“键盘乱序显示”技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;
“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。
在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即“封锁”键盘,不再接受输入操作。
总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。
第二章系统总体设计
2.1系统结构
图2.1
如图2.1所示系统主要由AT89C51(51系列)、八位数码管、蜂鸣器、LED、4×
4矩阵键盘、复位电路等组成。
系统工作原理分析:
使用AT59C51单片机、4×
4矩阵键盘、LCD、蜂鸣器等。
矩阵键盘分别为0、1、2、3、4、5、6、7、8、9、*、#、CLE、Enter、MODIFY(更改)。
系统开始显示“INPUT”提示输入密码;
输入密码时,LCD显示电路显示为“-”,当密码输入完毕按下Enter键时,对输入密码与设定的密码进行比较,若密码正确则LCD显示电路显示为“PASS”提示锁打开;
若密码不正确,LCD显示电路显示提示“ERROR”,若连续3次输入不正确,则发出警报声同时锁定键盘。
在输入正确密码后,按下修改键时,LCD显示电路显示“old”提示“输入旧密码”,此时输入正确的旧密码,则显示电路会有提示输入新密码在输入新密码后,显示电路会再次提示“再次输入新密码”若两次输入密码不一致,则修改密码失败,一致则成功。
在修改密码的过程中,如果一开始输入的旧密码错误显示电路会显示提示,同时系统返回到开始。
若在“再次输入新密码”的时候输入新密码与前次不一致,则会返回到系统开始。
修改密码完成后,系统自动清零上锁。
要再次开锁则需要输入正确的密码。
系统中CEL键用于退格,在输入密码时,若输入错误且未按下Enter键,按下CLE可以删除刚输入的密码,然后再次输入。
为了防止恶意尝试,系统才用若连续输入3次错误密码则发出报警声,且锁定键盘,可以提高系统的安全系数,同时也能够保护合法用户的正常使用。
第三章硬件电路设计
3.1单片机AT89C51简介
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(EPROM)和128bytes的随机存取数据序存器(RAM),器件采用ATMEL公司的高密度/非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,AT89C51单片机为许多嵌入式控制系统提供了一种灵活行高且价廉的方案。
3.1.1主要特性
·
8031CPU与MCS-51兼容
4K字节可编程FLASH存储器(寿命:
1000写/擦循环)
全静态工作:
0Hz-24KHz
三级程序存储器保密锁定
128*8位内部RAM
32条可编程I/O线
两个16位定时器/计数器
6个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
图3.1
3.1.2管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写信号位)
P3.7/RD(外部数据存储器读信号位)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.1.3震荡特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4矩阵键盘
如图所示,本系统采用4×
4矩阵键盘,16个按键分为输入数字键:
*左移、0、#右移、1、2、3、4、5、6、7、8、9;
在输入密码是L\R分别实现输入位置的左右移动,B为退格键,C为清除键,清楚当前所有的输入字符,S为功能扩展键,暂时未定义,E为确认键
图3.2
3.3复位电路
图3.3
时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位(如图3.3)。
3.4振荡电路
图3.4
本设计晶振选择频率为12MHZ,电容选择30pF如图(3.4)。
经计算得单片机工作的机器周期为:
12×
(1÷
12M)=1us。
3.5发光二极管LED
图3.6
发光二极管是由Ⅲ-Ⅳ族化合物,其核心是PN结。
因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。
此外,在一定条件下,它还具有发光特性。
在正向电压下,电子由N区注入P区,空穴由P区注入N区。
进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。
由于LED使用P0口驱动要加上上拉电阻如图3.7。
3.6蜂鸣器
图3.8
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
由于蜂鸣器使用P0口驱动要加上上拉电阻如图3.9。
3.9完整电路图
图3.9
3.10使用到的元器件列表
元器件
规格/型号
数量
四位八段共阴数码管
3461AFR1-B10
1
SR42036
三极管
SR9013
8
S965
电阻
27k
10k
1
1k
4
电解电容
0.47uF/50V
瓷片电容
30pF
2
单片机
AT89C51
表3-1
第四章软件程序设计
本系统程序部分使用C语言编写,C语言是一种高级程序设计语言,它的优点是简洁明了、可移植性高。
该模块将输入密码字符串与设定密码字符串比较。
如果相同,执行开锁动作并将输入错误次数清零;
如果不同,累计错误次数,如果是第三次输入错误,系统锁死并发出声光告警;
如果小于三次,显示密码错误信息,返回密码输入环节。
4.1密码读取模块
首先预读入密码的字符数组清零,显示位置清空,然后读取键值。
先判断此时是否是在第九个键值输入了数字键值,如果是不响应重新读入,这样可以防止读入字符串溢出,造成密码读取错误。
然后通过switch语句5处理键值(字母键值),并将读取位置、显示位置进行相关调整;
如果输入的是数字有效键值,存入当前指向的字符数组空间,其后将键值变量清零准备读取下一个键值。
进行循环读取,直到成功读取8位密码或者因为输入了确定键提前完成读取工作。
4.2密码设置模块
在系统进行初始化时,要求设置密码。
整体思路是要求读取一组密码,保存在临时空间,然后再次读取密码,如果相同,证明设置成功,将新密码覆盖进标准密码数组里,如果两次的密码不同,显示错误信息,要求重新输入。
图4.5.1密码设置模块
4.3密码比较模块
连续错误次数小于三次
逻辑框图如图4.6.1。
图4.6.1密码比较模块
4.4声光状态模块
本模块通过读取相关控制变量,控制声光部件的状态。
当闭锁状态点亮红灯,开锁状态点亮绿灯;
当需要进行异常告警时,利用延时函数周期性的变换蜂鸣器的响静。
鸣响状态下,响250ms,停250ms;
鸣响状态保持50s后,静止10s,后继续进入鸣响状态,如此反复。
4.4显示功能
4位数码管上的管脚
单片机输出管脚
a
11
P3.7
b
7
P3.2
c
4
P3.1
d
P3.5
e
P3.6
f
10
P3.3
g
5
P3.0
h
3
P3.4
本系统使用共阴极数码管显示(如图3-5)。
选码由P3口输出高电平有效,选位由P1口输出低电平有效。
显示原理如下图及下表:
图4.4
表4—1
显示方式分别有静态显示与动态显示两种。
在显示提示信息如:
输入密码“INPUT”,操作通过“PASS”,操作错误“ERROR”,输入旧密码“OLD”,输入新密码“NE”,再次输入“AGAIN”等信息时使用的是动态显示。
由于8个显示器的段码同名端是连接在一起的,如果选码的管脚(本系统中为P1)都为0,那么8个显示器则显示同一字符。
要使各个数码管出现不同字符必须采用“分时动态扫描”的方法显示。
即每次点亮一个LED显示器,延时一段时间再点亮下一个LED显示器……周而复始,8个LED显示器轮流动态扫描。
利用人视觉余辉的暂留效应,看起来好像几个显示器上“同时”显示不同的字符。
如子程序view_input_password():
voidview_input_password(void)
{
for(i=0;
i<
200;
i++)
{P3=0X48;
P1=0XFe;
}//第四个显示器显示I
{P3=0X43;
P1=0X7F;
}//第五个显示器显示N
{P3=0XCD;
P1=0XBF;
}//第六个显示器显示P
{P3=0X62;
P1=0XDF;
}//第七个显示器显示U
{P3=0X69;
P1=0XEF;
}//第八个显示器显示T
}
静态显示应用在输入密码时数码管的显示进行输入密码操作时,每输入一位密码数码管显示一个“-”,实施方法为:
当有第一个按键时,第八个数码管的片选信号为低电平,其他为高。
当有第二个按键时,第八、第七个数码管的片选信号为低,其他为高,如此类推。
如子程序input_view():
voidinput_view(void)//k为判断输入第几位的变量
{switch(k)
case0:
P3=0X01;
//显示由右至左1个“-”
case1:
P1=0XcF;
//显示由右至左2个“-”
case2:
P1=0X8F;
//显示由右至左3个“-”
case3:
P1=0X0F;
//显示由右至左4个“-”
case4:
P1=0X0E;
//显示由右至左5个“-”
case5:
P1=0X0A;
//显示由右至左6个“-”
4.4.1键盘扫描
如图3-2,本系统使用4×
4矩阵键盘当没有键按下时,行线和列线之间是不相连的,若第N行与第M列的键被按下,那么第N行与第M列的线就被接通。
根据上述原理,本系统的键盘扫描方法是利用P2口的低四位作为行扫描线,P2口的高四位作为列回扫线。
具体实施方法为:
先使P2.0口输出低电平,P2口其他口输出高电平,然后对P2.4、P2.5、P2.6、P2.7四个口分别作判断。
若此四口都为高电平,则没有键按下;
若有键按下,P2.4、P2.5、P2.6、P2.7四个口必定有一个口输入为低电平,再判断P2.4、P2.5、P2.6、P2.7哪个口为低电平则可判断按键在哪列上。
如P2.4、P2.5、P2.6、P2.7没有低电平,再使P2.1为低电平,其他口为高电平,依次扫描下去,找到按键所在的行,再判断P2口的高四位哪一位为低,便可知道键在哪一列上。
键盘扫描子程序key()如下:
/*加上行扫描信号后,判断P2口高四位同时给标记变量falg赋值并跳出循环*/
voidkey(void)
{while
(1){
P2=0XFE;
if(P2_4==0){falg=1;
break;
}
if(P2_5==0){falg=2;
if(P2_6==0){falg=3;
if(P2_7==0){falg=4;
P2=0XFd;
if(P2_4==0){falg=5;
if(P2_5==0){falg=6;
if(P2_6==0){falg=7;
if(P2_7==0){falg=8;
P2=0XFb;
if(P2_4==0){falg=9;
if(P2_5==0){falg=10;
if(P2_6==0){falg=11;
if(P2_7==0){falg=12;
P2=0XF7;
if(P2_4==0){falg=13;
if(P2_5==0){falg=14;
if(P2_6==0){falg=15;
if(P2_7==0){falg=16;
4.4.2修改密码
本系统设定的修改密码过程为,在输入正确的密码后,按modify,此时提示输入旧密码“old”,输入正确的旧密码后,可以输入新密码。
此时键入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 密码锁 设计