77、基于STM32单片机学生信息管理系统指纹密码控制设计(程序+原理图+参考论文+相关资料+开题报告+任务书+元器件清单等)

news/2024/11/29 19:31:45/

单片机主芯片选择方案
方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的4K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护我们的劳动成果。再者,AT89C51目前的售价比8031还低,市场供应也很充足。AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需lOms。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。PO口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。
方案二:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字节,本次设计足够,内部高达20K字节的SRAM。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STM32系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STM32为更合理的选择。

指纹识别原理

手指表面皮肤凹凸不平而产生的纹路就是指纹。理想的指纹图像是一幅黑白相间的二值图像。但是由于指纹通常是用按压的方式得到的,因此,油墨、纸张、手指的状况以及皮肤的变形等原因都会导致指纹图像不理想。另外,通过扫描仪或者摄像机进行数字化的时候,由于光照的影响,也会引入各种噪声。这些因素都使灰度图像不能直接用来匹配。因此,有必要选择合适的特征来描述指纹征来描述指纹。

通常采用的结构特征有2种层次:

1)全局特征。所描述的是指纹的全局纹路结构,如图1-1所示,利用计算机处理时具体划分为:弓型、箕型、螺旋型。其他的指纹图案都基于这3种基本图案。

2)局部特征。断点和分叉是最常用的指纹局部结构特征,也称为细节特征。采用这种特征的一个例子是细节—坐标模型,也就是使用指纹的细节点及其坐标和其他一些特征来描述指纹。

对于指纹身份鉴定,特别是对现场的模糊指纹进行认定的时候所使用的信息是细节特征点,如图1-2中的小桥、三角点、分叉点、端点和环。

一、硬件方案

硬件构成:STM32单片机电路+时钟晶振电路+复位电路(上电自复位,手动复位)+LCD12864液晶显示屏电路+AS608串口指纹模块电路+继电器电磁锁控制电路+蜂鸣器提示电路+薄膜式矩阵键盘电路+LED指示灯电路+电源供电电路;

二、设计功能

1、供电5V手机充电器,上电自动完成初始化。

2、使用者可以通过按设置按键进入设置学生信息管理界面,设定好登陆的密码,密码断电也不会丢失断电存储,设定指纹录入,掉电均会存储;

3、登陆密码输入正确的情况下,LCD12864显示屏会提示密码输入成功,当密码输入错误两次以上系统便会自动锁死,需要等待一分钟左右恢复,学生信息可以自行随意更改;

4、使用者通过录入正确的指纹来增加学生信息,当手指放在指纹识别模块上面,检测到指纹正确之后便会登陆学生信息管理系统,当检测到的指纹错误便会提示未检测到对应的指纹,两次以上识别错误便会系统锁死,指纹可以自己随意添加控制指纹;

5、系统具备管理员密码,即使忘记学生信息登陆密码之后,管理员密码也可以打开学生信息管理;

6、也可以通过密码来删除学生信息。

7、采用优质的薄膜式矩阵键盘,密码输入更加直观方便,采用高清晰的矩阵键盘,不用担心焊接的那种键盘分不清按键;

三、实物图

 

 

 

STM32STM32概述
       STM32系列是为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:“增强型”STM32F103系列和“基本型”STM32F101系列。增强型系列的时钟频率能达到72MHz,是同类产品中频率最高的;基本型的时钟频率为36MHz,用16位产品一样的价格得到比16位产品更大的性能,是16位产品的最好选择。两个系列都有内置的32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率为72MHz时,从闪存执行代码来看,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz[6]。
以STM32103C8T6单片机为处理器,该单片机为32位处理器。内核为Cortex-M3,其并行总线结构,嵌套中断向量控制单元,调试系统和它标准的存储映射。嵌套中断向量控制器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3处理器中一个比较关键的组件,它为基于Cortex-M3的微控制器提供了标准的中断架构和优秀的中断响应能力,为超过240个中断源提供专门的中断入口,而且可以为每个中断源赋予单独的优先级。采用NVIC可以达到非常快的中断响应速度,从收到中断请求到执行中断服务的第一条指令仅需12个周期。这种极快的响应速度一方面得益于Cortex-M3内核对堆栈的自动处理机制,这种机制是通过固化在CPU内部的微代码实现的。另一方面,在中断请求连续出现的情况下,NVIC使用一种称为“尾链”的技术,使连续而来的中断可以在6个时钟周期内得到服务。在中断的压栈阶段,更高优先级的中断可以不耗费任何额外的CPU周期就能完成嵌入低优先级中断的动作。具体的细节后面我会继续总结的。用户可以通过设置CPU自动进入低功耗状态,而使用中断来将其唤醒,CPU在中断时间来临之前会一直保持睡眠状态[7]。
  Cortex-M3的CPU支持两种运行模式:线程模式(Thread Mode)与处理模式(Handler Mode)并且需要注意的是,这两种模式都拥有各自独立的堆栈。这种设计使得开发人员可以进行更为精密的程序设计,对实时操作系统的支持也就更好了。Cortex-M3处理器还包含了一个24位可自动重装载定的定时器,可以为内核(RTOS)提供一个周期中断。
