文章目录

  • 1 简介
  • 2 绪论
    • 2.1 课题背景
    • 2.2 项目内容
  • 3 系统设计
    • 3.1 系统架构
    • 3.2 硬件设计
    • 3.3 指纹识别模块的程序设计
      • 3.3.1 指纹录入
      • 3.3.2 指纹识别代码流程
    • 3.4 显示屏程序设计
    • 3.5 整体业务逻辑代码流程
    • 3.6 实现效果
    • 3.7 部分相关代码
  • 4 最后

1 简介

Hi,大家好,学长今天向大家介绍一个学长做的单片机项目

基于单片机的指纹识别门禁系统设计

大家可用于 课程设计 或 毕业设计

2 绪论

2.1 课题背景

人们在生活中需要安全的门禁设施,来保证自己的财产安全,各种各样的门禁系统随之而生。但随着数字化和网络化的不断发展,以前的门禁方式在鉴别方式、速度和性能方面越来越不能满足人们的需要,比如射频卡、数字密码等方式,其安全性不够高。在新的方式开发的过程中,由于人的身体特点具有不可复制性,所以人们把目光转移到这上面来,开始了生物识别的门禁系统的开发。指纹识别作为生物特征识别,它是独特的,它的特点是不易伪造,以为它的这些特点目前已被广泛应用于安全访问。

2.2 项目内容

本项目基于对指纹识别技术和指纹识别系统的发展研究的意义的分析,给出指纹识别门禁系统总体框架,阐述了各子模块的硬件和软件资源。

首先简要介绍了指纹识别算法,重点介绍了指纹识别模块(FM-180)的使用方法,包括它的硬件连接和软件指令的使用方法。

在此基础上,设计了以STC89C52单片机为核心的指纹识别门禁系统,指纹识别模块负责识别指纹,并传输给单片机结果,单片机根据结果来控制液晶显示和蜂鸣器的声音提示,再控制继电器的开闭,单片机还能通过网络模块与上位机实现远程通讯。

之后,介绍了软件部分的设计,包括单片机、液晶屏、指纹识别模块和上位机的软件设计。

通过对系统的模型样机的测试表明,系统能够完成基本功能并具有较好的稳定性,初步达到了预期的设计目标。

3 系统设计

3.1 系统架构

以系统主要分为上位机和下位机两部分,上位机作为主要的控制部分,通过网络对多个下位机进行控制,并且实现用户等级的设定。指纹录入端位于大楼的入口处,对进入者进行指纹录入工作。下位机则是门禁的实际控制端,通过指纹识别模块,对用户进行识别,进而控制门锁的开闭。整体框架可以为如下图所示:

上位机与下位机各自分工,上位机与下位机通过网络模块进行通讯。下位机是与门直接相连的部分,通过指纹识别模块对用户的指纹进行识别,并将结果传输给单片机,单片机再进一步控制液晶显示结果,并通过蜂鸣器发出声音提示,用户还能够进行按键调节。下位机的框架如下所示

本系统的主要功能特点:

  • (1) 拥有高效的指纹识别模块, 可以十分快捷的利用指纹开锁, 高效方便,且安全性高。
  • (2) 上位机部分由科学的管理软件, 能够实现门禁的科学化管理。
  • (3) 上位机与下位机的通信采用以太网模块, 可以实现远距离的控制。
  • (4) 门禁系统的用户采用权限分割, 不同的用户拥有的权限不同, 能够进入的门也不同, 从而实现用户的逐级权限管理。

3.2 硬件设计

指纹识别门禁系统的硬件部分需要完成一系列复杂的任务,包括图像采集、图像处理、图像对比等,还需要在与上位机通信时上传指纹模板,以及控制外围器件等工作。所以要实现这样一个复杂的任务,需要处理器具有比较强的计算能力和控制能力,并且储存器资源要大。

3.3 指纹识别模块的程序设计

指纹识别模块需要完成的工作有:获取指纹图像,生成指纹特征模板,储存指纹特征模板和匹配指纹等工作,单片机根据模块的指令系统,给模块发送指令信息,来控制模块完成相应的工作。

