APP下载

基于STC15单片机和射频模块的电子密码锁设计

2017-11-03徐海华刘玉芹余陈锋

科技创新导报 2017年24期
关键词:密码锁按键密码

徐海华++刘玉芹++余陈锋

摘 要:针对传统机械锁的各种缺点以及当前使用的电子密码锁价格昂贵、功能受限的现状,提出以STC15F2K32S2单片机为主控芯片,辅以射频模块、OLED、DS1302时钟芯片等一些电子元器件,利用C语言编程,实现了一电子密码锁系统的设计。此密码锁具有密码正确开锁、错误声光报警、误输超次键盘锁死、密码修改、实时显示时间与温度、温度超限报警提示、使用射频模块恢复初始密码等功能。经调试证明:此系统安全可靠、使用方便、易于扩展其功能,值得推广使用。

关键词:电子密码锁 STC15F2K32S2单片机 射频模块 按键输入 报警提示

中图分类号:TP399 文献标识码:A 文章编号:1674-098X(2017)08(c)-0099-06

Abstract: In view of the shortcomings of traditional mechanical locks and the current situation of expensive and limited function electronic code locks, a system design about an electronic code lock is provided with C language programming. STC15F2K32S2 MCU acted as the master chip, RF module, OLED, DS1302 clock chip and some other electronic components constitute the system. The functions of the code lock include: correct password to unlock, wrong password to alarm with sound and light, overtimes of wrong input to lock the keyboard, password modification, real-time time and temperature to display, temperature limit to alarm, the initial password restored by RF module and so on. It demonstrated by debugging that the system is safe, reliable, convenient use and easy to expand its functions. It is worth popularizing.

Key Words:Electronic code lock; STC15F2K32S2 MCU; RF module; Keyboard input; Alarm prompt

随着社会物质财富的日益增长和人们生活水平的逐步提高,安全防盗已备受全社会关注。虽然人们仍在使用容易丢失钥匙的弹子锁和结构较为复杂、成本高、易于出现故障的机械密码锁,但因这些锁固有的劣势而逐渐催生出一代代的电子密码锁[1-5]。当前已研发出的电子密码锁具有防试探按键输入、报警、修改密码等功能,其多采用ARM和单片机控制[6]。针对单片机的优点以及电子密码锁所需功用的增加,本文设计了以STC15F2K32S2單片机[7]为主控芯片,具有密码正确开锁、错误声光报警、误输超次键盘锁死、密码修改、实时显示时间与温度、温度超限报警提示、使用射频模块恢复初始密码等功能的电子密码锁。

1 系统整体设计思想

以8位单片机STC15F2K32S2作为系统控制处理器,配备所需电源、RFID-RC522射频模块、OLED显示器、DS18B20温度传感器、3×4键盘、DS1302时钟芯片、电磁锁、蜂鸣器、LED以及其他一些电子元器件构成了电子密码锁的硬件系统平台,接着在KeiluVsion4软件平台下用C语言进行了编程,实现了由单片机所控制的八位密码按键输入正确—驱动电磁执行器开锁(OLED显示Right Open)、错误—蜂鸣器和二极管声光报警(OLED显示Wrong Retry!)、错误超过3次—键盘锁定;如果忘记了修改过的密码,可以利用射频卡恢复初始密码(预先设定写入卡片中);显示屏实时显示环境温度、当前时间、密码输入提示文字以及温度超过软件设置的温度限进行报警等功能的电子密码锁。系统整体设计框图如图1所示。

2 系统硬件设计

选用宏晶公司生产的STC15F2K32S28位单片机作为主控芯片,其具有32K程序存储空间、2K数据存储空间、内置29K的E2PROM足以保证所设计的电子密码锁的程序与数据的运行以及密码和温度报警限的存储,无需外扩存储电路,缩小了实物体积。整个电子密码锁系统的线路连接原理图用Altium Designer09软件画出,部分硬件电路连接如图2所示。下面用文字说明密码锁系统硬件的主干部分。

2.1 键盘输入模块

系统为了减少实物体积,仅采用数字密码输入,所以设计了3×4矩阵式键盘,占用单片机7个I/O口(P1.0~P1.6),除0~9的10个数字键外,还设置了清除键和确定键。利用这12个按键完成密码输入、确认、修改密码与报警限设置的功能。输入密码只是直接输入相应的数字即可。然而进入修改密码模式需同时按下“0”键和清除键,输入原始密码正确后,才能修改密码;接着同时按下“0”键和清除键进入修改报警温度值。若需要取消按键提示音,同时按下清除键和“1”键,恢复按键提示音则再同时按下清除键和“1”键。

2.2 OLED显示器

用来显示密码输入提示、温度、时间等信息的是OLED显示器,其有多种接口方式,本系统选用I2C接口方式—4引脚OLED,仅占用单片机的P2.6~P2.7两个I/O口。因本屏所用的驱动IC为SSD1306,其具有内部升压功能,所以没有专门设计升压电路。

2.3 射频模块

射频卡[8]又叫感应卡、非接触IC卡,是将射频识别技术和IC卡技术结合起来的电路卡片,无需接触,无源,如今被广泛地应用于各种领域。本系统用来恢复初始密码的射频卡选定的是PHILIPS公司的Mifare one S50非接触式IC卡,其有8K位E2PROM,分为16个扇区,每个扇区有独立的一组密码及访问控制,读写距离在10cm以内;所用RC522射频模块占用单片机5个I/O口(P2.1~P2.5),其工作电压为3.3V。

