基于STM32的电子密码锁系统设计_第1页
基于STM32的电子密码锁系统设计_第2页
基于STM32的电子密码锁系统设计_第3页
基于STM32的电子密码锁系统设计_第4页
基于STM32的电子密码锁系统设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论1.1研究目的及意义基于STM32的电子密码锁系统设计有着重要的意义,主要体现在以下几个方面:传统的门锁系统容易被钥匙复制或者撬锁等方式破解,而基于STM32的电子密码锁系统则采用数字密码或指纹等身份验证技术,极大地提高了门锁系统的安全性。传统的门锁需要使用钥匙才能开锁,而基于STM32的电子密码锁系统则可以通过输入密码或者扫描指纹等方式快速开启门锁,极‎‏大地提高了门锁系统的使用便捷性。传统的门锁需要使用钥匙等物理零部件,而基于STM32的电子密码锁系统则通过数字密码或指纹等身份验证技术实现开锁,避免了钥匙复制等成本高昂的问题,从而降低了成本。基于STM32‎‏的电子密码锁系统可以集成智能化功能,例如可与手机APP连接,实现远程控制,设置不同用户权限等,提高门锁系统的智能化水平;基于STM32的电子密码锁系统是一种基于嵌入式系统技术的创新设计,可以推动数字密码、指纹识别等技术的发展和应用,有利于促进科技创新。1.2国内外现状分析2012年,陈志远,朱叶承,周卓泉在《基于ST‎‏M32的智能家居控制系统》论文中介绍,智能感知模块(语音模块、红外遥控矩阵键盘、指纹模块、)预先记录相应的密码信息。系统工作时,用户通过任何感知模块输入密码信息,控制器将输入信息与存储的密码信息进行比对[3]。2019年,赵有贵在《电子组合锁系统模拟研究》论文中提出,可以使用C语言中的字符串比较函数实现密码比对,当按下设置键时,系统进入管理员密码输入状态。输入的密码将与EEPROM中的管理员密码进行比对,即使密码正确,锁也不会打开,只会执行管理员的权限设置。2021年,杨淑裕、鄢艳红在《基于单片机的指纹识别电子密码锁系统设计》中提到,为了方便不同地点的电子密码锁的管理和互联,该系统采用ZigBee网络无线通信数据传输方式来管理不同位置和不同地点的密码锁。ZigBee技术具有低成本、低功耗和高传输速率[1]。2021年,杨高强、李晟和张新鹏在《基于单片机的电子密码锁系统设计》中提出,密码锁使用ST‎‏M32F103RCT6嵌入式单片机作为微控制器,通过大部分互连与智能感知、智能记忆与交互、智能分析和智能处理进行交互。实现密码信息的输入、验证、识别、数据显示和记录以及系统重置[2]。2021年,常凤军、崔旭东、王晨和张玉龙在《基于ARMV7架构的ATM保险箱电子组合锁控制系统》论文中提出,使用多传感器模块可以实时监测室内环境,并通过处理中心发出警报和智能处理。每个传感器直接连接到控制器,处理后的数据直接通过ZigBee网络传输到PC终端。2021年,张冯军、王晨在《新型银行电子组合锁系统》论文中选择了LD3320专用语音识别模块,该模块不需要外部辅助Flash和RAM,并集成了处理器和数据处理单元。LD3320基于动态关键字列表识别技术。通过设置要识别的关键字列表并以字符形式将其传输到LD3320,可以识别用户说的关键字,无需其他语音训练。同年,张峰军和王琛在《新型银行电子密码锁系统》论文中选用了LD3320专用语音识别模块,该模块不需要外部辅助Flash和RAM,并集成了处理器和数据处理单元。LD3320基于动态关键字列表识别技术,通过将要识别的关键字列表以字符形式设置并传输到LD3320中,即可识别用户说出的关键字,而不需要其他语音训练。2011年SitongSunAngangTianDecai《The

DesignofElectronicCodeLock》论文中讨论了他们基于可编程门阵列FPGA采用EDA技术、QuartusII6.0工作平台和VHDL硬件描述语言设计的电子密码锁。他们采用了自顶向下的设计方法。2022年,ChengyuHu;JianxinGuo;ZhengWang;ZifanWang在《DesignofPasswordLockBasedonFingerprintRecognition》中以51单片机为基础设计的一种指纹识别电子密码锁,结合设计要求,选用STC89C54RD+单片机,指纹模块为ZFM-40,功能丰富,可以访问指纹。它通过STC89C54RD+的UART功能与指纹模块ZFM-40通信,具体交换内容以代码的形式实现。选用的液晶设备为HS12864-15C,集成度高,适合普通家庭使用。通过3线制串行数据接口和单片机进行数据传输,在HS12864-15C上显示相应的接口和数据,如:主菜单、管理员界面、开锁和错误信息等,方便用户查看和使用。当今社会科学技术发展迅速,已经发展成一套功能齐全,能够提供安全的保障,现代化的智能管理系统。现在电子密码锁得到很大的发展,取得了较大的进步,但是还是存在某些问题,需要对这些问题解决。1.3主要研究内容本文设计了一套基于ST‎‏M32的电子密码‎‏锁系统‎‏。STM32单片机搭配指纹模块、按键模块、蜂鸣器模块等。用户可以通过按键、指纹输入密码,如果连续输入3次错误的密码,系统将会响起蜂鸣器或报警器,并自动锁死,用户可以通过管理员密码来重置已经忘记的密码,本系‎‏统不仅‎‏具有通‎‏常意义‎‏上的安‎‏全防盗‎‏功能,‎‏使用户‎‏摆脱室‎‏内安防‎‏问题的‎‏困扰。1.4论文构成论文在开始部分‎‏对系统‎‏管理开‎‏发背景‎‏中,使‎‏用相应‎‏的开发‎‏技术进‎‏行论述‎‏,在对‎‏系统的‎‏生产和‎‏市场需‎‏求等分‎‏析,完‎‏成详细‎‏的论述‎‏,最后‎‏实现系‎‏统各个‎‏模块的‎‏设计、‎‏编辑,‎‏实现对‎‏功能模‎‏块的搭‎‏建,最‎‏后在这‎‏些基础‎‏上,对‎‏其开发‎‏流程完‎‏成论述‎‏。本论‎‏文的组‎‏织结构如下。第1章主要的内容是探讨系统开发的现状,包括对国内外情况的分析和对开发意义的研究第2章主要内容是系统开发中使用的核心技术和开发平台,以及对需求分析的探讨。第3章主要是分析系统硬件状况。第4章主要是解释了系统软件设计的逻辑。第5章主要是系统功能实现的测试过程。第6章主要是对系统设计的回顾与未来发展趋势的展望。