3.3.1 指纹录入

指纹录入过程, 用于新用户的注册, 当有新用户需要注册时, 就先在指纹头处获取用户的指纹图像, 在将之生成指纹特征模板, 在储存起来, 这样就完成了新用户的注册。

3.3.2 指纹识别代码流程

3.4 显示屏程序设计

3.5 整体业务逻辑代码流程

软件使用 Keil C51 版本, 主程序采用 c 语言编写。 单片机对指纹识别模块发送命令, 得到识别结果, 在根据这个结果来控制显示模块、 语音模块和电子锁模块。 程序的主流程图如下所示:

3.6 实现效果

3.7 部分相关代码

#include "stm32f10x.h"
#include "sys.h"
#include "FPM10A.h"
//#include "usart.h"
#include "usart1.h"
#include "usart4.h"
#include "usart5.h"
#include "sys.h"
#include "stdio.h"
#include "string.h"
#include "delay.h"
#include "deal_fg.h"
#include "pwm_config.h"
#include "Run.h"
#include "led.h"
#include "bsp_i2c_ee.h"
#include "Computer.h"
#include "bsp_rtc.h"
#include "key.h"
#include "finger.h"extern unsigned char si[11];
unsigned char yanz[6]={0x01,0x00,0x03,0x11,0x00,0x15};
unsigned char id_table[4];
int Dump_flag = 0;
struct rtc_time systmtime;
extern unsigned char FG_Key[10];
extern unsigned char FP_Pack_Head[6];  //协议包头
extern unsigned char test_fig(void);
extern   unsigned char dat[18];
extern void uart_init(u32 bound);
extern void My_USART2_Init(void);
extern void My_USART3_Init(void);
extern void USART_SendStr(USART_TypeDef* USARTx,unsigned char *data1);
extern void USART_SendByte(USART_TypeDef* USARTx,unsigned char temp);
extern unsigned char USART_ReceivByte(USART_TypeDef* USARTx);
extern void USART_ReceiveStr(USART_TypeDef* USARTx,unsigned char ucLength);
extern void Delete_FG(void);
unsigned char yi[12];extern volatile unsigned char USART_ReceStr[24];
extern unsigned char san[11];
extern unsigned char er[10];
unsigned char deal_dd[11] = {0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; unsigned char cal_p[16]="abcdeadffasdfdas";
unsigned char cal_test[16]={0};
unsigned int Times11[8];
int Flag =0;
//void cleck_FG(void);
unsigned char sss[11];
struct rtc_time systmtime;int main(void){   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);My_USART2_Init();    //串口2初始化    My_USART3_Init();       //串口3初始化usart4_Configuration(9600);   //串口4使能pwm_config();     //pwm使能delay_init();    //延时初始化uart_init(9600);      //串口初始化使能KEY_Init();        //按键初始化LED_Init();      //led灯初始化RTC_NVIC_Config();         //时钟使能  RTC_CheckAndConfig(&systmtime);   //全局时钟使能delay_ms(1000);if (ee_CheckOk() == 0)  //没有检测到EEPROM {printf("没有检测到串行EEPROM!\r\n");while (1); /* 停机 */}do                     //通讯{unsigned char i;   for(i=0;i<6;i++) //包头USART_SendByte(USART1,FP_Pack_Head[i]);   for(i=0;i<10;i++) //命令合并指纹模版USART_SendByte(USART1,FG_Key[i]);  }while(yi[9]!=0x00&&yi[2]!=0xff);delay_ms(1000);
//      san[1]=0x00;while(1){ LED0=1;if(san[0]==0xef&&san[10]==0xff)  {unsigned char i; san[1]=san[1]+'0';for(i=0;i<11;i++) USART_SendByte(USART2,san[i]);  san[0]=0x00;}if(er[0]==0xef)         //来自上位机的指令{delay_ms(5);switch(er[1]){case 0xcc:  Join_in();   break;      //注册case 0xdd:  Delete_P();   break;      //删除单个用户case 0xee:  Cortrol();   break;      //控制舵机case 0xbb:  Send_Zigbee();   break;      //控制终端节点case 0xda:  Delete_ALL();   break;      //清空所有数据库case 0xab:  Reser();   break;      //查询default: break;}er[0] = 0;}cleck_FG();//           siz = 0;
//          siz = usart4_Receive(buff, sizeof(buff));
//          if(siz)
//          {//              usart4_Send((u8 *)"usart4 recv:",strlen("usart4 recv:"));
//              usart4_Send(buff,siz);
//          }}//       while(1)
//       {//        unsigned char i;
//        ee_WriteBytes((void*)cal_p,  1, sizeof(cal_p));
//      delay_ms(1);
//      ee_ReadBytes((void*)cal_test,1, sizeof(cal_test));
//        for(i=0;i<16;i++) //命令合并指纹模版
//          USART_SendByte(USART2,cal_test[i]);
//            delay_ms(1000);
//
//       }
}//启动指纹识别