在指令集方面,ARM7和ARM9都有两种指令集(32位指令集和16位指令集),而Cortex-M3系列处理器支持Thumb-2指令集。由于Thumb-2指令集融合了Thumb指令集和ARM指令集,使得32位指令集的性能和16位指令集的代码密度之间取得了平衡[5]。 专业嵌入式、单片机技术实训。而且,ARM Thumb-2 专门为C/C++编译器设计,这就意味着Cortex-M3系列处理器的开发应用可以全部在C语言环境中完成。
  STM32微控制器的推出标志着ST公司在两条产品主线(低价位主线和高性能主线)上迈出了重大一步。STM32最初发布时有14个不同型号,分为两个版本:最高CPU时钟为72MHZ的“增强型”和最高CPU时钟为36MHZ的“基本型”。这些不同STM32型号里内置的Flash最大可达128KB,SRAM最大为20KB,在STM32发布之初,配置更大Flash,RAM和更复杂外设的版本就已经在规划之中了。不管是什么版本,什么型号的STM32器件,它们在引脚功能和应用软件上是兼容的。这就使得开发人员在使用STM32系列微控制器时,不必改动PCB就可以根据需要随意更换器件型号。乍一看STM32的设备配备,与往日熟悉的51单片机倒有几分相似。一般,STM32都会配备常见外设,诸如多通道ADC,通用定时器,I2C总线接口,SPI总线接口,CAN总线接口,USB控制器,实时时钟RTC等。但是,它的每一个外部设备都具有独特之处。例如,12位精度的ADC具备多种转换模式,并带有一个内部温度传感器,带有双ADC的STM32器件,还可以使两个ADC同时工作,从而衍生出了更为高级的9种转换模式;STM32的每一个定时器都具备4个捕获比较单元,而且每个定时器都可以和另外的定时器联合工作以生成更为精密的时序;STM32有专门为电机控制而设的高级定时器,带有6个死区时间可编程的PWM输出通道,同时其带有的紧急制动通道可以在异常情况出现时,强迫PWM信号输出保持在一个预订好的安全状态;SPI接口含有一个硬件CC8单元,支持8位字节和16位半字数据的CC8计算。在对SD或MMC等存储介质进行数据存取时相当有用。而且,STM32还包含了7个DMA通道。没恶搞通道都可以用来在设备与内存之间进行8位,16位,32位数据的传输。每个设备都可以向DMA控制器请求发送或者接收数据。STM32内部总线仲裁器和总线矩阵将CPU数据接口和DMA通道之间的连接大大的简化了,这就意味着DMA通道单元是很灵活的其使用方法简单,足以应付微控制器应用中常见的数据传输要求。

四、原理图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。

 

五、程序源码  

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

 

资料包括: 

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 


http://www.ppmy.cn/news/676273.html

相关文章

多表-DDL以及DQL

多表DDL 个表之间也可能存在关系 存在在一对多和多对多和一对多的关系 一对多(外键) 在子表建一哥字段(列)和对应父表关联 父表是一,对应子表的多(一个部门对应多个员工,但一个员工只能归属一…

U盘被写保护?我来教你高级格式化

很多人都遇到过U盘被写保护了,造成原因有很多,一般是热插热拔,未弹出U盘就将U盘拔出等操作不当原因造成。 我也是经历过这样的情况。 1.首先,U盘被写保护但是可以把U盘里面的东西拷贝出来,以做备份。(因为格…

高级格式化与低级格式化

概念: 格式化是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化。如果没有特别指明,对硬盘的格式化通常是指高…

C++ - std::string字符串格式化方法总结

文章目录 1 C std::string字符串格式化1.1 C语言中的字符串格式化1.2 C使用std::stringstream进行字符串格式化1.3 开源的C单个头文件的字符串格式化工具1.3.1 format1.3.2 sformat 1.4 自定义的C字符串格式化函数1.5 C20的字符串标准库函数std::format 1 C std::string字符串格…

ultraEdit格式化代码

以C语言为例: 高级->配置工具: 命令行为: "D:\Program Files\UltraEdit\GNU\astyle.exe" --styleansi "%f" java代码的话把ansi改为java linux文件改为linux 其中前面为你的ultraEdit的安装目录中的GNU\astyle.ex…

Python格式化输出

Python格式化输出主要有三种方式,1、%-formatting;2、str.format();3、f-Strings %-formatting 字符串对象具有实用%运算符的内置操作,您可以使用它来格式化字符串。 以下是部分字符串格式符号: 符号说明%s字符串%c字符%i整数…

linux bios格式化磁盘,BIOS设置与磁盘分区、格式化.doc

项目2 BIOS设置与磁盘分区、格式化 教学目标 终极目标:能熟悉各种BIOS设置方法和步骤;能独立完成装机常用的BIOS设置;能熟练使用多种工具进行磁盘分区;能熟练使用工具进行磁盘的低级和高级格式化。 促成教学目标: 1. 能熟悉各种BIOS设置的方法和操作步骤 2. 能独立完成装机…

如何在windows下格式化linux,Linux、Windows/DO格式化怎么做?

格式化是什麽意思? 格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化。如果没有特别指明,对硬盘的格式化通常是指高级格式化,而对软盘的格式化则通常…