第2章系统总体结构设计2.1设计方案本设计是以ST‎‏M32F103C8T6单片机为控制‎‏核心,‎‏指纹,‎‏显示屏‎‏,继电‎‏器,独‎‏立按键‎‏与单片‎‏机‎‏,实现‎‏电子密‎‏码锁。系统框图如下:图2-1结构框图2.2功能需求分析传感器:计算机技术与通信技术之所以被公认为是信息技术的三大主柱,其原因在于硬件系统自身并不能直接获得所需要的各类信息。所以在硬件系统中常利用传感器采集多种生物,物理及化学量的测量结果及其他数据信息。指纹模块:AS608指纹模块为常见机型。模块中有串口,USB通信接口使得用户不需要对复杂图像处理及指纹识别算法进行深入学习。用户只要根据简单串口或者USB通信协议对模块进行控制,就可以实现对指纹进行采集并进行识别操作。按键模块:按键模块所采用的型号TS-1109K按键模块,按键需要具备开锁功能,即当用户输入正确的密码或指纹信息后,按下开锁按键即可实现门锁开启的功能;按键需要具备取消功能,即当用户输入错误的密码或指纹信息时,可以通过按下取消按键取消本次操作,重新输入信息;按键需要具备设置功能,即当管理员需要设置新的密码或指纹时,可以通过按下设置按键进入设置模式,进行相关操作。显示屏模块:显示屏模块所使用的是一款尺寸为0.96英寸的OLED显示器,特点显示屏需要能够‎‏显示密‎‏码输入‎‏、操作‎‏结果、‎‏系统状‎‏态等信‎‏息,以‎‏便了解系‎‏统的运‎‏行状态‎‏和操作‎‏结果。蜂鸣器模块:蜂鸣器需要具‎‏备发出‎‏声音的‎‏提示功‎‏能,以‎‏提醒用‎‏户密码‎‏输入是‎‏否正确‎‏或者系‎‏统状态‎‏是否正‎‏常。继电器模块:继电器可以通‎‏过电磁‎‏吸合和‎‏断开的‎‏方式控‎‏制电源‎‏的开关‎‏,从而‎‏控制锁‎‏的开关‎‏。继电‎‏器可以‎‏通过控‎‏制电流‎‏和电压‎‏等参数‎‏,保护‎‏系统中‎‏的电子‎‏元件,‎‏防止电‎‏子元件‎‏因过流‎‏或过压‎‏而损坏‎‏。2.3单片机型号选型方案一:51单片机所具有的EEPROM,AD功能需依靠扩展来实现,加重了软,硬件的负担;尽管I/O脚很容易用,但是在高电平下没有输出能力是51系列单片机最薄弱的地方;运行速度太慢,尤其是双数据指针。如果能够加以改进,可以为编程提供极大方便;51单片机的保护能力极差,极易将芯片烧毁;目前,它已大量地应用于教学场合,也应用于性能要求并不太高的情况。方案二:32单片机可以直接‎‏驱动数‎‏码管显‎‏示且外‎‏电路简‎‏单,它‎‏的A/‎‏D为1‎‏0位,‎‏能满足‎‏精度要‎‏求。具‎‏有在线‎‏调试及‎‏编程(‎‏ISP‎‏)功能‎‏。并具备低工作电压,低功耗,高驱动能力和高工作时的性能。32系列单片机I/O口采用双向方式,输出电路采用CMOS互补推挽输出电路。在I/O脚中加入方向寄存器来设定输入输出状态,解决了51系列I/O脚在高电平时输入输出同态问题。当置‎‏位1时‎‏为输入‎‏状态,‎‏且不管‎‏该脚呈‎‏高电平‎‏或低电‎‏平,对‎‏外均呈‎‏高阻状‎‏态;置‎‏位0时‎‏为输出‎‏状态,‎‏不管该‎‏脚为何‎‏种电平‎‏,均呈‎‏低阻状‎‏态,有‎‏相当的‎‏驱动能‎‏力,低‎‏电平吸‎‏入电流‎‏达25‎‏mA,‎‏高电平‎‏输出电流可达20mA。通过AT89C51和ST‎‏M32进行对比,根据系统要求选择相应的ST‎‏M32单片机。图2-2单片机实物图

