基于STM32的电子密码锁设计

2019-01-12 07:29徐庆伟郭振铎刘洲峰
中原工学院学报 2018年6期
关键词:密码锁存储器菜单

徐庆伟, 郭振铎, 刘洲峰

(中原工学院 电子信息学院, 河南 郑州 450007)

门禁系统是有效解决安全问题的方案之一,目前已成为生活中不可或缺的一部分。电子信息科学技术的发展推动了门禁系统安全性能的飞速提升,键盘式电子密码锁、指纹特征识别系统、IC卡门禁系统等已屡见不鲜。但是,指纹特征识别系统和IC卡门禁系统在家庭生活中使用具有很大的局限性,如指纹特征识别只能应用于保密要求高并且仅供个人使用的私密场合,而IC卡门禁系统的适用范围大多是公共场所,成本高、易丢失[1]。目前的电子密码锁通常以单片机为核心处理单元,无论是系统编码还是解码的生成均以软件方式进行。相比传统的机械式锁具,电子密码锁有易操作、免实物钥匙等优势,这使得电子密码锁成了当今门禁系统的主流[2]。

本设计以STM32F103系列CPU为主控芯片,利用矩阵键盘实现密码的输入,将输入的密码与存储器中原密码逐一比较,从而判断是否执行开锁功能。当密码输入不正确时,发光二极管会闪烁提醒,蜂鸣器发出报警声;连续3次错误输入或输入开锁密码时间过长,系统将自动锁定,只有用管理员密码方能解锁,而且,管理员可对该系统随时修改密码。

1 硬件模块设计

本设计硬件系统的功能包括开锁密码与管理员密码更换、界面显示、声光报警等。

1.1 硬件模块选型

1.1.1 主控芯片选型

目前常见的电子密码锁基于STC89C51系列芯片,价格便宜[3],但内存较小,IO口资源有限,后续功能扩展有很大的局限性,且功耗较高。FPGA(Field Programmable Gate Array)系列芯片针对可编程技术,具有并行执行程序的能力,速度较高[4],主要用于高速视频图像信号处理领域,但其价格昂贵,编程移植性差。MSP430系列芯片的功耗低,常用于超低功耗的工业场合[5],但其运算速度一般。STM32属于性价比较高的单片机系列,基于高性能、低成本、低功耗的Cortex-M系列内核,工作频率高达72 MHz,片上可集成32~512 kB的Flash存储器、64 kB的SRAM存储器,其IO口、定时器、串行通信接口资源丰富[6]。利用STM32自带的强大库函数进行编程,可大大缩短开发时间,而且,该芯片的开发板带有许多外围电路,如晶振、24C02存储器等,所以可降低硬件电路的设计成本。因此,在设计电子密码锁时,选用STM32系列单片机作为硬件系统主控芯片。

1.1.2 存储模块选型

Flash存储器又称闪存,其数据删除不以单个字节为单位而是以固定区块为单位的。区块大小一般为256 kB~20 MB[7]。串行EEPROM(Electrically Erasable Programmable Read Only Memory)是基于IIC-BUS 的存储器件,遵循二线制协议,它具有接口方便、体积小、掉电时数据不丢失、抗干扰性强等特点[8]。在电子密码锁系统设计时不需要太大的存储空间,且EEPROM存储器具有100万以上的读写次数。本设计根据应用条件和要求,采用带有写保护功能的串行EEPROM24C02存储器作为密码存储器。

1.1.3 显示模块选型

LCD12864显示屏的分辨率为128×64(pixel per inch),可实现16×8(pixel per inch)的ASCII字符集和16×16(pixel per inch)的汉字显示,能够支持并行和串行两种显示方式。该显示模块的性价比高,适用性强。因此,在设计电子密码锁时,考虑实际需求,选用LCD12864作为系统的显示模块。

1.2 主要硬件设计

电子密码锁系统主要由STM32控制器、4×4矩阵键盘、存储器、LCD显示器和报警电路等模块组成(见图1)。

图1 电子密码锁系统组成示意图

1.2.1 矩阵键盘

电子密码锁系统的输入模块采用4×4矩阵键盘。该键盘的8个引脚接在STM32的IO口上,其中行线为输出模式,列线为输入模式。假设4排列线(输入)为DCBA,4排列线全部被设置成输入为0的模式,即DCBA=0000;4排行线(输出)为4位(dcba),将其设置为dcba=1111。每个按键都会对应一个16进制数,程序设计中采用查表方式得到键盘的返回值,在C语言中可以采用switch语句进行键盘标号[9]。在设计中,选用STM32芯片的PA0-PA7作为键盘接口,并以位移循环的方式实现该功能。矩阵键盘电路原理如图2所示。

图2 矩阵键盘电路原理图

1.2.2 存储器

24C02存储器属于EEPROM存储器件,其引脚如图3所示。在图3中,VCC接高电平(3.3 V);VSS接公共端(地);WP为保护端(低电平有效),用于防止数据丢失。在设计中,A0、A1、A2接低电平,将A0H或A1H写入存储器,便可实现对24C02的读写。