4 最后

毕业设计 单片机指纹识别门禁系统设计与实现 - 物联网 嵌入式相关推荐

  1. 【毕业设计】基于单片机的指纹识别门禁系统设计 -物联网 stm32 嵌入式

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

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

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

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

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

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

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

  5. linux指纹登录实现原理,指纹识别技术原理与基于Linux系统的指纹识别门禁系统设计...

    指纹作为人体的身体特征,具有唯一性.稳定性和不易盗用等特点.随着指纹识别理论逐渐成熟.指纹采集工具这一难题得到解决,指纹识别已经成为目前最广泛应用的生物识别之一,逐渐取代了传统的认证识别方式,广泛应用 ...

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

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

  7. Raspberry Pi智能设备开发-人脸识别门禁系统设计与实现

    人脸识别门禁系统设计与实现 摘要 关键词 1.选题意义 2.需求分析 3.总体设技 4.实现过程 4.1 注册百度云 4.2 创建应用 4.3 获取密钥,AppID.API Key和Secret ke ...

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

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

  9. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

最新文章

  1. golang中的collection
  2. 学会Python正则表达式,就看这20个例子~
  3. java内容置剪贴板
  4. Linux进程全解8——exec 族函数
  5. java io 转换流_Java编程IO流中的转换流
  6. 机动车辆保费计算器 1.1新版发布
  7. socket.io 中文手册 socket.io 中文文档
  8. 20180312顺序查找
  9. 关于电脑的基础知识_电脑基础知识:关于硬盘知识你有必要知道的几件事!
  10. C#中方法,方法声明,方法调用和方法重载!
  11. H2 database 内存数据库 学习资料
  12. java 启动参数 配置_Java运行参数设置
  13. WinRunner:强大的企业级自动化测试工具
  14. Simulator installs an app drag-and-drop onto the Simulator window
  15. Minecraft mod制作简易教程(四)——创建一个方块
  16. css从中间向两边动画,css动画效果:鼠标移上去底部线条从中间往两边延伸 - 子成君-分享出去,快乐加倍!-旧版已停更...
  17. Flume使用Spooling Directory Source采集文件夹数据到hdfs
  18. 关于宽带拨号上网的笑话,我自己闹的笑话。
  19. 餐饮外卖平台小程序源码,附带详细教程
  20. 斐波那契数列编程C语言

热门文章

  1. linux access() rpm,Unix/LINUX rpm 命令示例
  2. 批量检测商品是否下架,批量查询商品信息接口
  3. Dense Deep Unfolding Network with 3D-CNN Prior for Snapshot Compressive Imaging
  4. cics oracle xad_CICS安装问题及解决方式
  5. LTE细说-03-PCFICH-PHICH
  6. 给windows客户端开发新人的一点建议
  7. 视频下载神器you-get
  8. python 递归函数返回值
  9. 如何自学软件测试呢?软件测试工程师的职位要求
  10. Postman之postman interceptor插件