【51单片机】AS608指纹锁设计

article/2025/8/29 8:57:29

文章目录

  • 一、主要功能
  • 二、硬件资源
    • 1.硬件准备
    • 2.硬件连接
  • 三、软件设计
    • 1.软件结构
    • 2.主要代码
  • 四、实验现象
  • 联系作者


一、主要功能

系统运行后,LCD显示指纹锁主界面,显示模块指纹库剩余容量和指纹对比等级数。如果已经添加了指纹的话,直接在主界面中即可进行指纹识别开锁,识别成功后,LCD会显示当前指纹ID,匹配分数,并且蜂鸣器报警提示,开锁指示灯D2点亮开锁成功, 一段时间后再次关锁,且D2指示灯灭,LCD返回主界面显示。如果指纹错误,不进行动作响应。
在主界面时,若按下KEY3键进入指纹设置界面。进入指纹设置界面时,可通过KEY3键选择添加指纹或删除指纹模式。当需要添加指纹时,通过KEY3键选择指纹模式,按下KEY4键进入添加指纹界面,初始指纹ID为0(0-299),可通过KEY3键进行累加,选择好ID值后,按下KEY4键进入指纹录入,此时LCD会提示请录入指纹,指纹录入过程中LCD会伴有提示显示,且 蜂鸣器会报警提示,录入2次指纹匹配成功后LCD会显示剩余指纹容量,并返回主界面显示。若要删除指纹,可通过KEY3键选择删除指纹模式,按下KEY4键进入删除指纹界面,可通过KEY3键选择要删除的指纹ID,选择好后,按下KEY4键删除选定指纹,此时LCD会显示删除信息,并返回主界面显示,可重新添加指纹或删除指纹。此时可验证添加的指纹或删除的指纹识别,并且界面上显示的剩余指纹容量值会更新。如果要手动进行开锁,可在主界面时,按下KEY4键开锁,LCD会开锁提示信息,蜂鸣器报警提示,开锁指示灯D2亮,一段时间后再次关锁,且D2指示灯灭,LCD返回主界面显示。


二、硬件资源

1.硬件准备

项目所需要的硬件资源如下:
1、51单片机开发板1个
2、AS608指纹模块1个
3、LCD1602液晶模块1个
4、USB线1条(用于供电和程序下载)
5、杜邦线若干


2.硬件连接

      按键模块-->单片机IOK3-->P32K4-->P33蜂鸣器模块-->单片机IOBEEP-->P25AS608指纹模块-->单片机IOVI-->3.3VTX-->P30RX-->P31GND-->GNDLCD1602液晶-->单片机IORS->P26RW->P25E->P27DB0-DB7-->P00-P07

三、软件设计

1.软件结构

在这里插入图片描述

2.主要代码

#include "app_demo.h"
#include "time.h"
#include "lcd1602.h"
#include "beep.h"
#include "key.h"
#include "uart.h"
#include "as608.h"//控制管脚定义
sbit LED1=P2^0;
sbit LED2=P2^1;//定义全局结构体变量
_finger finger;u16 ValidN=0;//模块内有效指纹个数
xdata SysPara AS608Para;//指纹模块AS608参数extern u16 UART_RX_STA;//定时器0中断函数
void time0() interrupt 1
{static u8 i=0;TH0=0XDC;	//给定时器赋初值,定时10msTL0=0X00;i++;if(i==100)//间隔1S读取温度{i=0;}
}//指示系统错误
void system_error(void)
{while(1){LED1=!LED1;delay_ms(200);}
}//主菜单显示
void main_window_show(void)
{u8 ensure=0;MENU://默认刷指纹模式if(finger.mode==0){lcd1602_clear();while(PS_HandShake(&AS608Addr))//与AS608模块握手{lcd1602_show_string(0,0,"AS608 Error!");delay_ms(500);lcd1602_clear();}lcd1602_show_string(0,0,"->FingerPrint-< ");ensure=PS_ValidTempleteNum(&ValidN);//读库指纹个数if(ensure!=0x00)system_error();ensure=PS_ReadSysPara(&AS608Para);  //读参数if(ensure==0){lcd1602_show_string(0,1,"Cap:");lcd1602_show_nums(4,1,AS608Para.PS_max-ValidN,3,0);lcd1602_show_string(9,1,"Level:");lcd1602_show_nums(15,1,AS608Para.PS_level,1,0);}elsesystem_error();while(1){press_FR();//刷指纹goto MENU;//回到主菜单界面}}	
}//设置菜单显示
void setup_window_show(void)
{u8 key=0;u8 mode=0;//指纹设置模式if(finger.mode!=0){lcd1602_clear();lcd1602_show_string(0,0,"FingerPrint");lcd1602_show_string(0,1,"->");lcd1602_show_string(2,1,"Add");lcd1602_show_string(10,1,"Delete");	while(1){key=key_scan(0);if(key==KEY3_PRESS)//选择模式{mode++;lcd1602_show_string((mode-1)*8,1,"  ");//清除上次箭头指向if(mode>=2)mode=0;lcd1602_show_string(mode*8,1,"->");//箭头指向}else if(key==KEY4_PRESS)//确认{finger.mode=mode+1;}//添加指纹if(finger.mode==1){Add_FR();mode=0;finger.mode=0;break;}//删除指纹else if(finger.mode==2){Del_FR();mode=0;finger.mode=0;break;}}}
}//AS608指纹锁
void app_demo(void)
{UART_Init();//波特率9600
//	time0_init();//初始化定时器0,10msUART_RX_STA=0;lcd1602_init();//LCD1602初始化while(1){main_window_show();setup_window_show();			}
}