第3章系统硬件部分设计3.1系统主要功能模块设计基于STM32的电子密码锁系统设计主要包括了指纹模块、显示屏模块、蜂鸣器模块和按键模块以及单片机最小系统设计。3.1.1STM32单片机电路设计STM32F103C8T6单片机是一款性能良好、功能丰富的STM32系列单片机,适用于中等复杂度的应用需求。它提供了强大的处理能力、丰富的外设和通信接口,以及低功耗和高效的电源管理功能,使其成为嵌入式系统开发中的一种常用选择。以下是STM32F103C8T6单片机主要性能参数:1体系结构:本单片机采用32位体系结构,以ARMCortex-M3内核为核心,设计高度集成。2.主频:单片机主频可以达到72MHz,提供了优秀的计算性能以满足高性能的要求。3存储器:单片机配备64KB的Flash存储器,用于存储程序代码和数据。同时还拥有20KB的SRAM,用于数据的临时存储。4外设和接口:单片机具备2个UART接口,可用于串行数据通信。另有1个SPI接口,用于高速串行数据传输。同时还配备2个I2C接口,可连接外部设备和传感器。此外,单片机还集成了1个12位的ADC模数转换器,提供最多16个通道,用于采集模拟信号。5多个定时器,包括通用定时器、高级定时器和基本定时器,用于实现精确的时间控制和事件触发。6.低功耗模式:支持睡眠、停止、待机等各种低功耗模式,尽可能减少功耗,提高电池寿命。7电源管理:它能够提供高效的电源管理功能。PMU包括电源监测、供电选择和电源调节等功能,确保系统电源的稳定和高效运行。8封装类型:常见的封装类型是LQFP(低轮廓正方形封装),引脚数为48,适合于面向成本和尺寸敏感的应用。综上所述,STM32F103C8T6单片机具备高性能、丰富的外设接口、大容量存储器、低功耗和强大的开发支持等优势,适用于各种嵌入式系统和电子设备的开发。它是一款可靠、灵活和功能丰富的单片机选择。图3-1单片机电路图3.1.2晶振电路功能模块设计首先,选择适合的晶振。STM32F103C8T6单片机的主晶振频率可以在4MHz至16MHz之间选择。根据您的应用需求和系统时钟要求,选择适当的晶振频率。将晶振的两个引脚(通常标有"XIN"和"XOUT")连接到单片机的相应引脚。将晶振的一个引脚(XIN)连接到单片机的引脚PA9(也可以是其他可用的GPIO引脚),将另一个引脚(XOUT)连接到单片机的引脚PA10(或其他可用的GPIO引脚)。为了稳定晶振的振荡,您需要在晶振引脚和地之间放置两个电容。典型的值是10pF至33pF之间,具体数值取决于所选的晶振和应用环境。将一个电容连接到XIN引脚和地之间,将另一个电容连接到XOUT引脚和地之间。在单片机的代码中,使用相应的寄存器配置系统时钟源和分频器。通过使用相关的寄存器,您可以选择使用外部晶振作为系统时钟源,并配置适当的分频比来获得所需的时钟频率。图3-2晶振电路功能模块原理图3.1.3复位电路功能模块设计对于STM32F103C8T6单片机的复位电路设计,以下是一种常见的示例:连接一个电阻(通常为10kΩ)从VDD引脚到NRST引脚,以确保NRST引脚保持在高电平。连接一个电容(通常为100nF)从NRST引脚到地,以提供复位电路的去抖动功能。连接一个按钮或开关,将一个端子连接到NRST引脚,另一个端子连接到地。这样,在按下按钮时,NRST引脚会被拉低,触发复位操作。在单片机上电时,会自动执行上电复位操作。确保为单片机提供稳定和干净的电源,以确保正常的上电复位。图3-3复位电路功能模块原理图3.1.4电源电路功能模块设计STM32F103C8T6单片机设计电源电路时,以下是一种常见的电路设计:将单片机的VDD引脚连接到正常工作电压的电源线。将单片机的VSS引脚连接到地线,以提供电路的共地参考。在单片机的VDD和VSS之间添加电源滤波电容,以滤除电源线上的高频噪声。典型的电容值为100nF,可以根据具体需求选择不同的电容值。为了提供稳定的电源电压,可以在电源线和单片机之间添加稳压器电路。在电源管理方面,需要选择适当的稳压器,例如线性稳压器或开关稳压器,来将输入电压稳定为单片机所需的工作电压。这样可以确保单片机在稳定的电压条件下正常运行。图3-4电源电路功能模块原理图3.1.5指纹功能模块设计在基于ST‎‏M32的电子密码锁系统中,指纹模块所采用的型号为AS608,其硬件设计需要考虑以下方面。指纹模块需要与ST‎‏M32微控制器进行通信,通信接口可以采用串口、I2C或SPI等协议。指纹模块需要配备‎‏高质量‎‏的指纹‎‏传感器‎‏,以保‎‏证指纹‎‏识别的‎‏精度和‎‏稳定性。AS608指纹模块的主要参数如下:1传感器类型:光学传感器2分辨率:508

DPI(每英寸点数)3指纹图像像素尺寸:208像素

×

