文章目录

  • 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. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

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

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

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

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

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

  9. 【毕业设计】人脸识别门禁系统

    基于MAIX BIT(K210)的人脸识别门禁系统 一. PCB设计 二. 硬件部分: 语音播报功能 16个ADC矩阵按键 一个蜂鸣器 一个压力检测模块 一块显示屏幕 语音播报可通过串口控制,可以容纳 ...

最新文章

  1. SAP MM 价格重估产生的差异
  2. Objective-C语法简化
  3. 柳编产业临沭谋定转型升级 农民丰收节交易会技能兴鲁
  4. 转载:每一个程序员要遵守的一些优秀编程风格
  5. RemoteIE 开发者可跨平台使用IE测试网页
  6. android 6.0 logcat机制(三)logd处理请求log
  7. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
  8. 代腾飞(为自己名字作诗)
  9. 非985/211学校的毕业生,进大厂的机率有多大?
  10. 【信息系统项目管理师】第8章-项目质量管理 知识点详细整理
  11. 【cs231】反向传输与神经网络
  12. Java SSM面试题
  13. 26. 简述队列和栈的异同
  14. 分享十一个学习css的小游戏,快来下载吧!
  15. 华为笔记本电脑计算机在哪里打开,华为笔记本电脑有摄像头吗
  16. 单片机c语言中u8是什么意思,stm32常用数据类型 U8、U16、U32到底代表什么?
  17. Plupload和错误生成
  18. 智能合约—简单的公开拍卖合约
  19. 计蒜客 -- 常用STL题解
  20. Qt实用技巧:实用掩码限制QLineEdit只能输入规定长度的数字、字母和字符

热门文章

  1. 倒谱分析 matlab,倒谱分析
  2. BeagleBone Black USB一线通(3)
  3. 基于stm32f103zet6之NRF905无线模块的学习
  4. 长沙学院计算机二级报名,长沙学院2012年上半年全国计算机等级考试.doc
  5. Spring——面向切面编程
  6. 华大hc32独立看门狗swdt使用步骤
  7. 如何备份sqlserver2000的数据库
  8. JDBC数据库插入性能测试
  9. 皮皮APP语音派对策划师:千亿娱乐社交下的百万自由职业者
  10. cmder 常用配置(包括默认管理员运行和解决中文乱码)