四、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。


http://chatgpt.dhexx.cn/article/e0sFBKbv.shtml

相关文章

基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)

目录 一、项目功能 二、视频 三、原理图 4、材料选择 5、部分程序 资料下载地址&#xff1a;基于STM32的多功能门禁系统 一、项目功能 1、AS608指纹解锁&#xff1b;可以录入、删除、验证指纹&#xff1b; 2、密码解锁&#xff1b;可以密码验证、修改密码和保存密码&a…

AS608指纹模块的上位机检测

​​​​​引言 最近在搞这个基于STC51的指纹锁&#xff0c;目前已经差不多完成&#xff0c;对于我这个小白来说还是有点难度的。上位机检测是之前做的&#xff0c;现在也算是回忆总结一下吧&#xff01; 正文 AS608指纹模块的介绍 PCB&#xff1a; 具体操作 第一步 将AS…

Arduino Nano+AS608指纹门禁系统

100元制作宿舍指纹门禁系统 效果图&#xff1a;硬件清单各个模块连接程序流程图驱动文件以及配置烧录环境驱动文件配置编译器 局部源码**演示视频**更新内容完整源码下载&#xff1a; 效果图&#xff1a; 这里用的是电容式的AS608指纹模块 硬件清单 名称用途Arduino Nano开发…

ATECC608A的完美兼容国产替代芯片

工程师强烈推荐的一款ATECC608A的完美兼容替代加密芯片&#xff1a;MOD8ID MOD8ID是一款MODSEMI推出的高安全等级加密芯片&#xff0c;真正做到了软硬件P2P兼容ATECC608系列&#xff0c;也就是说不需要改变主机端原有的Cryptolib库&#xff0c;甚至无需更改任何代码和硬件即可…

基于stm32f103c8t6及AS608-----指纹锁项目

一、关于本项目&#xff1a; 本文适合于初学者&#xff0c;大佬还请勿喷&#xff0c;欢迎提出意见&#xff0c;有纰漏之处将及时纠正。在浅学了stmf103c8t6后&#xff0c;想着依据现在所拥有的知识和能力做一个小项目。在了解到有关宿舍指纹锁的相关内容&#xff0c;对该功能的…

【基于STM32F103+AS608的智能打卡系统】

基于STM32F103AS608的智能打卡系统 工程源码链接 链接&#xff1a;https://pan.baidu.com/s/1RRc03nTrcTp--xfQnv2r9Q?pwdin9p 提取码&#xff1a;in9p --来自百度网盘超级会员V5的分享一、功能描述基于STM32F013AS608实行的智能打卡系统 1》进行打卡功能 2》指纹添加&…

as608指令c语言,单片机+AS608的使用,并带程序

之前在AS608的使用上走了许多弯路,这次希望身为初学者的我们可以吸取经验,特此介绍AS608. 指纹模块AS608的使用: 1脚红线:Vcc,连接3.3V电源供电,勿接3.3V以上电源 2脚黄线:接单片机串口TX端 3脚白线:接单片机串口RX端 4脚黑线:GND,3.3V电源的GND 5脚蓝线:模块触摸…

STM32+AS608指纹模块