288像素4识别速度:通常在0.5秒内完成识别5识别角度:360度全向识别6模板容量:通常支持300个指纹模板的存储7虚拟图像抑制(Vimage):用于防止假指纹的攻击8差错率:通常低于0.001%的误识率(FAR)9功耗:典型功耗在120mA以下图3-5指纹识别系统设计实物图综上所述,指纹模块所采用的是AS608指纹模块,通过指‎‏纹模块‎‏接口、‎‏指纹传‎‏感器、‎‏指纹存‎‏储器、‎‏指纹算‎‏法等实现指纹识别功能。图3-6指纹识别系统设计原理图3.1.6显示屏功能模块设计基于STM32的电子密码锁系统中,显示屏模块通常用于显示系统状态、密码输入和指纹识别结果等信息,其硬件设计需要考虑以下方面:显示屏类型:显示屏可以采用LCD、LED、OLED等类型,不同类型的显示屏有不同的显示效果和功耗特点。显示屏接口:显示屏需要与STM32微控制器进行通信,通信接口可以采用SPI、I2C或串口等协议。显示控制器:显示器需要一个显示控制器来支持图形和文本等内容的显示。显示屏的主要参数如下:1尺寸:0.96英寸2技术:OLED(有机发光二极管)3分辨率:通常为128x64像素或更低4对比度:高对比度,显示深黑色和鲜亮的颜色5可视角度:广视角,图像在不同角度下保持清晰度和颜色鲜艳度6响应速度:快速响应,适合显示动态内容和高刷新率7自发光:每个像素都是自发光的,不需要背光模块8功耗:低功耗,只有在需要显示内容时才发光图3-7显示屏功能模块实物图综上所述,显示屏模块所使用的是一款尺寸为0.96英寸的OLED显示器,显示屏应能够呈现与密码输入、操作结果和系统状态相关的信息,从而使用户能够了解系统的运行方式以及他们的操作所带来的结果。图3-8显示屏功能模块原理图3.1.7按键功能模块设计在基于ST‎‏M32的电子密码锁系‎‏统中,‎‏按键模‎‏块通常‎‏用于实‎‏现用户‎‏的密码‎‏输入,‎‏其硬件‎‏设计需‎‏要考虑‎‏以下方面:按键需要与ST‎‏M32微控制器进行通信,通信接口可以采用GPIO口、矩阵键盘接口等协议。按键排列方式需要‎‏与系统‎‏设计相‎‏适应,‎‏通常采‎‏用行列‎‏式矩阵‎‏按键、‎‏独立式‎‏按键等方式。按键的主要参数如下:1连接器类型:针脚连接器2电路设计:包含按键开关和相关电路元件3接口协议:GPIO接口4功能:实现启动、停止和选择等功能5可靠性和耐久性:设计考虑了长时间和频繁使用的要求6简单易用:提供简单直观的用户交互方式图3-9按键功能模块实物图综上所述,按键模块在基于ST‎‏M32的电子密码锁系统中需要考虑按键数量、按键类型、按键接口、按键排‎‏列方式、按键反馈、供电和电源管理以及尺寸和安装等方面的硬件设计。图3-10按键功能模块原理图3.1.8蜂鸣器功能模块设计在基于ST‎‏M32的电子密码锁系统‎‏中,蜂‎‏鸣器通‎‏常用于‎‏发出声‎‏音提示‎‏用户输‎‏入密码‎‏的正确‎‏性。蜂鸣器主要参数如下:1工作电压:一般为3V至12V,蜂鸣器采用电压为5V。2频率范围:通常在1kHz至4kHz之间,不同型号的蜂鸣器可能有不同的频率范围。3声压级:以分贝(dB)为单位衡量,表示蜂鸣器产生的声音的音量大小。常见的声压级范围是70dB至100dB。4响应时间:表示蜂鸣器从接收到驱动信号到开始发声的时间。在几毫秒至几十毫秒之间。图3-11蜂鸣器功能模块实物图以‎‏下是蜂‎‏鸣器模‎‏块的硬‎‏件设计步骤:确定蜂鸣器的型号和工作电压:常用的蜂鸣器类型有有源与无源之分,有源蜂鸣器内置于驱动电路中,仅需输入信号就能发出声,无源蜂鸣器则需外接驱动电路。本文可选择工作电压3.3V或者5V的有源蜂鸣器。确定驱动电路:由于有源蜂鸣器内置驱动电路,因此只需要通过一个GPIO口连接蜂鸣器即可。在ST‎‏M32中,可以使用定时器或GPIO输出来驱动蜂鸣器,这里我们选择GPIO输出。具体来说,将蜂鸣器的正极连接到一个GPIO口,将负极连接到GND。图3-12蜂鸣器功能模块原理图3.1.9继电器功能模块设计继电器一般包括铁芯,线圈,衔铁,触点簧片。当线圈两端加一定电压后,线圈内就有一定电流通过,由此引起电磁效应。电磁力会克服返回弹簧拉力而吸引衔铁接近铁芯。这将造成衔铁动触点和静触点(通常是常开触点)之间的接触关闭。线圈停电后电磁吸力消失,衔铁在弹簧反作用力下回到原位置,动触点和原静触点(通常是常闭触点)脱离打开。图3-13继电器原理图第4章软件系统设计4.1软件主流程图在程序开始执行时,先对单片机进行初始化,这样可以设置相应的输入/输出端口和中断寄存器,以便后续操作能够正常进行。图4-1系统软件主流程图4.2指纹程序的设计基于ST‎‏M32的电子密码锁系统可以使用指纹识别作为一种身份验证方法。指纹识别需要一个指纹模块来采集指纹图像,并使用算法将图像转换为特征值。以下是基于ST‎‏M32的电子密码锁系统中指纹软件的设计流程:图4-2指纹流程图当用户需要解锁时,他们会将手指放在指纹模块上,该模块将捕获指纹图像并将其与存储在ST‎‏M32芯片中的指纹模板进行比较。硬件接口需要使用ST‎‏M32的串口或SPI接口来连接指纹模块,并使用GPIO控制模块上的其他引脚。4.3显示屏程序的设计首先需要通过ST‎‏M32的SPI或其他接口初始化显示屏。通常需要配置显示屏分辨率、像素格式等参数,并在显示屏上显示欢迎界面。在系统运行时,需要在显示屏上显示当前系统状态,如待机、输入密码、验证指纹、开锁成功等信息。这些信息可以通过调用显示屏驱动程序中的函数,在显示屏上显示相应的文本和图标。密码输入框是一个用于用户输入密码的界面,它可以在屏幕上显示,并显示用户当前输入的数字。用户可以使用按键或其他输入设备输入数字,并使用显示屏上的光标指示当前输入位置。在基于ST‎‏M32的电子密码锁系统中,显示屏可以用于显示当前系统状态、密码输入、指纹识别结果等信息。以下是基于ST‎‏M32的电子密码锁系统中显示屏软件的设计流程:图4-3显示屏流程图需要注意的是,显示屏的驱动程序需要与具体的显示屏芯片和显示屏接口匹配。在设计和实现显示屏驱动程序时,需要考虑显示屏的特性和性能,如分辨率、像素密度、显示速度、显示色彩深度等。同时,为了提高系统的可靠性和稳定性,还需要进行充分的测试和验证。4.4按键程序的设计使用ST‏M32的GPIO口来检测按键,首先要初始化GPIO口,配置成输入模式。同时还需对GPIO口上下拉阻进行设定,保证按键没有按动时GPIO口输入电平维持高电平或者低电平。这就保证了按键不被触发情况下GPIO口始终处于平稳状态。这样可以防止电路中出现浮动电平,从而保证按键的可靠性和稳定性。在系统运行时,需要定时检测按键的状态。在基于ST‎‏M32的电子密码锁系统中,按键用于输入密码、进入管理员模式、开锁等操作。以下是基于ST‎‏M32的电子密码锁系统中按键软件的设计流程:图4-4按键程序流程图需要注意的是,不同的按键可能需要不同的处理方式,如短按、长按、双击等,因此在设计和实现按键处理程序时需要充分考虑这些情况。同时,为了提高系统的可靠性和稳定性,还需要进行充分的测试和验证。4.5蜂鸣器程序的设计在基于ST‎‏M32的电子密码锁系统中,蜂鸣器可以用于提示用户操作结果,如开锁成功或失败等。以下是基于ST‎‏M32的电子密码锁系统中蜂鸣器软件的设计流程:图4-5蜂鸣器软件流程图需要注意的是,蜂鸣器的控制程序需要根据具体的蜂鸣器类型和工作条件进行设计和实现。在实现过程中,需要充分考虑蜂鸣器的响应时间和稳定性,并且需要进行充分的测试和验证,以提高系统的可靠性和稳定性。4.6继电器程序的设计继电器是一种电控开关设备,它可以通过软件程序进行控制。首先,将继电器正确连接到微控制器上。继电器有控制端和继电器负载端。控制端连接到微控制器的IO口,而负载端连接到需要控制的电路或设备。以下是继电器的软件程序软件的设计流程:图4-6继电器软件流程图继电器是一种电气开关装置,用于控制高电压/高电流电路。软件程序设计可以通过控制继电器的驱动电路来实现对继电器的操作。4.6本章小结分析系统的功能,讨论各个功能模块的要求,并对这些功能模块的设计进行流程化,这可以确保系统的完整性,使其能够有效地实现相应的功能。这样做可以方便后期的系统开发,减少后期的工作量。第5章系统测试5.1系统实物图图5-1系统完整实物图5.2测试目的软件测试的目的是旨在找出系统中可能存在的不足,尽可能多地通过破坏性强的试验过程来暴露软件存在的误差,从而增强其完整性。所以在测试阶段检测出较多问题可以较好的检测出软件存在的不足并加以解决。尽管在测试过程中发现错误的数量可能会让人感到不舒服,但这是为了确保软件的质量,并最终提供更好的用户体验。因此,软件测试不是为了演示软件的正确功能,而是为了提高软件的完整性。5.3按键功能测试按键模块如图所示5-2所示图5-2按键模块实物图如图5-3显示屏实物图所示,当输入密码时,系统默认密码为"123456",并在认证成功后,显示屏将显示“授权进入”,表明已获得授权进入系统。图5-3显示屏实物图当遇到密码遗忘情况时,我们提供了一种备用选项。通过输入超级密码"131459",您将进入管理员超级模式。此时,如图5-4将显示一个输入新密码的选项,您可以在此处输入新密码以修改密码。图5-4显示屏实物图在密码输入过程中,假如不小心输入了错误的一位密码,您可以使用键盘上的“*”键来删除该位密码。此外,若您想删除所有已输入的密码,可以按下“#”键来清除所有已输入的密码信息。然而,若连续三次输入错误密码,为确保系统安全,按键将被锁定,同时蜂鸣器将发出警报声。这一安全机制旨在防止未经授权的访问尝试,请在输入密码时谨慎操作,并确保准确性,以避免误操作导致的不便和延误。5.4指纹功能测试指纹模块如图所示5-5所示图5-5指纹模块实物图在按键上当按下按键上的C键时,系统将进入指纹录入模式。这意味着可以通过指纹识别来增加额外的安全层级。如图5-6所示将展示一个添加指纹的界面,提供了便捷的方式来录入您的指纹信息。通过此功能,可以将独特的生物特征与电子密码锁关联起来,以确保只有授权的个人才能访问。指纹录入是一项先进的技术,它为您提供了无需记忆密码的便利,并提供了更高水平的身份验证。图5-6指纹录入示例图当您按下键盘上的D键时,系统将进入指纹删除模式。这意味着您可以删除之前录入的指纹信息,以便对系统中的身份验证进行维护和管理。如图5-7所示,显示屏将展示一个指纹删除界面,以供您执行相应的操作。通过这项功能,您可以灵活地管理系统中存储的指纹数据,确保只有授权的指纹可以用于身份验证。这有助于防止未经授权的访问,并提高系统的整体安全性。'图5-7指纹删除示例图第6章总结与展望本章总结了整个系统开发的过程,包括选题、开发和项目完成后的心得体会。整个开发过程让我受益匪浅,从选题开始到项目完成,都是宝贵的经验。基于ST‎‏M32的电子密码锁系统是一种高效、安全、实用的现代化安全保障系统,其具有密码输入、指纹识别、显示屏、按键和蜂鸣器等多种功能,能够满足用户的各种需求。以下是基于ST‎‏M32的电子密码锁系统设计的总结:设计电子密码锁系统时,需要考虑整体框架设计、硬件选型、模块划分、通信协议等方面。系统应具备扩展性、可靠性和安全性。硬件设计包括选择适当的芯片、传感器、显示屏等设备,并考虑电路板的可靠性和安全性。软件设计涉及编写程序代码,实现密码输入、指纹识别、显示屏、按键和蜂鸣器等功能,考虑稳定性、安全性和可扩展性。测试和验证阶段包括单元测试、集成测试和系统测试,以确保系统满足需求、质量和可靠性。综上所述,基于ST‎‏M32的电子密码锁系统设计需要考虑多种因素,包括硬件设备、程序代码、系统性能和安全性等。只有在充分考虑这些因素的基础上,才能设计出高效、安全、实用的电子密码锁系统。基于ST‎‏M32的电子密码锁系统设计在未来还有很大的发展空间和应用前景。以下是基于ST‎‏M32的电子密码锁系统设计的展望:未来基于ST‎‏M32的电子密码锁系统设计将注重更高的安全性,采用多种身份认证方式和强化数据加密等措施。此外,系统将增加更多功能,如智能家居控制和远程控制。通过人工智能等技术实现自动化控制和智能化管理,提高便利性和效率。同时,系统将具备更高的扩展性,能够与其他系统无缝集成,满足不同应用场景需求。总而言之,未来的基于ST‎‏M32的电子密码锁系统将提供更安全、便捷、智能的生活体验。

