【基于STM32智能门锁系统的设计10000字(论文)】_第1页
【基于STM32智能门锁系统的设计10000字(论文)】_第2页
【基于STM32智能门锁系统的设计10000字(论文)】_第3页
【基于STM32智能门锁系统的设计10000字(论文)】_第4页
【基于STM32智能门锁系统的设计10000字(论文)】_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

PAGE33基于STM32智能门锁系统的设计目录TOC\o"1-3"\h\u315211绪论 1201181.1选题背景 1326341.2国内外现状 193971.3研究意义 282532系统设计方案和主要芯片介绍 3294832.1系统设计目标 3215622.2系统设计方案 3256532.3主要芯片介绍 463372.3.1STM32F407 450802.3.2OLED显示屏 6178692.3.34X4矩阵键盘 7158572.3.4RFID(RC522) 811342.3.5指纹(AS608) 9228843系统构成模块 114273.1电源模块 11292003.2显示屏模块 1123423.2矩阵键盘模块 13243843.3RFID(MFRC522)模块 14200523.4指纹(AS608)模块 1688654软件设计与实现 1882014.1系统总体设计 18235744.1.1程序流程图 18249814.24X4矩阵键盘程序设计 19247864.2.1功能程序流程图 19158374.2.2部分程序分析 19145004.3RFID(MFRC522)程序设计 20276554.3.1功能程序流程图 2067554.3.2部分程序分析 20232194.4指纹(AS608)程序设计 2222514.4.1程序流程图 22322184.4.2部分程序分析 22315784.5汉字取模 2473675系统测试及结果 2568835.1系统硬件连接及测试 25104485.2系统软件功能测试 2561355.2.14X4矩阵键盘代码调试 26109215.2.2OLED显示屏代码调试 2644345.2.3MFRC522射频模块代码调试 279085.2.4指纹识别模块代码调试 27294185.2.4步进电机代码调试 28267786结论和展望 29149416.1结论 29291976.2展望 29132527参考文献 311绪论随着计算机技术和通信技术的飞速发展,人类的生活水平有着日新月异的变化,“以人为本、舒适、便利、智能化”已成为家居系统的重要设计理念,也成为必然的趋势[1]。同时,人们对安全的重视度也在逐步的提高。而锁,就是其中一项重要的安全保障,它是我们财产安全的一道保护线。保护着人们的财产安全。而密码锁也从传统又大又笨重的样式,改变为现在不足婴儿巴掌大小的芯片设计的密锁。锁具因为其高可靠性的有点,一直从古代被广泛的沿用到现在。另一方面,人们不仅仅需要安全可靠的防盗保护,在使用的过程中也需要操作能够方便快捷,这已成为在锁具技术发展过程中必要的趋势方向。随着电子技术的发展,锁定技术已经成为一个恒定不变的方向,电子产品已经与人们的日常生活密不可分,智能门锁就可以作为一个很好的例子。例如,常见的电子锁都具有锁定报警功能。报警和联锁,在安全防盗方面,已经完美的将传统机械锁取而代之,并且大大地提升了安全性和性能。同时,伴随着是单片机的普及,通过微处理器进行控制的智能密码锁应运而生。除此之外,不同的外部硬件,也导致了锁具有不同的功能,大幅度的提高了锁的安全性和可靠性,得到了广泛的应用。2系统设计方案和主要芯片介绍2.1系统设计目标智能门锁系统采用STM32F407作为主控芯片,OLED屏负责显示,分别使用密码输入、指纹识别、RFID卡验证模块,实现智能门锁功能。智能门锁系统主要由以下模块组成:单片机模块、密码输入模块、RFID射频模块、AS608指纹模块、OLED显示屏。同时依靠keil5进行软件编程,组成整个智能门锁系统,以实现以下多种功能:(1)未成功解锁时,OLED显示屏进行实时显示日期和时间;成功解锁后,可显示功能选择菜单;(2)通过程序设计过程中设置的初始密码进入系统,进行密码、RFID卡号、指纹等身份信息的录入;(3)可通过密码输入、RFID卡、指纹不同方式进行身份验证,身份验证正确后,电机转动实现开门;(4)成功解锁后,可进入功能选择菜单:实现密码、指纹、RFID卡信息和时间日期的管理;(5)虚位密码解锁;(6)断电存储功能。2.2系统设计方案智能门锁系统采用STM32F407作为主控芯片,分别使用密码输入、指纹识别、RFID卡验证模块,实现智能门锁功能。门锁系统主要组成:由单片机模块、密码输入模块、RFID射频模块、AS608指纹模块、OLED显示屏组成。整个系统初始启动时,主控芯片会同时将密码输入模块、指纹识别模块、RFID卡验证模块也一起初始化启动。当按下4X4矩阵键盘时,则会进入密码输入界面,用户可以选择输入、删除密码或者退出。当有卡片靠近RFID卡验证模块(RC522)时,系统会自动读取卡片中的卡号,并与系统内存储的注册卡号进行校对。当采用手指进行指纹验证时,AS608指纹验证模块会将当前指纹与自身储存的指纹库进行比对。当以上三种验证方式有任意一种方式验证成功时,OLED屏幕会提示“解锁成功”,并且STM32F407芯片将会控制步进电机进行转动,代表着打开门锁。整个系统采用4X4矩阵键盘和0.96存7针OLED显示屏,实现人机交互。用户可以通过4X4矩阵键盘进行功能的选择:修改密码、注册卡片、删除卡片、录入指纹、删除指纹、修改时间等多种功能。同时,采用的STM32F407芯片兼容stm32f2系列产品,允许ST用户在保持硬件兼容性的同时扩展或更新产品。数字信号控制器通过168mhz的高速性能大大地提高了自身的使用率和应用范围,同时产品也在不断的迭代更新,新产品在执行速度和执行效率上得到了极大的优化,使整个系统的控制更加灵活。图2-1系统总体设计图各个模块功能如下:(1)OLED显示屏:显示功能选择菜单以及各种操做流程。(2)4X4矩阵键盘:总共有10个数字按键,便于数字密码的输入;除此之外,还特别设置了4个功能选择键,用户可以自主进行相关功能的选择。(3)RFID模块:用来读取卡片的信息与系统内部注册的卡片信息进行比对。指纹模块:验证指纹是否匹配。2.3主要芯片介绍2.3.1STM32F407STM32F407属于STM32F4系列的一种芯片,这是一种以M4为核心的32位高性能微控制器,具有调节动态功耗的功能。在工作模式下,可达到238µA/MHz的电流低消耗。有16MHz高速晶体振荡器、15个通信接口、2个DAC、3个ADC速度分别为2.4MSPS和7.2MSPS和17个16位和32位定时器,频率高达16MHz。主要概述:1、实物图片图2-2实物图片STM32F407ZET62、内核(1)支持FPU(浮点运算)和DSP指令。(2)时钟频率为168Mhz;3、IO口(1)STM32F407ZET6:144引脚114个IO口;(2)输出电压基本为5V;(3)支持调试。4、存储器(1)存储器容量:1024KFLASH,192KSRAM。5、时钟、复位和电源管理(1)1.8~3.6V电源和IO电压;(2)上电复位,掉电复位和可编程的电压监控;(3)外部高速振晶为4~26mhz;(4)内部高速振荡器为16mhz;(5)PPL,通常系统时钟是外部时钟或高速内部时钟;(6)外部低速振晶32.768k。6、AD(1)3个12位AD;(2)参考电压。图2-3参考电压7、DA(1)2个12位DA。8、定时器多达17个(1)10个通用定时器(TIM2和TIM5是32位);(2)2个基本定时器;(3)2个高级定时器;(4)1个系统定时器;(5)2个看门狗定时器。9、通信接口多达17个(1)3个I2C接口;(2)6个串口;(3)3个SPI接口;(4)2个CAN2.0;(5)2个USBOTG;(6)1个SDIO。2.3.2OLED显示屏有机发光二极管(OLED),具有板面可以直接发光、不需要背光、对比度高等诸多优点,将这种新应用技术用于下一代平板显示器已得到社会普遍的认可。同时,LCD在使用的过程中需要背光,但OLED是自发光的,所以OLED并不需要背光。这样,在相同的条件下OLED能够展现出更好的显示效果。虽然在当前社会所掌握的技术条件下,无法将OLED做的更大,但可以在分辨率上做出提高。OLED具有以下功能:(1)OLED有三种不同的颜色:黄色、蓝色和白色。黄色占整个屏幕的3/4,蓝色占1/4。此外,OLED中有自带的规则,虽然可以在不同的区域显示出不同的颜色,但是这种关系都是在制造时已经规定好的,用户无法进行自定义修改。而所谓的白光和蓝光,其实都指的是在OLED黑色的底色屏幕上显示出的字符的颜色。(2)128*64的分辨率。(3)多种接口模式;OLED裸屏的接口有两种并行接口模式、两种串行接口模式以及IIC接口模式,用户可以通过屏幕上的三个引脚去单独配置这5个接口。主要概述:1、实物图片图2-40.96寸7针OLED屏图2、引脚介绍GND:地线;VCC:供电电源;D0:输入时钟;D1:输入数据;RES:复位;DC:控制输入数据/命令;CS:片选管脚。2.3.34X4矩阵键盘在单片机的众多常用外部设备中,矩阵应该是经常能够被使用到的一类器件了,同时采用的是矩阵式布局。由于每一个电路的设计不可能单单仅有几个外部输入,但是在控制键数较多的键盘时,每一个键都需要整个电路浪费大量的输入/输出资源,因此需要通过矩阵键盘的使用来降低IO口的使用。在两种矩阵键盘中,4X4的更受使用者欢迎。矩阵键盘又称行列式键盘,由四行输入/输出为行、四行输入/输出为列组成。在交叉点设置一个键,键盘的键号为4x4这种确定性键盘结构可以大幅度提高单片机系统的I/O性能。由于单片机的IO口具有行功能,当按下任意一个键时,一行和一列就会连接起来,通过简单的于或运算就可以得到按键的坐标从而判断按键键值。主要概述:1、实物图片图2-54X4矩阵键盘图2、主要特性(1)体积小;(2)节省空间;(3)使用方便;(4)共计16按键;(5)单片机外扩键盘的上佳选择。2.3.4RFID(RC522)MFRC522是一种工作电压低、使用成本低的非接触式通信的高集成小型读写卡芯片,适用于电流表、电压表和欧姆表三种仪器的应用中,同时在智能仪器以及手持设备的开发中起到很好的作用。MFRC522与其它两种芯片相比虽然具有各自的特点,但是也会由很多相同的地方和不同的地方。另外,提供SPI、IIC或UART三种模式供用户选择,用户可以根据自己的需求去选择其中一个。在用户自由选择模式的同时,还可以很好的减少排线,降低PCB尺寸和成本。主要概述:1、实物图片图2-6MFRC522硬件图1、基本概念(1)ISO-14443A协议:RFID协议的一种;(2)PICC:临近卡、PCD:临近耦合设备;(3)ATQ:对请求的应答、ATQA针对A型卡、ATQB针对B型卡;(4)REQA:对A型卡的请求、REQB:对B型卡的请求、WUPA:A型卡的唤醒命令、ASK:选择确认;2、MFRC522特性(1)非接触式读写卡芯片、最大通信速率13.56MHz;(2)支持接口:UART、SPI(Speed_max=10Mbit/s)、IIC(快速:400Kbit/s,高速:3400Kbit/s);2.3.5指纹(AS608)AS608是由Alialen公司自主研发的一种指纹识别模块,只需使用一个简单的通信协议通过相关的串口和USB接口进行数据传输,以达到对该模块实现控制的目的。目前,市面上的各种需要指纹验证的场所,都需要应用该模块。1、实物图片图2-7AS608硬件图2、硬件接口AS608模块采用8针控制接口,电源电压为3.3V。通信采用两种通信总线:串口通讯和USB通讯。串口通讯的编程比较简单,是一种常见的类型,但串口通讯的兼容性并不是很好;USB通讯的编程困难,常常被作为总线接口,USB具有良好的兼容性。3、引脚介绍图2-8接线表4、系统资源(1)缓冲区和指纹库:系统中专门创建了三个缓冲区,其中有一个名为ImageBuffer的缓冲区,大小为72k字节,用来存储图像;两个为CharBuffer1和CharBuffer2,大小为512字节,用来存储特征文件。(2)用户记事本:系统在闪存中预留了一个存储区,增加了用户记事本的存储地址。存储区总共有16页,并且每一页总共32个字节。注意:当从记事本中写入页面时,系统会将需要被书写页面的32字节内容完全写入进去,同时会将该页面的原始内容自动覆盖。(3)模块地址:用户可以通过自定义的初始指令进行修改模块的默认地址——0XFFFFFF。只有当数据包中的字段地址与模块的默认地址相匹配的时候,系统才能够接收传输进来的命令包/数据包。注意:只有当默认地址为0xFFFFFF,该模块才能够与其它的上位机进行正常的通信。(4)模块指令:如果需要,用户可以自主将系统自带的初始密码0修改掉。如果用户未修改系统的默认密码,在进入系统是就不需要检查密码,主机和单片机与芯片可以直接进行正常通信;如果用户更改了默认密码,则主机与芯片通信时首先要输入第一条通信指令进行密码验证。芯片只有在验证密码后,才能接收其他指令进行正常通信。注意:不建议更改系统的默认密码!3系统构成模块3.1电源模块本次设计主要采用的是以F407为控制核心的普中最小系统板,有三个3.3V、一个5V的电源正极接口,四个GND。除此之外,系统还自带了有一组下载电路接口,专门为J-LINK供电,以便与电脑连接,将编写好的程序烧录到开发板中。剩余的四组,将分别为OLED显示模块、RFID卡识别模块、指纹识别模块以及步进电机模块提供工作电源。而对于4X4矩阵键盘来说,它只需要与对应的IO口接通,用来接收电信号即可。先通过USB线,给底板供电,然后通过核心板根据各个模块的需要,将不同的电压供给各个模块使用。实物图:图3-1实物图3.2显示屏模块有机发光二极管(OLED)又称机电式激光显示,由于具有自发光、无背光等诸多优良的特性,将这种新应用技术用于下一代平板显示器已毋庸置疑。原理图:图3-2原理图引脚连接:将VCC与开发板的正极相连接,为OLED显示屏提供3~5V的工作电压;GND接地;SCK引脚接开发板上的PC6引脚,SCK为时钟管脚;SDA引脚接开发板上的PC7引脚,SDA引脚为数据管脚;RES引脚连接开发板上的PG15引脚,RES引脚主要用来将电平复位为低电平;DC和CS引脚分别接在开发板上的PD6和PB7,DC主要用于控制管脚,而CS是用来接收片选信号的引脚。OLED显示屏的工作模式有4种,而本设计,系统采用的是4线SPI通信方式来驱动OLED屏进行显示。由于对于OLED显示模块来说,我们只需要向OLED显示屏发送数据,并不需要读取数据。同时,SPI结构简单,编程还易于实现,传输数据的速度较快,非常适合本设计去驱动OLED显示屏。工作模式图:图3-3工作模式图下面几条信号线常常被用于串行模式,如:CS:OLED片选信号、RST:复位、DC:命令/数据标志、SCLK:时钟线、SDIN:数据线。在串行模式中,D0为时钟线;D1为数据线。D2处于挂起状态,其他引脚则可以接地。此时,可以将数据写入到OLED屏中,但无法从OLED屏内部将数据读出。在4线SPI工作模式下,数据长度为8位,当位于SCLK的上升沿时,数据从SDIN被传输到SSD1306,同时高位向前移动。传输时序图:图3-4传输时序图相关设置步骤如下:(1)首先根据整体的电路设计和OLED模块中设置的相关通信模式,将与OLED模块相连IO口设置为输出。(2)其次驱动IIC协议初始化整个模块,并通过相关寄存器将OLED屏启动,等待接收传输进来的数据。(3)最后将接收到的数据进行转化,转化成相应的字符和数字,并通过提前设定好的程序将需要被显示的字符传输过去。3.2矩阵键盘模块矩阵键盘与直接法相比而言,直接法相比于矩阵键盘,明显的相对简单一些。除此之外,由于两者的构成不同,矩阵键盘比直接法相对难一点。列线与电源正极相连处会增加一个电阻,输出端采用与行线相连的MCUI/O端口。输入采用列与行连接的I/O端口,由于整个系统会有很多的外部信号输入,如果每一个外部输入的信号都单独进行控制识别,会导致IO口被过多的占用。所以才会使用矩阵键盘,而4x4和8x8是两种比较被经常使用的矩阵键盘,其中4x4是最常用的。引脚连接:将键盘的行线与开发板上的GPIOF组的0-3连接起来,列线则与开发板上的GPIOF组的4-7连接起来,并且将行线电平的状态置于高电平,列线电平的状态拉低。而行线与列线相交错的连接点都对应一个按键,当我们需要获取相应的键值时,只需要根据相关原理,将行线或列线保持不动。然后依次去判断具体的位置。原理图:图3-5原理图扫描原理:在初始化矩阵键盘时将所有的行线设置为输入端,列线设为输出端。然后将所有的输出端的列线全部置于低电平,行线全部置于高电平。然后不断地对行线进行扫描,观察电平的变化。当有按键被按下时,该按键行线的电平状态将会被拉低;如无按键被按下,则所有的行线依旧全部为高电平。2、当第一步的判断确定有按键被按下时,则进入预先设定好的10ms的延时,为的是彻底消除机械抖动。因为只有当抖动被消除之后,行值才是最准确的。如果行线的电平状态在消抖之后依旧未发生改变,那么系统会自动继续接下来的判断;如果电平状态发生改变,则自动返回第一步。3、在第二步确定了按键被按下后,系统将会对所有的行线和列线进行扫描。在相同的时间内,将所有列线先置高,再拉低其中一列。将此时的行线和列线的值读取到,再在寄存器中存储读取到的行和列值。4、取出存储的所有行值和列值,并将它们组合起来,并对得到的键值按照顺序进行编码。编码完成后,再从“0000”解码到“1111”,然后显示按键号码。3.3RFID(MFRC522)模块MFRC522是一种高度集成的非接触式读写卡芯片,芯片自带调谐和调制。同时,还存储了目前所存在的所有的通信方式和协议,使得各个模块间的数据传输变得更加的简便。原理图:图3-6原理图工作原理:读卡器向M1卡发送一组调制信号,当读卡器收到单片机传送过来的命令时,开始进行寻卡操做。MI卡内的LC谐振电路会通过谐磁共振,使电容器带电。在电容器的另外一端,连接了一个单向电子泵,使电容器不断的使用电荷转移的方式为别的电容器充能。此电容器可作为一个工作电源,为其它电路提供电力来源,以便于传送卡片数据或接收读卡器数据。引脚连接:将MFRC522的正负极与开发板相连接,将从机片选管脚CS与PD14引脚连接,作为从机标志管;SCK与PD0引脚连接,直接连接核心板的SCK信号;主/从设备的入和输出分别于PE7、PE9引脚连接,一个是核心板输出MFRC522接收,另一个为MFRC输出核心板接收;RES于PE15引脚连接,为RES的复位功能引脚。识别流程:图3-7识别流程图3.4指纹(AS608)模块As608是由Alialen公司自主研发,该公司对于芯片的外围电路进行了改动,使与As608芯片所关联的设计,用户都能根据自定义的需求去进行开发。所以,其控制电路及协议几乎是一样的,只是厂家和性能不同而已。原理图:图3-8原理图引脚连接:GND与VCC和核心板的正负极引脚相连接,输出电压为3.3V;UA为触摸感应的输入端,和VCC一样一起连接在核心板的正极;TCH为感应信号的输出端,与核心板的PA0引脚相连,将电平初始默认为高电平;TX和RX是指纹模块的数据输出和输入,分别与核心板的PA2、PA3相连接,作为指纹模块和核心板之间的数据沟通。工作步骤:1、录入指纹(1)录入图像。当您将手指放在识别窗口中时,可以通过运行此命令来获取指纹图像。(2)生成特征。此指令被调用于在拍下指纹图像之后。As608内有专门未特征文件存放开辟的缓存去,所以我们将首先使用第一个缓存区。(3)再次录入图像。将同一个手指放入识别窗口,运行命令并拍摄新的指纹图像。(4)再次生成特征。在第2个缓存区将最新图像的指纹特征储存下来。(5)进行精准比对。系统会将多个指纹特征记录下来,增强了指纹输入的准确性。调用此命令开始进行指纹比对,如果它们一致,就意味着记录了同一个人的同一个指纹。(6)合并特征。当用户输入的的两个指纹特征一样时,系统会默认将这两个指纹合并成一个模板,而合成后的指纹模板才是我们最终需要储存到系统中的指纹模板。(7)储存模板。生成模板时,可以将其保存在As608内部FLASH中。在存储过程中,我们需要输入一个指纹识别号,它实际上是FLASH的地址。不同的ID号,存储的位置不同,最多好像能存两三百个指纹。2、识别指纹(1)录入图像。与录入指纹的第一步一样,目的是获取指纹的图像。(2)生成特征。与录入指纹里生产特征的目的一样。指纹特征可以存到第一个缓存区也可以存到第二个缓存区。(3)搜索指纹。此命令主要是用于搜索FLASH中已成功存储的指纹模板,与验证指纹时存放在缓存区的指纹模板进行比对。如果与指纹模板的对比结果为相同,系统会自带记录此模板的ID。调用的时候需要指明比对的特征是缓存区1还是缓存区2,你要选择第二步生成的特征所存储的缓存区。3、删除指纹(1)删除指纹可以选择删除个别指纹或者删除所有指纹。(2)删除一个或几个:调用“删除模板”指令,调用的时候需要输入要删除的起始ID号和删除个数,调用之后就会把Flash里面ID号对应位置的数据清除掉。如:起始ID号是3,删除个数是4,那么就会把3,4,5,6这四个ID号对应的指纹删掉。(3)删除所有:调用“清空指纹库”指令即可。4软件设计与实现4.1系统总体设计STM32智能门锁系统,采用STM32F407作为主控芯片,使用keil5进行软件的编程。在确定好相应的硬件结构之后,设计者可以根据自己的需求进行编程,以此方式实现多种不一样的功能。将整个系统通电之后,首先整个系统将会进入初始化,然后按照预先已经设计好的程序顺序来执行各个模块。该系统采用模块化设计,主要包括OLED显示模块、功能选择模块、密码验证模块、卡片验证模块、指纹验证模块。同时,用户可以根据自己的需求对密码、卡片、指纹进行增删操作。4.1.1程序流程图图4-1程序流程图4.24X4矩阵键盘程序设计系统通过扫描矩阵键盘,判断哪个按键按下,同时系统运行该按键相对于的功能选项。用户可以通过键盘进行密码输入和功能的选择。4.2.1功能程序流程图图4-2功能程序流程图4.2.2部分程序分析//获取键盘数值函数u16GET_NUM(void){ u8key_num=0; u16num=0; while(1) { key_num=Button4_4_Scan(); if(key_num) { if(key_num==13)return0xFFFF;//‘返回’键 if(key_num==14)return0xFF00;// if(key_num>0&&key_num<10&&num<99)//‘1-9’键(限制输入3位数) num=num*10+key_num; if(key_num==15)num=num/10;//‘Del’键 if(key_num==10&&num<99)num=num*10;//‘0’键 if(key_num==16)returnnum;//‘Enter’键 } OLED_ShowNum(78,32,num,3,12); } }4.3RFID(MFRC522)程序设计RFID是指人们对射频识别技术的缩写。简而言之,RFID能够自动的从电子标签中读取数据,是自动识别设备的一种。除此之外,该设备全部采用自动化操做,只需人为的在系统中做好相关的设置,它将会自动开始识别工作,并且可以在各种恶劣的环境中运行。4.3.1功能程序流程图图4-3功能程序流程图4.3.2部分程序分析//功能描述寻卡读取卡类型号//输入参数reqMode--寻卡方式// TagType--返回卡片类型// 0x4400=Mifare_UltraLight// 0x0400=Mifare_One(S50)// 0x0200=Mifare_One(S70)// 0x0800=Mifare_Pro(X)// 0x4403=Mifare_DESFire//默认返回值MI_OK u8MFRC522_Request(u8reqMode,u8*TagType){ u8status; u16backBits;//接收的数据位数 // Write_MFRC522(BitFramingReg,0x07);//TxLastBists=BitFramingReg[2..0] TagType[0]=reqMode; status=MFRC522_ToCard(PCD_TRANSCEIVE,TagType,1,TagType,&backBits); // if((status!=MI_OK)||(backBits!=0x10)) { status=MI_ERR; } // returnstatus;}//功能描述防冲突检测//输入参数serNum--返回4字节卡序列号,第5字节为校验字节//返回值成功返回MI_OKu8MFRC522_Anticoll(u8*serNum){ u8status; u8i; u8serNumCheck=0; u16unLen; // ClearBitMask(Status2Reg,0x08); //TempSensclear ClearBitMask(CollReg,0x80); //ValuesAfterColl Write_MFRC522(BitFramingReg,0x00); //TxLastBists=BitFramingReg[2..0] serNum[0]=PICC_ANTICOLL1; serNum[1]=0x20; status=MFRC522_ToCard(PCD_TRANSCEIVE,serNum,2,serNum,&unLen); // if(status==MI_OK) { //校验卡序列号 for(i=0;i<4;i++) serNumCheck^=serNum[i]; // if(serNumCheck!=serNum[i]) status=MI_ERR; } SetBitMask(CollReg,0x80);//ValuesAfterColl=1 // returnstatus;}}4.4指纹(AS608)程序设计4.4.1程序流程图图4-4程序流程图4.4.2部分程序分析//录入图像PS_GetImage//功能:探测手指,探测到后录入指纹图像存于ImageBuffer。//模块返回确认字u8PS_GetImage(void){u16temp;u8ensure; u8*data; SendHead(); SendAddr(); SendFlag(0x01);//命令包标识 SendLength(0x03); Sendcmd(0x01);temp=0x01+0x03+0x01; SendCheck(temp); data=JudgeStr(2000); if(data) ensure=data[9]; else ensure=0xff; returnensure;}//生成特征PS_GenChar//功能:将图像特征文件存放在系统自带的缓存区 //参数:BufferID-->charBuffer1:0x01 charBuffer1:0x02 //模块返回确认字u8PS_GenChar(u8BufferID){ u16temp; u8ensure; u8*data; SendHead(); SendAddr(); SendFlag(0x01);//命令包标识 SendLength(0x04); Sendcmd(0x02); MYUSART_SendData(BufferID); temp=0x01+0x04+0x02+BufferID; SendCheck(temp); data=JudgeStr(2000); if(data) ensure=data[9]; else ensure=0xff; returnensure;}4.5汉字取模因为OLED屏幕不能直接存储汉字库,所以就需要我们先将汉字库一直到SD卡中,再使用取模软件进行汉字取模。将取好的汉字点阵结构体定义到我们的程序中,就可以在OLED屏幕中显示我们想要显示的汉字了。软件推荐:PCtoLCD、C2B转换助手5系统测试及结果在完成该智能门锁的设计之后,需要对各个模块的功能和系统的整体功能进行测试。目的是为了验证智能门锁系统是否能对各个模块进行控制,实现各种功能。测试条件:OLED显示屏、4X4矩阵键盘、MFRC522射频模块、AS608指纹识别、步进电机。5.1系统硬件连接及测试本毕业设计,以普中最小系统板为底板,STM32F407为整个门禁系统的控制核心。而硬件连接测试模块包括:OLED显示模块、4X4矩阵键盘模块、RFID卡识别模块、指纹识别模块、步进电机模块。由于板子较小、引脚众多,同时涉及到的模块也相对较多,接线错综复杂,一定到避免少接或接反的情况,其中各个模块的正负极连接尤为重要。接线完成后,给系统上电,检查各个模块硬件的运行状况是否正常,芯片是否出现温度过高等现象。硬件模块连接实物图:图5-1系统硬件连接图5.2系统软件功能测试本毕业设计主要采用Keil5进行系统编程,软件功能测试主要是各个模块的程序的调试,检查程序代码在中是否出现逻辑错误,对于硬件模块的控制是否精准。5.2.14X4矩阵键盘代码调试4X4矩阵键盘采用的是逐行扫描法,分为初始化按键引脚和判断获取按键值两个步骤。引脚初始化时,将4个IO口设置为输出,4个设置为输入。然后进行判断按键,将其中4个拉低,然后分别读取另外4个的电平,然后根据公式算出相对应的按键值。图5-24X4矩阵键盘程序运行图5.2.2OLED显示屏代码调试本次设计采用的是0.96寸7针OLED显示屏,包括了初始化、找寻字模、写入函数、显示汉字、画点等函数。而OLED是通过多个独立像素点进行显示的,所以首先要进行编写画点函数,然后从使用指针从汉字库中找出所需要的字符,再写入到SSD1306中,最后将字符显示出来。图5-3OLED显示屏程序运行图5.2.3MFRC522射频模块代码调试MFRC522存储了目前所存在的所有的通信方式和协议,使得各个模块间的数据传输变得更加的简便。程序设计包括初始化、寄存器的读写函数、SPI通信的收发函数、选卡、读卡以及防冲撞等函数。图5-4MFRC522射频模块程序运行图5.2.4指纹识别模块代码调试指纹识别只需使用一个简单的通信协议通过相关的串口和USB接口进行数据传输,而指纹识别模块的代码为开源程序,只需移植即可。包括:初始化、收发数据、录入图像、生成特征、存储图像、对比图像以及指纹模块的三次握手等函数。图5-5指纹识别模块程序运行图5.2.4步进电机代码调试由于在本次设计中,步进电机模块只是用来模拟开锁时门锁的转动,所以控制程序并不需要太过复杂,采用4拍驱动方式。模块包括:初始化、开始转动和停止转动。图5-6步进电机程序运行图6结论和展望6.1结论本次设计从用户出发,考虑到用户的个性化和多样化需求。采用了当前最主流的STM32单片机作为中心

温馨提示

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

评论

0/150

提交评论