2.4 电磁锁模块

电磁锁模块主要由场效应管A1SHB、常闭电磁锁构成。场效应管的开关速度快、输入电阻低,当单片机P3.4口给出一个低电平时,场效应管导通,电磁锁工作,锁打开。

2.5 测温模块

系统采用DS18B20芯片进行测温,其测温范围为-55℃~+125℃。它是DALLAS公司推出的单总线温度传感器(与单片机P5.5相接),直接将被测温度转换为数字量,不需要外加其他的转换电路。

3 系统软件设计

本系统的软件设计采用模块化的思想,在Keil uVsion4软件开发系统下用C语言进行的编程。经过调试并修改程序中的语法错误和逻辑错误,成功后,利用下载工具STC-ISP将程序下载进STC15F2K32S2单片机。程序设计主要有主程序模块、按键模块程序、射频卡模块程序、显示模块程序、DS1302模块程序、DS18B20模块程序和报警模块程序等,下面主要介绍主程序、按键模块程序、射频卡模块程序的功能。

3.1 主程序设计

主程序主要完成显示初始化、读取E2PROM中的密码(#define IAP_ADDRESS 0x00000 //第一扇区)、按键音标志位(#define alarmflag_ADDRESS 0x00400 //第三扇区)和温度报警值(#define alarm_IAP_ADDRESS 0x01000 //第九扇区);然后利用while(1)语句使启动温度转换、显示温度、读取当前时间并显示、按键扫描与处理和射频卡读写处理程序在没有复位键按下情况下始终处于循环工作状态,其流程图如图3所示。其中E2PROM的读取程序如下:

for(i=0;i<3;i++) //读取温度报警值

{

tem[i]=IapReadByte(alarm_IAP_ADDRESS+i);

}

alarmtem=tem[0]*100+tem[1]*10+tem[2];

Delay_50ms(50);

for(i=0;i<8;i++) //读取密码

{

password[i]=IapReadByte(IAP_ADDRESS+i);

}

Delay_50ms(50);

alarmflag=IapReadByte(alarmflag_ADDRESS); //读取按键音标志位

3.2 射频卡模块程序设计

系统增加射频模块以及编写射频模块程序主要是为了在用户忘记密码后仍然能够使用此电子密码锁。利用事先所编写程序语句,即:status = PcdWrite(2, data1)把密码写入到S50卡片E2PROM块2中。然后在系统实际运行时通过不断调用射频卡模块程序来识别是否使用了要求的S50卡。如是,将对电子密码锁恢复出厂密码,同时开锁,否则返回主程序继续运行。在此模块程序中需要两次密码验证,一是验证卡片密码是否正确,另一个是二重密碼验证。此射频卡模块程序流程图如图4所示。

3.3 按键模块程序设计

按键作为外部输入器件,其功能的实现需要借助于程序。此系统中按键模块程序要完成的任务如下。

(1)密码的输入。输入八位数字密码后按下确认键后,输入的密码与存储在E2PROM中的密码比较,密码正确电子密码锁才能打开,否则报警提示且继续等待密码输入。3次错误输入将使键盘锁死。

(2)修改密码。为了安全起见,密码锁需要经常更换密码,此系统设置了修改键。第一次按下修改键后,先输入原始密码,按下确定键通过后,才能输入要修改的密码。

(3)修改温度报警限。通常,电子锁如果用于出行车辆或者温度对于所保管的物品相当重要,就需要对温度进行设限以保证被保护的对象处于安全温度范围内。此系统修改温度报警限仍然使用修改键,而且是改完密码后紧接着二次按下修改键才能更改。

(4)按键提示音设置。为了清晰提示有否按键输入或者避免提示音给他人造成干扰和引起他人注意,系统设置了按键提示音键,在不同需要时提供不同的设置。按键处理程序流程图如图5所示。

4 结语

此电子密码锁系统充分利用了STC15F2K32S2单片机资源,配备RFID-RC522射频模块等一些电子元器件,利用C语言编程,实现了具有密码修改、使用射频模块恢复初始密码、声光报警、误输超次键盘锁死、实时显示时间和温度以及温度超限报警等功能。其安全可靠、价格低廉、使用方便等性能,尤其适用于所保护物品对温度敏感或靠电动车出行的大众在户外防盗、防高温条件下使用。

参考文献

[1] 杨跃华.高可靠电子密码锁电路YYH308[J].电子世界, 1994(12):23.

[2] 刘卫卫,王志坤.一种智能电子密码锁的设计[J].硅谷, 2015(3):11-15.

[3] 王宽仁.可靠安全的智能密码锁[J].电子技术应用, 2001(2):14-16.

[4] 董海棠,张旭,冯中毅.基于单片机的电子密码锁设计[J].自动化与仪器仪表,2014(10):42-44.

[5] 邱燕,邓鹏戈.数字电子密码锁[J].现代电子技术,2010 (7):189-194.

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

[7] 朱嵘涛,徐爱钧,叶传涛等.STC15单片机和nRF2401的无线门禁系统设计[J].单片机与嵌入式系统应用,2014 (6):57-60.

[8] 崔宵语.基于物联网的校园身份识别系统的设计与实现[D].长春:长春工业大学,2015.

猜你喜欢

密码锁按键密码
密码里的爱
基于有限状态机的按键检测程序设计
密码抗倭立奇功
开启密码锁
数字密码锁的逻辑实现
一种多方向导光按键结构设计
夺命密码
按键的多种状态检测及消抖处理方法
解析某型号手机按键检测程序的缺陷