参考文献[1]杨淑裕,鄢艳红.基于单片机的指纹识别电子密码锁系统的设计[J].[2]杨高强,李晟,张新鹏.基于单片机的电子密码锁系统设计[J].应用科学学报,2021.[3]陈志远,朱叶承,周卓泉等.一种基于ST‎‏M32智能家居控制系统[J].电子技术应用,2019.[4]张洋,刘军,严汉宁等.原子教你玩ST‎‏M32.北京航空航天大学出版社,2021.[5]李晓晗,李峰,高鹏宇等.基于LD3320语音识别和NRF2401无线通信的家居节能照明开关[J]电子世界,2021.[6]孙炜程,周晓宇,张华.指纹识别电子密码锁设计[J].福建电脑,2022.[7]任毅.指纹识别系统的研究和实现[J].南京邮电大学,2020.[8]任志国.基于ARM的嵌入式指纹采集与识别系统的研究[M].南京航空航天大学出版社,2019,.[9]梁竹君.红外遥控电子密码锁的设计与实现—可自动调节背景光的1602液晶[J].电子制作,2021[10]江世明,徐建明,朱群峰,等.单片机原理与应用[M].上海交通大学出版社,2019[11]李永际.基于D触发器的触摸式电子密码锁设计[J].电子技术,2022,51(08):20-21.[12]李长灏,杨帆,马如龙,刘航,李伟,周慧.基于51单片机的电子智能密码锁[J].电脑知识与技术,2022,18(12):81-83.[13]邹健.基于单片机的电子密码锁系统设计[J].无线互联科技,2022,19(05):53-54.[14]徐庆伟,郭振铎,刘洲峰.基于ST‎‏M32的电子密码锁设计[J].中原工学院学报,2018,29(06):61-65.[15]刘永雷,赵曰峰.基于STM32的智能电子密码锁系统设计[J].山东师范大学学报(自然科学版),2018,33(03):322-327.[16]蓝波,孙浩然,赵通,刘国栋.基于STM32的疫情监控系统终端设计[J].电子设计工程,2023,31(02):82-86+93.[17]曾一凡,杨振南,王亚勇.基于STM32的智能物料搬运机器人的设计[J].仪器仪表用户,2023,30(01):9-12.[18]邓军,王泽,张玺,习特铭,周佳葆.基于STM32的北斗定时定位实验系统设计[J].实验室科学,2022,25(06):82-85.[19]CHANGFengjun,CUIXudong;WANGChen;ZHANGYulong.ATMSafeElectronicCombinationLockControlSystemBasedonARMV7Architecture.[P].2021.[20]FengJunChang,ChenWang.NewBankElectronicCombinationLockSystem.2020. [21]NadiaMohamadNasir,IrniHamizaHamzah.ElectroniccombinationlocksystemusingverilogHDL.2021.[22]ZhaoYouGui.Electroniccombinationlocksystemsimulationresearch[P].2019.[23]AdamuMurtalaZungeru.Anelectronicdigitalcombinationlock:Apreciseandreliablesecuritysystem[C]2018.