图3 24C02存储器的引脚

24C02存储器的模块电路如图4所示。

图4 24C02存储器的模块电路图

1.2.3 LCD显示器

LCD12864液晶显示屏具有支持中文显示、易操作、显示内容多等特点。电子密码锁系统的显示模块采用串行输入模式。在该模块CS引脚为高电平时,SCLK(Scrial Clock)串行时钟的作用使得SID(串行数据口)输入的3个字节为一个指令或一个显示ASCII(American Standard Code for Information Interchange)符号的周期。这3个字节输入后,显示屏就会执行相应的功能或显示相应的字符。为了实现长时间无操作时关闭背光电源的功能,需要将背光电源输出端LED_K接在NPN型三极管的集电极上,其中发射极接地,基极接单片机的输入/输出口。通过IO口控制LCD背光电源的电路如图5所示。

图5 通过IO口控制LCD背光电源的电路图

1.2.4 报警电路

鉴于报警时声和光的同步性,可选取单片机的一个IO口进行并联控制。在电子密码锁系统设计中,选取声音频率为1 000 Hz的蜂鸣器和小功率三级管NPN3904,在Multisim软件上进行仿真测试,其理论值和设计结果一致。报警指示灯(红色LED)需要串联一个适当电阻进行保护。利用Altium Designer软件设计的声光报警模块电路如图6所示。

图6 声光报警模块电路图

2 软件模块设计

2.1 系统的初始化

电子密码锁系统初始化包括延时函数、中断优先级分组、定时器、LCD12864模块、IIC通信协议、EEPROM模块、声光模块、键盘模块等软硬件模块的初始化。

初始化部分代码如下:

delay_init();//延时函数初始化

LCD12864_Init();//LCD12864初始化

AT24CXX_Init();//24C02初始化

KEY_Init();//初始化矩阵键盘

TIMER2_Init(4999,7199); //750 ms运行一次,报警。

2.2 系统流程设计

考虑到实际应用需要,所设计电子密码锁具有声光报警功能、门铃功能、菜单功能、系统锁定功能、修改管理密码与开锁密码功能等。在长时间无操作时,系统应自动进入待机模式,以减少功耗,更加人性化。电子密码锁的系统流程如图7所示。

图7 电子密码锁的系统流程

系统的菜单功能包括更换管理密码、更换开锁密码、显示用户信息等功能。系统的菜单功能流程如图8所示。

图8 系统的菜单功能流程

系统的密码错误处理流程如图9所示。

图9 系统的密码错误处理流程

2.3 中断处理机制设计

中断处理机制在电子密码锁系统设计中占有举足轻重的地位。STM32控制芯片中共有8个定时器(TIM1~TIM8),其中TIM1和TIM8是高级控制定时器,TIM6和TIM7是基本定时器,其余皆为通用定时器[10]。

定时器工作时,先对主频进行分频(预分频系数为psc),然后根据计数模式(分为向上计数模式、中央计数模式、向下计数模式3种,电子密码锁系统设计采用向上计数模式)的装载值(arr)进行定时时长的设定[9]。时长T的计算公式如下:

式中,72为STM32的工作频率(单位为MHz)。

3 系统调试及分析

在系统调试过程中,因存储器24C02中数据量超过了256字节,而24C02的存储量为256字节,地址范围是00H~FFH,所以需将输入地址对255取余(假设输入地址是add,即add%255),以保证数据不丢失。软件仿真调试的结果证明,系统运行效果较好,符合设计要求。系统的开机界面效果如图10所示。

图10 系统的开机界面效果

为了确保系统的安全性,用户第一次使用该产品时,需要设置自己的管理密码和开锁密码,这样更加人性化。系统的初次设置界面如图11所示。

(a)设置管理员密码 (b)牢记管理员密码图11 系统的初次设置界面

在正常使用的开锁界面中按下M键,就会进入系统菜单,按上、下键可进行相应的功能选择。系统的菜单界面如图12所示。

图12 系统的菜单界面

电子密码锁系统的菜单显示功能仅显示4行字符,如果有更多层的菜单内容,只要在显示代码处将xx对4取余即可,即DisplayChar(xx%4,1,“√”)。

开锁成功后,显示特有的文字,开锁指示绿灯亮(见图13)。

图13 开锁成功的界面效果

4 结 语

本文基于STM32设计的电子密码锁系统具有稳定性好、功耗较低、便于二次开发、能够进行功能扩展等特点。在该系统IO口接上无线收发模块,可实现远程监控管理,安全性更强。

猜你喜欢
密码锁存储器菜单
静态随机存储器在轨自检算法
中国新年菜单
开启密码锁
数字密码锁的逻辑实现
本月菜单
任意2~k点存储器结构傅里叶处理器
存储器——安格尔(墨西哥)▲
一个“公海龟”的求偶菜单
一种存储器容错设计方法
新书菜单