文章目录

  • 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. 物联网毕业设计 智能指纹识别门禁系统 嵌入式

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

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

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

  5. python人脸识别门禁系统_智能人脸识别门禁系统

    龙源期刊网 http://www.qikan.com.cn 智能人脸识别门禁系统 作者:吕琳涵 朱畅 钟华 林晓毅 来源:<世界家苑 · 学术> 2018 年第 12 期 摘 要:此项目是 ...

  6. 一种基于嵌入式的多重识别门禁系统设计方案

    一种基于嵌入式的多重识别门禁系统设计方案 1. 前言 门禁系统已广泛的应用在各行各业,随着社会经济的发展,人们对门禁系统的要求越来越高,设计更加安全.更加方便的门禁系统势在必行.由于不同企业对于门禁系 ...

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

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

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

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

  9. 《智能步态识别门禁系统》,基于深度学习的多人步态识别系统

    本文章仅仅提供一种自认为比较科学的方式去实现多人步态识别,如果对多人步态识别感兴趣,却又不知道如何实现的话,这篇文章将会有莫大的帮助.以下方法作者皆实验过是可行的方案.(训练集124人,准确率96%, ...

最新文章

  1. CentOS 7.2 搭建内网ntp时间服务器
  2. 关于网络唤醒远程开机的方法
  3. 我的7天=玩2天+窝5天
  4. QT中如何才能使用cos,sin等三角函数
  5. 利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题
  6. linux 无线网卡 延时 丢包 模拟,Linux模拟网络丢包与延迟的方法
  7. 【爬蟲】爬蟲概述、分類及運行原理
  8. php循环输出url,PHP 输出URL的快捷方式的实现方法
  9. 一日一技:安装Python第三方库的几种姿势
  10. AE中加载个人数据库GDB方法探讨
  11. 安卓游戏时禁止状态栏下拉,如何在Android中禁用通知栏下拉菜单?
  12. 数据接口请求异常:error_springboot2.2.X手册:构建多元化的API接口,我们这样子设计
  13. windows server 2008 大量拷贝后释放内存
  14. DA14580蓝牙硬件系统总览(二)
  15. 收到微软律师函怎么办?当接到微软律师函的处理办法
  16. 0-1背包问题和部分背包(fractional knapsack)问题分析(动态规划,贪心算法)
  17. win7下安装centOS7双系统
  18. 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之近似熵
  19. LayUI之CRUD
  20. 购买SSL证书的注意事项有哪些

热门文章

  1. 常用计算机编程,计算机编程常用英语单词
  2. linux安装 宋体
  3. 矿大计算机毕业论文,中国矿业大学本科生毕业设计(论文)撰写规范.docx
  4. FITC-PEG-SH,荧光素-聚乙二醇-巯基的用途:用于修饰氨基酸,蛋白质等
  5. 计算机社团成立大会主持稿四个主持人,社团成立大会主持词
  6. 浏览器安全隐患有哪些
  7. 这些常见的坑,90%的程序猿都踩过,来看看里面有没有你的脚印?
  8. 火溶CEO王伟峰:Unity3D手机网游开发
  9. Python笔记——类定义
  10. 站内SEO是什么?怎么做?