0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机的指纹密码锁设计

精通单片机与嵌入式 来源:精通单片机与嵌入式 2023-11-30 09:29 次阅读

实物图

5264c868-8f0c-11ee-939d-92fbcf53809c.jpg

功能

利用单片机和指纹识别模块实现指纹密码锁,通过指纹模块采集识别指纹,4*4矩阵键盘输入密码,能够进入管理系统,进入管理后能修改密码、注册指纹,删除指纹等操作。

要求:

(1)查阅相关文献,熟悉课题背景、任务;

(2)深入学习51系列单片机原理及C语言并且会用Keil软件进行编程

(3)学习矩阵键盘和LCD的工作原理

(4)学会利用Protel99se或DXP软件进行原理图绘制;

(5)焊接并完成作品调试。

原理图

533622c8-8f0c-11ee-939d-92fbcf53809c.png

PCB

536b8ecc-8f0c-11ee-939d-92fbcf53809c.png

程序源代码

/*************************************************************
                         指纹密码锁


补充说明:
***************************************************************/
#include      //头文件
#include
#include
#include
#include
#include


#define uchar unsigned char  //宏定义
#define uint unsigned int
#define ulong unsigned long


/************************引脚定义************************/
sbit buzz=P3^7; //蜂鸣器
sbit led=P0^0;  //LED灯


/************************变量定义************************/
#define MAX 5   //指纹最大数量
#define ID_MAX 3//输入ID最大位数


uchar mode=0;   //0正常解锁,1管理界面,2注册模式,3删除模式,4修改密码


uchar mode_num=0;//管理界面选择项


uint ID=0;      //存储输入编号ID
uchar n=0;       //输入的位数
bit zhiwen_f=0;   //1=标记进入指纹采集


uchar a;     //存储按键值
uchar num;      //记录输入的密码位数
bit   in_f;     //输入密码的标志
bit   reset_f;   //重设密码的标志
bit   input_f;   //六位密码输完的标志
uchar reset_num; //标记修改密码阶段,=1输入旧密码,=2输入新密码,=3再次输入新密码


ulong low_mima=0;//系统密码
ulong in_mima=0; //暂存输入的密码
ulong new_mima=0;//暂存输入新密码


uchar temp[5]="    �";//存储显示内容  
/********************************************************
函数名称:void delayms(uint ms)
函数作用:毫秒延时函数
参数说明:
********************************************************/ 
void delayms(uint ms)
{
  unsigned char i=100,j;
  for(;ms;ms--)
  {
    while(--i)
    {
      j=10;
      while(--j);
    }
  }
}
/********************************************************
函数名称:void didi(uchar i)
函数作用:蜂鸣器鸣叫
参数说明:i为鸣叫次数
********************************************************/ 
void didi(uchar i)
{
  uchar j;
  for(j=0;j=1&&searchnum<=MAX)||searchnum==255)//最多MAX个指纹
  {    
    if(searchnum>=1&&searchnum<=MAX)      //指纹识别成功
    {
      temp[0]=searchnum%1000/100+0x30;
      temp[1]=searchnum%100/10+0x30;
      temp[2]=searchnum%10+0x30;
      temp[3]=' ';
      LCD12864_display_string(3,2,temp);//显示卡号
      LCD12864_display_string(3,3,"指纹解锁");
      LCD12864_display_string(1,4,"            ");
      in_mima=0;              //清除以输入的密码
      num=0;                //清除以输入的密码位数
      input_f=0;              //清除输入密码标志
      jdq=0;                //打开电磁锁
      T2_num=0;              //开启重新开始计时
      TR2=1;
    }
    else                                  //不正确的指纹
    {
      LCD12864_display_string(3,3,"无效指纹");
      didi(3);              //报警三次
    }
    delay1ms(500);              //延时后自动清除显示内容
    LCD12864_display_string(3,2,"    ");
    LCD12864_display_string(3,3,"        ");
  }                      
}