附录A总原理图

附录B程序#include"sys.h"#include"delay.h"#include"led.h"#include"key_m.h"#include"lcd1602toOLED.h"#include"buzzer.h" #include"stmflash.h"#include"as608.h"#include"password.h"#include"IOout.h"//#defineLEN20//u16eep[LEN];//externu8IC_Lib[3][4];enumMODE_e{OPENDOOR=0,//搜索授权LOGIN_FG,//注册指纹LOGOUT_FG,//注销指纹RESET_PW//重置密码};u8ICbuf[4]={0};//IC缓存charstr[]="0123456789abcdef";u8refresh=1;u8sta;voidRelay(u8_sta);//显示函数voidDisIC_hex(void);voidDis_LOGIN_IC(void);voidDis_LOGOUT_IC(void);voidDis_LOGOUT_FG(void);voidDis_LOGIN_FG(void);//指纹用u8press_FR(void);voidAdd_FR(u16_id);voidOPEN_THE_DOOR(u8id){LCD_GotoXY(3,1);//"0123456789abcdef"LCD_Print("授权进入");RelaySW(1);delay_ms(2000);RelaySW(0);}externvoidSaveFlash(void);externvoidReadFlash(void);intmain(void){//u8icID;//IC卡用u8cnt;u8err_cnt=0;u8key;u8sta;u8mode=OPENDOOR;u8fingerID=1;u16valid_ID_Num;//指纹模块内有效指纹模板个数/*bit:[31~24][23~16][15~8][7~0]-->valid_IDvalid_ID_Idx[3]valid_ID_Idx[2]valid_ID_Idx[1]valid_ID_Idx[0]*/u8valid_ID_Idx[4];//u32*valid_ID=(u32*)(&valid_ID_Idx[0]);//s8i;//使用内部高速晶振HSIRC(8Mz)//配置SYSCLK->36MHz,HCLK->36MHz//APB1->36MHz,APB2->36MHz,ADC1,2->18MHzsysClockHSI_Config();MY_NVIC_PriorityGroupConfig(2);delay_Init(SysClockFreq/1000000);printf("SysClockFreq=%dMHz\r\n",SysClockFreq/1000000);LED_Init();delay_ms(50);LCD_Init();Buzzer_Init();KeyM_Init();RelaySW(0);AS608_Init();//检测指纹模块 while(PS_HandShake(&AS608Addr)) { LCD_GotoXY(0,0); LCD_Print("connectagain"); delay_ms(500);LED=!LED; }//读取指纹模板个数if(0==PS_ValidTempleteNum(&valid_ID_Num)){LCD_Clear();LCD_GotoXY(0,0);sprintf(str,"FGLibNum=%d",valid_ID_Num); LCD_Print(str);}ReadFlash();Beep(200);Start:if(0==PS_ValidTempleteID(valid_ID_Idx)){fingerID=32;for(i=0;i<32;i++){if(((*valid_ID)>>i)&0x01){}else{fingerID=i;break;}}}mode=OPENDOOR;LCD_Clear(); LCD_GotoTitle(20);LCD_Print("指纹密码锁");disHome();Clr_InputPW();//按键数据无效while(1){delay_ms(1);cnt++;if(cnt>200){cnt=0;LED=!LED;if(err_cnt>3){LCD_Clear();LCD_GotoXY(0,1);LCD_Print("LOCKING..."); while(1){Beep(200);}}if(LED)//扫描指纹{if(mode==OPENDOOR)sta=press_FR();if(sta!=0xff)//识别到指纹{if(sta!=0xee){LCD_Clear();LCD_GotoXY(0,0);sprintf(str,"FG.ID=%d[OK]",sta);LCD_Print(str); err_cnt=0;OPEN_THE_DOOR(2);}else{Beep(100);err_cnt++;}gotoStart;}}}key=Key_Map(KeyScan(0));//扫描矩阵按键if(key){Beep(200);if(key=='C'){Clr_InputPW();mode=LOGIN_FG;Dis_LOGIN_FG();}elseif(key=='D'){Clr_InputPW();mode=LOGOUT_FG;Dis_LOGOUT_FG();}else{sta=InputPassword(key);if(0xFF==sta){LCD_GotoXY(0,0);//"0123456789abcdef"LCD_Print("InputANewPW.");disHome();mode=RESET_PW;}elseif(0x0F==sta)//开门{OPEN_THE_DOOR(0); err_cnt=0;gotoStart;}elseif(0xEE==sta)//密码错误{LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("password[error]");printf("password[error]");Beep(200);Beep(200);Beep(200);delay_ms(1000);err_cnt++;gotoStart;}}}while(mode==RESET_PW)//重置密码{key=Key_Map(KeyScan(0));//扫描矩阵按键if(key=='A'||key=='B'||key=='C'||key=='D')gotoStart;//放弃密码重置elseif(key){Beep(200);sta=SetPassword(key);if(sta==0xFF){LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("resetPW.[OK]");printf("resetPW.[OK]\r\n");Beep(1000);delay_ms(1000);gotoStart;}elseif(sta==0xEE){LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("resetPW.[err]");printf("resetPW.[err]\r\n");Beep(200);Beep(200);Beep(200);delay_ms(1000);gotoStart;}}}while(mode==LOGIN_FG){if(fingerID>=32){LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("FG.Libisfull");Beep(300);Beep(300);Beep(300);delay_ms(2000);gotoStart;}Add_FR(fingerID);fingerID++;gotoStart;}while(mode==LOGOUT_FG){sta=press_FR();if(sta!=0xFF){if(sta!=0xEE){PS_DeletChar(sta,1);LCD_GotoXY(0,1);//"0123456789abcdef"//"FG.ID=%ddel[OK]"sprintf(str,"FG.ID=%ddel[OK]",sta);LCD_Print(str);printf("fgID=%ddel[OK]\r\n",sta);Beep(500);delay_ms(500);}else{LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("FG.delete[Err]");printf("FG.delete[Err]\r\n");Beep(200);Beep(200);delay_ms(500);}gotoStart;}else{key=Key_Map(KeyScan(0));//扫描矩阵按键if(key){Beep(200);if(key=='D')//清除所有指纹{LCD_GotoXY(0,1);if(0x00==PS_Empty()){//"0123456789abcdef"LCD_Print("ClearAllFG.OK");}else{//"0123456789abcdef"LCD_Print("ClearAllFGErr");}delay_ms(800);gotoStart;}else//其他按键退出{gotoStart;}}}}}}//刷指纹//返回值:0-没有检测到指纹,0xEE-识别错误,其他未模板ID值u8press_FR(void){ SearchResultseach; u8ensure;charstr[20];//printf("\r\n正在获取指纹图像...");//if(readPS_Sta())return0; ensure=PS_GetImage();//EF01FFFFFFFF010003010005 if(ensure==0x00)//获取图像成功 { ensure=PS_GenChar(CharBuffer1);//CharBuffer1=1 if(ensure==0x00)//生成特征成功 { ensure=PS_HighSpeedSearch(CharBuffer1,0,100,&seach); if(ensure==0x00)//搜索成功 { //"0123456789abcdef"sprintf(str,"MatchID:%d",seach.pageID);Beep(200);LCD_GotoXY(0,1);LCD_Print(str); returnseach.pageID; } else{LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("SearchID[Err]"); Beep(100);Beep(100);delay_ms(800);return0xEE;}}else{//printf("\r\n生成特征错误:");EnsureMessage(ensure);}delay_ms(1000);//延时后清除显示 }else{//printf("\r\n获取指纹图像失败:");EnsureMessage(ensure);} return0xFF;}//录指纹voidAdd_FR(u16_id){ u8i=0,ensure,processnum=0; while(1) { switch(processnum) { case0: i++;LCD_GotoXY(0,1);//"0123456789abcdef" LCD_Print("touchfinger");if(i){LCD_GotoXY(0xb+i-1,1);LCD_WrDat('.');} ensure=PS_GetImage(); if(ensure==0x00) { if(ensure==0x00) {//printf("Fingerprintcorrect\r\n");//指纹正确 i=0; processnum=1;//跳到第二步 Beep(200); }else{//printf("\r\n生成特征错误:");EnsureMessage(ensure);} }else{//printf("\r\n采集图像错误:");EnsureMessage(ensure);} break; case1: i++;LCD_GotoXY(0,1);//"0123456789abcdef" LCD_Print("touchagain");if(i){LCD_GotoXY(0xb+i-1,1);LCD_WrDat('.');} ensure=PS_GetImage(); if(ensure==0x00) { ensure=PS_GenChar(CharBuffer2);//生成特征 if(ensure==0x00) { //printf("Fingerprintcorrect\r\n");//指纹正确i=0; //processnum=2;//跳到第三步processnum=3;//跳过比对 Beep(200); }else{//printf("\r\n生成特征错误:");EnsureMessage(ensure);} }{//printf("\r\n采集图像错误:");EnsureMessage(ensure);} break; case2://printf("Comparetwicefingerprint...\r\n");//对比两次指纹 ensure=PS_Match(); if(ensure==0x00) { //printf("Twicefingerprintaresame!\r\n");//两次指纹是一样的 //"0123456789abcdef" LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("Twicearesame");processnum=3;//跳到第四步 } else { //printf("Comparefail,pleastouchagain!\r\n");//对比失败,请重新按手指 //"0123456789abcdef"LCD_GotoXY(0,1);//"0123456789abcdef"LCD_Print("Comparefailed");EnsureMessage(ensure); i=0; processnum=0;//跳回第一步 }delay_ms(500); break; case3://printf("Generatefingerprinttemplate\r\n");//产生一个指纹模板 ensure=PS_RegModel(); if(ensure==0x00) { //printf("Generatefingerprintsuccess\r\n");//生成指纹模板成功 //"0123456789abcdef"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论