简介

上面一篇文章已经将指纹模块的驱动原理讲解明白,本文就详细介绍以下整个系统是如何实现的。

实现功能

系统要求如下:
1)使用RC522与指纹模块控制门的打开
2)添加IC卡和指纹数据
3)语音播报状态
4)显示屏显示状态

系统整体流程图

主函数流程图

模式切换的设计思路

如何实现模式的切换可以使用按键修改一个变量的数据,按键每次按下将此变量的值+1。本系统中的模式的切换实现代码如下所示:

//外部中断0的服务函数
void EXTI0_IRQHandler(void)
{delay_ms(15);//按键消抖if(KEY1==0)        //PE0{ MODE_AS608++;//模式标志位+1if(MODE_AS608>=3)//限制模式为3种{MODE_AS608=0;}}EXTI_ClearITPendingBit(EXTI_Line0); //清楚中断标志位
}
//外部中断1的服务函数
void EXTI1_IRQHandler(void)
{delay_ms(15);//按键消抖if(KEY2==0)     //PE1{MODE_AS608--;//模式标志位-1if(MODE_AS608<0||MODE_AS608>=3){//限制模式为3种MODE_AS608=0;}}       EXTI_ClearITPendingBit(EXTI_Line1);  //清楚中断标志位
}

三种模式的设计思路

首先需要明确采集部分,本系统的采集主要是RC522读取IC卡号以及指纹模块读取指纹。整个系统的运行模式一共分为3种模式:
1)匹配模式;RC522读取ID卡并判断卡号是否符合,指纹模块在其自带的Flash种搜索采集的指纹是否匹配。若符合其中任意一个就打开门;
2)指纹添加模式;就是添加指纹到其自带的Flash中;
3)IC卡号添加模式;添加已经存储过的IC卡号。

模式一的设计与实现

首先需要明确在该模式下需要执行读卡匹配以及控制指纹模块进行识别和匹配,为了使该模式执行的实时性所以需要将读卡匹配的代码放在定时器中断中,将控制指纹模块进行识别和匹配放在循环中执行。
1)读卡匹配
将读卡匹配的代码放在定时器中断中执行,定时器中断服务函数如下所示:

void TIM4_IRQHandler(void)   //TIM4中断
{char status;char data[20];if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 {//内容status= PcdRequest(REQ_ALL,TagType); //寻卡if(!status){status = PcdAnticoll(SelectedSnr); //防碰撞if(!status){if((IT&0x40)==0x00){sprintf(data,"%d%d%d%d",SelectedSnr[0],SelectedSnr[1],SelectedSnr[2],SelectedSnr[3]);//读到的值放入data数组中                if(strcmp(data,id[0].ID)==0||strcmp(data,id[1].ID)==0||strcmp(data,id[2].ID)==0||strcmp(data,id[3].ID)==0||strcmp(data,id[4].ID)==0){//查询成功Gui_DrawFont_GBK16(0,60,BLUE,GRAY0," Open Door ");//显示TIM_SetCompare2(TIM3,1950);//舵机开门delay_ms(1000);//延时}else{//查询失败Gui_DrawFont_GBK16(0,60,BLUE,GRAY0," Find No ");//显示TIM_SetCompare2(TIM3,1750);//舵机关门delay_ms(1000);//延时}WaitCardOff(); //等待卡离开Lcd_Clear(GRAY0);//显示屏清楚delay_ms(1000);//延时delay_ms(500);//延时TIM_SetCompare2(TIM3,1750);//舵机转动关门}}}TIM_ClearITPendingBit(TIM4,TIM_IT_Update);  //清除TIM4的中断待处理位:TIM 中断源 }
}

2)控制指纹模块进行识别和匹配
在主循环中加入指纹模块的控制代码,详细代码如下所示:

      switch(MODE_AS608){case 0://指纹搜索模式Gui_DrawFont_GBK16(0,0,BLUE,GRAY0,"  Matching  FR    ");IT&=0xBF;//打开IC卡搜索if(AS_WAK){//检测到手指Search_FingerMat();}break;}

模式二的设计与实现

添加指纹的代码将放在主函数中,在添加指纹模式下,不能让IC卡的搜索还开着所以需要关闭IC卡的搜索。(IC卡的搜索在定时器中)

 case 1://单次录入模式IT|=0x40;//关闭IC搜索模式(这里可以直接关闭定时器)Gui_DrawFont_GBK16(0,0,BLUE,GRAY0,"  One In   F     ");if(AS_WAK){Input_Fingerprint(Start_Address);//录入指纹Start_Address++;//存储地址+1if(Start_Address>10){//限制最大存储人数Start_Address=1;}}break;

模式三的设计与实现

添加IC卡号,也需要关闭在定时器中执行的IC卡搜索代码。详细代码如下:

case 2://IC卡号录入IT|=0x40;//关闭IC搜索模式(这里可以直接关闭定时器)Gui_DrawFont_GBK16(0,0,BLUE,GRAY0,"       In R       ");//显示status= PcdRequest(REQ_ALL,TagType); //寻卡if(!status){status = PcdAnticoll(SelectedSnr); //防碰撞if(!status){sprintf(data,"%d%d%d%d",SelectedSnr[0],SelectedSnr[1],SelectedSnr[2],SelectedSnr[3]);
//              printf("%s",data);Gui_DrawFont_GBK16(0,60,BLUE,GRAY0," Successfuly ");//存储数据成功ID_Count++;//存储地址+1memcpy(id[ID_Count].ID,data,sizeof(data));if(ID_Count>10){//限制最大存储数量ID_Count=1;}WaitCardOff(); //等待卡离开Lcd_Clear(GRAY0);}}break;

总结

在主函数中,主要是执行模式的切换任务。判断MODE_AS608的值系统进入不同的模式中,通过按键修改MODE_AS608的值。AS_WAK这是一个主要用来读取指纹模块的一个引脚状态,该引脚的功能是当有手指放在指纹模块上时会输出高电平。

毕设-基于STM32刷卡、指纹的门禁系统的设计与实现(进阶版)相关推荐

  1. 基于stm32单片机的指纹解锁门禁系统

    基于stm32单片机的指纹解锁门禁系统 1.包含三个模式,正常模式,录入模式,删除模式 正常模式下,需要管理员指纹开锁,其他人才能正常打卡,实验室人数清零后,重新需要管理员指纹开锁 录入与删除指纹模式 ...

  2. stm32毕业设计 智能指纹识别门禁系统 - 物联网 单片机

    文章目录 1 简介 2 绪论 2.1 课题背景 2.2 项目内容 3 系统设计 3.1 系统架构 3.2 硬件设计 3.3 指纹识别模块的程序设计 3.3.1 指纹录入 3.3.2 指纹识别代码流程 ...

  3. 基于stm32与NRF24L01的无线门禁系统

    首先,需要说明梁只是一个小本科生,水平不高,许多错误请大家指教(qq1257681989).所写的内容是我自己做的,写此博客仅在于让自己在完成之后有个回顾和总结. 进入正文,这个小制作是我选择的一个比 ...

  4. 【指纹识别】基于模板匹配实现指纹识别门禁系统含Matlab源码

    1 简介 近年来,随着识别技术和网络技术的飞速发展,门禁系统也得到了飞跃式的发展,出现了基于指纹识别的门禁系统.这种系统具有安全性,方便性和易管理性等特点,是确保各重要部门出入口安全的有效措施,现已广 ...

  5. 毕设-基于STM32刷卡、指纹的门禁系统(进阶版-指纹模块的驱动)

    目录 简介 模块介绍 引脚介绍 指令 驱动方式 代码编写 串口初始化 串口发送数据 发送指令 删除flash库中指定ID号开始的N个数据 录取指纹图像 生成特征 存储在缓冲区1中 生成特征 存储在缓冲 ...

  6. 基于ARM的指纹识别门禁系统设计方案

    现代社会高速发展,很多场合需要身份确认,传统的身份识别技术已经不能满足社会要求.人的身体特征具有不可复制性,因此人们开始研究生物识别技术,而指纹具有唯一性.终生不变性.难于伪造等特点,安全性高,因而得 ...

  7. 单片机毕业设计 智能指纹识别门禁系统 - 物联网 嵌入式

    文章目录 1 简介 2 绪论 2.1 课题背景 2.2 项目内容 3 系统设计 3.1 系统架构 3.2 硬件设计 3.3 指纹识别模块的程序设计 3.3.1 指纹录入 3.3.2 指纹识别代码流程 ...

  8. 毕业设计 嵌入式 智能指纹识别门禁系统 - 物联网 单片机

    文章目录 1 简介 2 绪论 2.1 课题背景 2.2 项目内容 3 系统设计 3.1 系统架构 3.2 硬件设计 3.3 指纹识别模块的程序设计 3.3.1 指纹录入 3.3.2 指纹识别代码流程 ...

  9. 物联网毕业设计 智能指纹识别门禁系统 嵌入式

    文章目录 1 简介 2 绪论 2.1 课题背景 2.2 项目内容 3 系统设计 3.1 系统架构 3.2 硬件设计 3.3 指纹识别模块的程序设计 3.3.1 指纹录入 3.3.2 指纹识别代码流程 ...

最新文章

  1. 雪上加霜!股东向 Zoom 发起集体诉讼,索赔高额补偿
  2. 汇编语言转成c语言,如何把汇编语言转换成C语言
  3. C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)
  4. linux命令history作用,Linux命令:history命令历史的管理及用法
  5. 【重难点】【Java基础 01】一致性哈希算法、sleep() 和wait() 的区别、强软弱虚引用
  6. flume kafka storm mysql_flume+kafka+storm打通过程
  7. Spring Boot : Whitelabel Error Page解决方案
  8. CentOS 6.0 下 VNC 配置方法
  9. matlab latex 中文字体,LaTeX - 设置中文字体
  10. ncnn笔记:02)ncnn之JNI入门初窥
  11. 天猫618品牌排名出炉 华为、苹果战况胶着
  12. thinkphp 5.1 swoole扩展websocket使用教程
  13. TEB算法详解(TebLocalPlannerROS::computeVelocityCommands(1))
  14. 一种夸张的炒股计算方法
  15. 拿什么拯救你——王阿姨的少女心!
  16. 17、TWS API和IB中的财务顾问
  17. SSL/TLS会话的流量分析
  18. 5.4 数据检验(数据一致性处理)
  19. 如何基于ubuntu16.04完整安装Madagascar3.1.1
  20. Unity 数字孪生笔记2.1 PiXYZ Studio 工作流简介

热门文章

  1. OSSIM安装使用教程(OSSIM-5.6.5)
  2. 【Web】html+js 制作小游戏
  3. 用u盘装系统的操作全程图解
  4. 计算机网络的硬件主要有,什么是计算机网络及主要功能有哪些?
  5. python自动化办公能做什么-新课介绍 | 用Python自动办公,做职场高手
  6. 软件开发过程--极限编程(XP)
  7. Postman Pre-request 使用
  8. Dungeon Maste Java
  9. idea快速删除空行
  10. 2022深圳杯A题论文