APP下载

基于STC89S52单片机的电子密码锁设计

2020-01-03沈德明

现代信息科技 2020年16期

摘  要:在现代化信息社会,电子密码锁已经开始向大众普及,基于此背景,对电子密码锁的设计展开了研究。主要提供一种以STC89S52单片机为核心的电子密码锁的相关设计思路;选用STC89S52单片机为微控制器,实现密码锁的开锁、输入和识别功能。采用了一款EEPROM芯片24C02作为密码存储单元,实现电子密码锁的可靠性与安全性,能够为用户带来便捷的使用体验。

关键词:电子密码锁;STC89C52单片机;电路仿真

中图分类号:TP368.1      文献标识码:A 文章编号:2096-4706(2020)16-0020-04

Design of Electronic Code Lock Based on STC89S52 Single Chip Computer

SHEN Deming

(School of Communication and Electronics,Jiangxi Science and Technology Normal University,Nanchang  330013,China)

Abstract:In the modern information society,smart code locks have begun to be popularized by the public. Based on this background,the design of electronic code locks has been studied. It mainly provides a related design idea of electronic code lock with STC89S52 single-chip microcomputer as the core;mainly uses STC89S52 single-chip microcomputer as microcontroller to achieve the unlocking,input and identification functions of the code lock. An EEPROM chip 24C02 is used as the password storage unit to realize the reliability and security of the electronic password lock,which can bring users a convenient experience.

Keywords:electronic code lock;STC89S52 single chip microcomputer;circuit simulation

0  引  言

随着社会经济与科学的不断发展,人们需要随身携带的东西越来越少,可钥匙依然是大家生活中必须要随身携带的物品,笔者就被出门经常忘记带钥匙所困扰。故想利用大学所学的单片机设计、电路板制作和调试以及模拟电路课程的知识来设计一把电子密码锁,可以与机械锁配合使用,只需要记住一组用于解锁的数字就可以避免带钥匙、丢钥匙的烦恼并且可以避免因钥匙被仿制而留下安全隐患。电子密码锁的研究早在20世纪30年代就开始了,在一些特殊场所应用,现在在西方发达国家,电子密码锁已被广泛应用于智能防盗系统中,而我国目前智能防盗系统整体与国际相比较为落后,大部分家庭使用的还是机械锁,国内电子锁市场尚未形成,因此本文提供一种电子密码锁的设计思路,通过方案设计、元件选型、模拟仿真等步骤,验证了该思路的可行性,希望可以为电子密码锁的研发提供借鉴。

1  系统方案设计

在此方案中,针对电子密码锁进行设计的核心控制器件主要是STC89S52单片机,同时还在其中加入了复位电路加晶振电路,由此完成单片机最小系统电路的设计[1]。在本设计中,主要是通过将外围电路加到矩阵键盘上实现密码输入和其他功能的设置,只有在密码输入正确的情况下,才能驱动实际电路中继电器控制吸合线圈即驱动电路中开锁功能的实现,外接显示器用于显示,每键入一位密码,显示位数随输入增加而增加,但不显示实际数字,用*代替,密码输入完成后,显示PASSWORD OK开锁成功,显示PASSWORD ERROR密码错误。同时,为保证设计系统的安全性,在密码输入错误三次后,便会触自动发报警电路,并将系统暂时锁定。在密码储存电路中采用24C02存储芯片来完成密码的储存设置。设计原理图如图1所示。

2  系统硬件设计

2.1  最小系统电路

最小系统电路包括单片机及其所需的必要的电源、时钟、复位等部件,能使單片机处于正常的运行状态中。在此方案中,选择的是型号为STC89S52的单片机,只要将单片机接上复位电路和晶振电路即可构成最小应用系统。在选择过程中主要考虑到型号性能较高,功率耗损较低等优点,是一款价值性较高的8位CMOS微控制器。内核所使用的是较为普遍的MCS51,既能够实现51单片机的兼容,又能够在工作性能上略胜一筹。从整个系统能够以更高效率运行,也能够将接口电路设计得更为多样化,并且能够实现功率耗损的较好控制[2,3]。

该单片机具有8 KB的Flash和512 B的RAM,共有四个P0-P3端口,32位I/O口线,看门狗定时器(Watch Dog Timer,WDT)。掉电保护方式下,RAM中的内容也会被保存,直到下一个中断或硬件复位为止。最高运作频率35 MHz,一个机器周期需要的时钟周期数可设置为6T或12T可选。程序可以直接使用UASRT串口进行下载。在外形设计上,该单片机包括了LQFP、DIP两种封装方式,本次设计选择的是后者。本系统硬件部分主要包括晶振电路、复位电路、STC89S52单片机、开锁电路、液晶显示电路等。原理框图如图2所示。

2.1.1  晶振电路

