基于STM32的家用密码存储系统设计
2018-11-01杜栓徐登
杜栓 徐登
摘要:设计一套家用密码存储系统,利用STM32 的普通IO口模拟IIC时序,实现门禁系统等密码在AT24C02存储器中的写入和读取,并在LCD1602模块上显示系统运行过程和结果。系统软硬件设计简洁合理,效率高。
关键词: 密码存储系统; STM32; AT24C02
中图分类号: TP368.1 文献标识码:A 文章编号:1009-3044(2018)18-0255-02
Design of Home Password Storage System Based on STM32
DU Shuan,XU Deng
(School of Information, Changzhou Vocational Institute of Mechatronic Technology, Changzhou 213164, China)
Abstract: A set of home password storage system is designed, using the common IO port of STM32 to simulate the time sequence of IIC, to realize the writing and reading of the entrance guard system in the AT24C02 memory, and to display the running process and results of the system on the LCD1602 module. The software and hardware design of the system is simple and reasonable, and the efficiency is high.
Key words: Cipher storage system; STM32; AT24C02
随着物联网和嵌入式技术的发展,智能门禁系统成为是智能家居的一个重要发展领域之一,逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等方面起着巨大的作用。而密码存储系统作为门禁系统的重要组成部分,具有重要的应用价值。
本文设计了一套家用密码存储系统,利用STM32 的普通IO口模拟IIC时序,实现门禁系统等密码在AT24C02存储器中的写入和读取,并在LCD1602模块上显示系统运行过程和结果。系统软硬件设计简洁合理,效率高。
1 系统整体方案设计
图1所示为系统整体框图,处理器采用STM32F103ZET6,按键采用独立按键,液晶采用1602液晶,EEPROM存储器采用AT24C02。
系统具体功能如下:开机后,如果按下代表写入密码数据的按键key0,则将程序中预设的一个字节密码数值(例如0x55)写入AT24C02内部,同时在1602液晶第一行上显示“Password is set!”字符串;如果按下另一个代表读取密码数据的按键key1,则用来执行密码读取操作,将前面写入的一个字节密码数据读取出来,并在1602液晶第二行上显示“Password is 0x**”(注:“**”代表前面写入的密码数值,如果事先写入的是0x55,则显示“Password is 0x55”)。
2 系统硬件设计
2.1 硬件设计思路
电路设计需要用到的硬件资源有:
(1)key0和key1独立按键
(2)1602液晶显示模块
(3)EEPROM存储器AT24C02
2.2 硬件电路设计
硬件电路原理图如下图2所示:按键key0、key1分别与STM32的PA0和PA1连接;1602液晶的RS、RW、EN分别与PA2、PA3、PA4相连,数据口D0~D7对应于PB0~PB7;AT24C02的SCL和SDA 分别连在STM32的PA5和PA6上。
3 系统软件设计
3.1 软件设计思路
本项目的软件设计思路如下:
(1)按键驱动编写
对按键key0、key1对应的GPIO端口进行初始化,打开对应的GPIO时钟,设置端口输入方式以及GPIO速度等。
(2)1602液晶驱动编写
对1602液晶RS、EN、RW、D0~D7引脚对应的GPIO端口进行初始化,打开对应的GPIO时钟,设置端口输入输出方式以及GPIO速度等。同时按照相应液晶读写時序编写相应的液晶读写函数。
(3)模拟I2C驱动编写
对模拟I2C引脚对应的GPIO端口进行初始化,打开对应的GPIO时钟,设置端口输入输出方式以及GPIO速度等。同时按照相应I2C时序和协议编写相应的I2C读写函数。
(4)AT24C02读写驱动编写
根据相应的I2C时序和AT24C02读写协议编写相应的AT24C02读写函数。
(5)主程序编写
在完成前面四个步骤之后,按照项目的任务要求,系统上电后首先对按键、液晶、AT24C02进行初始化,然后进入程序主循环按键检测,如果写入按键key0按下了,则将密码数值写入AT24C02;如果读取按键key1按下了,则将密码数值从AT24C02内读取出来。具体程序流程图如图3所示。
4 运行测试
在代码编译成功之后,我们通过下载代码到 STM32,程序复位运行后,LCD1602被初始化,此时屏幕亮起,等待密码写入和读取,如图4所示。
4.1 密码数据写入
先按key0按键写入密码数据(上述程序中写入的数据是“0x55”,数据写入存储单元是“200”,用户可以在程序中任意改写数据核查存储单元),并在1602液晶上显示“Password is set!”字符串,得到如图5所示。
4.2 密码数据读取
在前面写入成功的基础上,按key1读取之前写入的数据(上述程序中写入的数据是“0x55”,数据写入存储单元是“200”,用户可以在程序中任意改写数据核查存储单元),并在1602液晶上面显示“Password is 0x55!”字符串,如图6所示。至此任务要求全部实现!
5 总结
本文主要设计了基于STM32的家用密码存储系统,综合应用了键盘、LCD1602液晶、I2C总线、EEPROM芯片等硬件,并进行了相关的代码调试。实现了门禁系统等密码在AT24C02存储器中的写入和读取,并在LCD1602模块上显示了系统运行过程和结果。经过测试,该系统软硬件设计简洁合理,效率高。
参考文献:
[1] 张铎.自动识别技术应用案例分析[M].武汉:武汉大学出版社,2010:56-67.
[2] 范书瑞,李琦,赵燕飞.Cortex-M3 嵌入式处理器原理与应用[M].北京:电子工业出版社,2011:34-36.
[3] 汪浩.物联网的触点:RFID 技术及专利的案例应用[M].北京:科学出版社,2010:33-39.