/********************************************************
函数名称:void cunchu()
函数作用:存储指纹
参数说明:
********************************************************/
void cunchu()
{
  LCD12864_display_string(0,3,"状态: ");


  if(ID>0&&ID<=MAX)  //输入的存储指纹位置正确
  {
    if(enroll()==1)//采集两次,生成1个指纹模板成功
    {
      if(savefingure(ID)==1)//保存指纹成功
      {
        LCD12864_display_string(3,3,"录入成功");
      } 
      else          //保存指纹失败
        LCD12864_display_string(3,3,"存储失败");  
    }
    else                  //采集指纹失败
      LCD12864_display_string(3,3,"采集失败");  
  }
  else                    //输入指纹编号错误
    LCD12864_display_string(3,3,"编号错误");


  n=0;     //清除输入编号位数
  ID=0;     //清除输入编号
  zhiwen_f=0;//关闭指纹采集
}
/********************************************************
函数名称:void shanchu()
函数作用:删除指纹
参数说明:
********************************************************/
void shanchu()
{
  LCD12864_display_string(0,3,"状态: ");
  if(ID>0&&ID<=MAX)      //输入的存储指纹位置正确
  {
    if(dellfingure(ID)==1)//删除指纹成功
    {
      LCD12864_display_string(3,3,"删除成功");
    }
    else          //删除指纹失败
      LCD12864_display_string(3,3,"删除失败");  
  }
  else
  {
    if(ID==999)        //如果输入的是999表示清空指纹
    {
      if(Clear_All()==1)//清空指纹成功
        LCD12864_display_string(3,3,"清空指纹");
      else        //清空指纹失败
        LCD12864_display_string(3,3,"清空失败");  
    }
    else          //输入的是其它错误编号
      LCD12864_display_string(3,3,"编号错误");
  }
    
  n=0;     //清除输入编号位数
  ID=0;     //清除输入编号
  zhiwen_f=0;//关闭指纹采集                  
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620834
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164097
  • 密码锁
    +关注

    关注

    6

    文章

    249

    浏览量

    34570
  • 指纹模块
    +关注

    关注

    0

    文章

    25

    浏览量

    3748

原文标题:【毕业设计010】基于单片机指纹密码锁(源代码、原理图、参考论文、调试步骤、答辩解答等)

文章出处:【微信号:精通单片机与嵌入式,微信公众号:精通单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    51单片机指纹密码锁

    单片机51单片机
    jf_06209345
    发布于 :2022年07月23日 00:18:38

    单片机指纹密码锁单片机小项目实操讲解,实操运用

    单片机
    电路设计
    发布于 :2022年12月28日 18:58:30

    关于制作单片机指纹密码锁

    想做一个51单片机控制的指纹密码锁指纹模块该用哪一种好呢?求大神指导
    发表于 03-24 17:55

    基于51单片机指纹密码锁 精选资料推荐

    1.系统功能概述本次分享的是一款基于51单片机指纹识别电子密码锁系统,该系统以STC89C52单片机作为模块核心,通过串口通信控制指纹模块
    发表于 07-20 06:43

    如何去实现一种基于51单片机指纹密码锁设计

    系统由STC89C51单片机+AT24C02数据存储模块+按键模块+LCD12864显示+FM10A指纹模块等构成。具体功能:1、能够对指纹进行录入、识别和删除;2、能够实现最多1000枚的
    发表于 11-10 06:18

    基于单片机指纹密码锁毕业设计资料分享

    【资源下载】下载地址如下1553:https://docs.qq.com/doc/DTlRSd01BZXNpRUxl#include #include//包含头文件#include"24C0x.h"//包含24C02函数#include"LCD12864.h" //包含液晶函数#define uchar unsigned char#define uint unsigned int//宏定义 #de
    发表于 01-13 07:43

    如何去实现一种基于单片机指纹密码锁指纹识别系统设计

    【资源下载】下载地址:点击下载(751)百度网盘基于单片机指纹识别和键盘密码锁。里面包括程序,原理图,pcb图,原件清单和实物图。#include #include//包含头文件
    发表于 01-13 07:48

    如何去实现一种基于单片机指纹密码锁双重加密设计

    设计简介:本设计是基于单片机指纹密码锁双重加密设计,主要实现以下功能:LCD1602显示提示信息具有指纹密码双重加密(先确定
    发表于 02-18 07:28

    如何去实现一种基于单片机指纹密码锁系统仿真设计

    百度网盘下载地址(1120):点击下载#include #include "1602.h"#include #include "KEY4X4.h"#include "eeprom2.h"static bitflag; /* 定义刷新标志 */volatile ucharKey_Value = 0xff;uint count;/* 定义计数标志 */
    发表于 02-23 06:51

    使用51单片机设计指纹密码锁的电路原理图和PCB资料免费下载

    本文档的主要内容详细介绍的是使用51单片机设计指纹密码锁的电路原理图和PCB资料免费下载。
    发表于 07-05 08:00 71次下载
    使用51<b class='flag-5'>单片机</b>设计<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>的电路原理图和PCB资料免费下载

    基于51单片机指纹密码锁电路设计方案

    本设计以单片机STC89C52作为密码锁监控装置的检测和控制核心,采用矩阵键盘输入的电子密码指纹密码解锁两种解锁方式。 系统采用LCD12
    的头像 发表于 01-12 11:39 6229次阅读
    基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>电路设计方案

    基于51单片机指纹密码锁

    1.系统功能概述本次分享的是一款基于51单片机指纹识别电子密码锁系统,该系统以STC89C52单片机作为模块核心,通过串口通信控制指纹模块
    发表于 11-04 18:36 34次下载
    基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>

    52-基于51单片机指纹密码锁设计

    系统由STC89C51单片机+AT24C02数据存储模块+按键模块+LCD12864显示+FM10A指纹模块等构成。具体功能:1、能够对指纹进行录入、识别和删除;2、能够实现最多1000枚的
    发表于 11-05 13:36 8次下载
    52-基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>设计

    基于51单片机指纹密码锁

    本设计是基于单片机指纹密码锁,主要实现以下功能:可实现LCD1602显示门状态以及密码状态 通过步进电机模拟门开关 通过4*4矩阵按键输入开门密码
    发表于 11-23 16:36 53次下载
    基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>

    基于单片机指纹密码锁双重加密设计

    设计简介:本设计是基于单片机指纹密码锁双重加密设计,主要实现以下功能:LCD1602显示提示信息 具有指纹密码双重加密(先确定
    发表于 12-23 19:32 28次下载
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>指纹</b><b class='flag-5'>密码锁</b>双重加密设计