前言&#xff1a;这个串口逻辑有点问题&#xff0c;要是用串口做命令输入端的话要自己改一下串口逻辑&#xff0c;串口只是调试能不能用指纹模块的功能&#xff0c;后期不需要串口发命令所以没怎么写串口的命令逻辑 1.AS608的资料挺全的&#xff0c;就是按照他给的来写命令&…

AS608与单片机握手失败、与上位机通讯失败

简言&#xff1a;本人在使用AS608模块时遇到了握手失败、通讯失败的问题&#xff0c;尝试网上各种方法未果后&#xff0c;换了一个AS608模块&#xff0c;问题解决。 一、与单片机握手失败 检查代码中的波特率是否为9600&#xff0c;再通过上位机将AS608的波特率改为与代码相同…

vue+vantUI实现单选、多选题(上一题、下一题)

vue+vantUI实现单选、多选题(上一题、下一题) <template><div class="exam-online"><div class="table-list2"><div v-for="(item,index) in questionList" :key="index"><div v-if="currentNum===…

答题微信小程序实现(4):数据库题库的调用/上一题、下一题/题量length的获取

不积跬步无以至千里&#xff0c;不计小流无以成江海。 本来想直接上选择题的&#xff0c;但步子就有点太大了&#xff0c;不是一点点来的。选择题除了题库的调用外&#xff0c;还需要判断答案对错&#xff0c;涉及到if语句&#xff0c;这个if语句应该单独写一个&#xff0c;对…

vue实现调查问卷一页一题,上一题下一题形式

使用了vant组件的radio 单选框 官网https://youzan.github.io/vant/#/zh-CN/radio 效果图 效果图 做出来的效果图就是上面那样 一页一题 附上代码&#xff1a; <template><div class"second"><!-- 问卷题 --><div v-for"(item,index) in…

leetcode每日一题

目录 &#x1f3c6;重新格式化电话号码 &#x1f453;①麻烦解法 &#x1f453;②使用库函数降维打击 每日鸡汤&#xff1a; &#x1f680;有志者自有千计万计&#xff0c;无志者只感千难万难。 &#x1f3c6;重新格式化电话号码 给你一个字符串形式的电话号码 number 。n…

题题题题题1

js 基本数据类型 7 种原始类型Boolean、Number、String、Null、Undefined、Symbol&#xff08;es6&#xff09;、BigInt、Object Symbol的理解 symbol是在es6中引入的基本数据类型、它表示的是一个独一无二的值&#xff0c;主要是来解决命名冲突的问题&#xff0c;它的使用场…

下午第一题

2017上半年 阅读下列说明和图&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸的对应栏内。 【说明】 某医疗器械公司作为复杂医疗产品的集成商&#xff0c;必须保持高质量部件的及时供应。为了实现这一目标&#xff0c;该公司欲开发一采购系统。系统的主要功能如下:…

JS实现答题上一题下一题

以下是实现效果图 JS块代码 var TRUE_COUNT 0//正确的题数var count 10;//当前所在题数var thisURL document.URL;var getval thisURL.split(?)[1];var titleType getval.split("")[1];//获取题目typevar class_radio "selection";//选择按钮var ur…

js、jq实现答题上一题下一题

一、以下是效果图 说明&#xff1a;第一题只有一个“下一题”按钮&#xff0c;中间题目有两个按钮“上一题”“下一题”&#xff0c;最后一题按钮改为“提交”&#xff1b; 二、代码 js代码&#xff08;jquery需要自行引入&#xff09; var number document.getElementsByCl…

vue 简单实现上一题下一题问答效果

1.先来看下效果&#xff08;左上展示题目数量以及当前题序号&#xff0c;当第一题时只有下一题按钮&#xff0c;未回答问题时无法点击下一题&#xff0c;且回答结果展示错误或正确的颜色&#xff09; ​​​​ 2.接下来我们来看下html是怎么写的吧 <!-- 左边数据 --><…

MybatisPlus自动填充(建立、更新时间)

准备 1、建立user表 DROP TABLE IF EXISTS user;CREATE TABLE user (id BIGINT(20) NOT NULL COMMENT 主键ID,name VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT(11) NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY …

Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate

操作数据库映射实体类时&#xff0c;通常需要记录createTime和updateTime&#xff0c;如果每个对象新增或修改去都去手工操作创建时间、更新时间&#xff0c;会显得比较繁琐。 Springboot jpa提供了自动填充这两个字段的功能&#xff0c;简单配置一下即可。CreatedDate、LastM…