单片机设计中的核心要素,亦被称为时钟电路。在晶振电路设计中,包括一个晶振以及两个电容共同组成,两个电容的加入是为了更好地达到谐振要求。从现阶段来看,大部分单片机所采用的都是内部时钟,但这种设计容易受到外部因素的影响,因此为保障系统设计的严谨与精细,本次采用的是外接式晶振电路。设计中采用12 MHz外部晶振。电容取值30 pf。通过单片机XTAL1和XTAL2与片内与非门构成电容三点式振荡器。

2.1.2  复位电路

当在STC89S52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作。复位操作设计,包括两种形式:一种是手动复位,另一种则是上电复位。其中后者包括了电阻和电容两种器件组成。手动复位的复位方式是需要通过开关来达到其复位效果。本设计中手动复位,通过RST引脚与电源VCC接通实现。相对自动复位,手動复位可以避免死机时无法可靠复位的情况。

2.2  矩阵键盘电路

本设计采用行列式键盘[4],能够达到针对性密码的基本功能,例如输入和更改密码。与直接法的键盘相比,矩阵模式的键盘设置在设计与识别方面都更具复杂性,通常采用这种键盘对付按键较多的情况。矩阵式键盘行控制线与列控制线在交叉的地方并不会直接相通,而是以按键设置完成水平与垂直线的连接。在本设计中,水平线可以与STC89S52单片机的P1.0~P1.3相通,垂直水平线和STC89S52单片机的P1.4~P1.7连接。在此基础上,通过对水平线与垂直线的扫描达到按键的确认功能。

2.3  液晶显示电路

在本次设计中,显示模块采用了LM016L字符型液晶显示器进行显示,能够呈现出密码锁所处的具体状态。液晶控制端口RS.RW.E引脚和单片机P2.6、P2.7、P2.8引脚连接,液晶数据接口AD0~AD7和单片机的P0.1~P0.7口连接,用于LCD液晶显示作用。同时,还设计了节能控制端口,从而实现最大程度的能源节约效果。在密码正确时单片机P3.6输出低电平,导通三极管,开锁成功指示灯LED-Yellow亮。LCD显示PASSWORD OK,反之,密码错误时显示PASSWORD ERROR。通过液晶显示器可以清楚判断出锁的开关状态。

2.4  开锁电路

在开锁电路设计中,大多都是采用继电器控制实施的,可以针对传输信号类别执行电路开合任务。在密码输入确认无误时,单片机会向系统输出开锁信号,经过继电器模板,通电后便可以开锁。具体分析,密码正确时,在单片机的P3.6 I/O端口发出信号,经端口的三极管9012放大,进而使得继电器处于闭合状态[5],继电器吸合带动锁杆伸缩,随后锁钩在弹簧作用下弹起,便可以实现开锁功能。

2.5  密码存储电路

相对而言,储存器与单片机传输的数据偏少,因此便不会与主线形成竞争关系,在密码存储中采用的是运用较为广泛的24C02存储芯片。此类芯片能够满足掉电状态下的密码存储,此外,该部分还具备独立的写保护作用。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。

2.6  报警电路

该系统设计,能够将输入的每一个数字都与原先设定好的数值进行对比,只有在每个数值都与设定值符合时才能开锁。在输入过程中只能有三次机会,如若连续三次输入密码皆不正确,就会自动开启报警系统,在重新复位后才能继续使用。报警电路主要是通过蜂鸣器实现的,以三极管[6]为驱动,从而使蜂鸣器能够根据输入密码的正确与否确认警报声是否发出。

3  软件设计

3.1  主程序

主程序流程图如图3所示,流程说明:主程序启动后,密码锁初始化,监听子程序监听键盘输入信号,同时调用亮灯子程序,监听到指定键盘输入信号调用模式B,输入密码识别按键,若输入信号与程序初始化密码一致,则调用开锁子程序,执行开锁,若不一致,报警电路则进行报警提示,监听子程序持续监听键盘输入信号。监听子程序监听到指定键盘输入信号调用模式A修改密码子程序。

3.2  开锁子程序

开锁子程序的功能是通过判断输入信号是否与初始信号保持一致,在密码输入与原定信号完全一致后,便会启动开锁。在开锁子程序内会另用if语句[7]将输入密码与原定密码进行逐个对比,并且在输入错误信号后,还会对错误次数进行统计,若输入信号连续三次与初始密码不一致则调用报警子程序,流程如图4所示。

3.3  修改密码子程序

监听程序监听到修改密码按键信号A,调用修改密码子程序,修改密码子程序检测旧密码输入并按下确认键后为开锁状态,若为开锁状态,持续监听按键输入信号。当2次输入新密码一致则提示密码修改成功,若不一致则退出修改密码子程序,并且需要重新输入旧密码验证。若不是开锁状态则直接退出修改密码子程序,流程如图5所示。

3.4  液晶显示子程序

显示器件采用的是LM016L液晶显示屏,液晶板上排列着若干5×7或5×10点阵的字符显示位,每个显示位可显示1个字符,在工作过程中可以同时显示2行字符,每行字符长度限制为16个。每一行具有固定的地址,与微控制通过送入数据和指令,使模块正常工作。

4  系统的测试

4.1  程序调试

运用C语言对系统进行编写,并借助Keil4编译环境对系统代码进行相应的调试,进一步形成可操作的程序文件。需要对相应程序进行编译、跟踪执行以及检查程序。

4.2  硬件调试

众所周知,系统的组成需要多个模块的组合,而模块的基础单位是元器件,因此,对于任何一个设计系统的调试与检查都要针对元器件进行检查。在元器件检查完成后再进一步对原理图进行检查,以电路仿真的方式对电路功能进行全面检查,查找漏洞。在确保软件运行没有问题、单片机和电源没有异常的情况下再检查外围电路,尤其注意当金属基引脚安装于LCD时温度不当、焊接时间过长容易出现损坏的问题。

4.3  仿真设计

通过Proteus软件的使用,我们能够轻易地获得一个功能齐全、实用方便的单片机实验平台[8]。从而确定系统设计是否能够符合其运用要求,保障系统设计程序的可靠性与安全性。在電子密码锁的系统设计中,运用仿真软件Proteus进行本次设计的仿真。Proteus的软件仿真基于VSM技术,它能仿真大量的单片机芯片,比如MCS51系列、以及LCD、按键等外围电路。通过Proteus对按键输入密码控制STC89S52单片机开锁以及信号不匹配的报警功能进行仿真。图6为本次系统的仿真设计原理图。

根据系统提示,在键盘上输入密码,并且按下确认键,如若输入密码与原始保持一致,继电器便能够吸合、电路开锁,开锁成功指示灯亮起。

根据系统提示,在键盘上输入密码,并且按下确认键,如若输入密码与原始存在错误对应,开锁子程序无法启动,继电器无法实现供电,同时蜂鸣器发出声音。显示屏上出现密码错误提示,并在三次之后启动报警系统。

4.4  仿真效果

(1)LCD显示模式选择A or B,按下B,LCD显示屏上下划线闪烁,等待输入密码。每键入一位密码,LCD显示位数随输入增加而增加,但不显示实际数字,用*代替,按下D键确定,显示PASSWORD OK,五秒钟后自动返回模式选择主界面;(2)按下B,输入错误密码,按下确认键D,LCD显示PASSWORD ERROR,蜂鸣器报警;(3)返回主界面模式选择,按下A进行修改密码,输入正确密码,按下确认键D。此时为开锁状态,键入新密码后按确认,再输入一遍新密码并确认。LCD显示change Password Succeed,然后返回主界面模式选择;(4)再次按B输入密码,键入新密码,密码锁开锁LCD显示PASSWORD OK。

5  结  论

电子元件的不断发展,为电子密码锁的完善与优化带来了更大的发展空间,进一步保障了人们的财产安全与系统的可靠性。在本次电子锁设计中,通过以STC89S52单片机为核心的电路,融入了开锁、修改、液晶显示等多项子程序,保障了电子密码锁的基本功能,并能够在密码信号输入三次后调用报警系统,提高安全性,优化用户体验。在设计过程中,还运用仿真技术对系统进行检查与调试,进而确认系统运行的有效性。但在本次设计中也同样有部分缺陷,在今后的设计中需要进一步的优化与完善,提高系统的安全性,力求满足大众的多元化需求。

参考文献:

[1] 李建忠.单片机原理与应用:第2版 [M].西安:西安电子科技大学出版社,2008.

[2] 靳达.单片机应用系统开发实例导航 [M].北京:人民邮电出版社,2003.

[3] 沈红卫.单片机应用系统设计实例与分析 [M].北京:北京航空航天大学出版社,2003.

[4] 金桂,向国梁.基于C语言STC89C52单片机电子密码锁的设计与仿真 [J].现代电子技术,2010,33(19):176-178+182.

[5] 阎石.数字电子技术基础:第6版 [M].北京:高等教育出版社,2016.

[6] 童师白,华成英.模拟电子技术基础:第4版 [M].北京:高等教育出版社,2011.

[7] 谭浩强.C语言程序设计:第3版 [M].北京:清华大学出版社,2014.

[8] 周涧景,张丽郑.基于Proteus的电路及单片机系统设计与仿真 [M].北京:北京航空航天大学出版社,2006.

作者简介:沈德明(1998—),男,汉族,江西南昌人,本科在读,研究方向:电子信息工程。