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

article/2025/8/29 9:08:30

目录

一、项目功能

二、视频

三、原理图

4、材料选择

5、部分程序

资料下载地址:基于STM32的多功能门禁系统

一、项目功能

1、AS608指纹解锁;可以录入、删除、验证指纹;

2、密码解锁;可以密码验证、修改密码和保存密码;

3、刷卡解锁;

4、OLED液晶显示;

二、视频

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

三、原理图

4、材料选择

AS608指纹模块 

RC522刷卡模块

OLED液晶显示模块

矩阵按键模块

5、部分程序


#include "sys.h"
#include "delay.h"
#include "oled_iic.h"
#include "stdio.h"
#include "key.h"
#include "timer.h"
#include "as608.h"
#include "usart3.h"
#include "stmflash.h"
#include "key_driver.h"
#include "RFID_RC522.h"
//要写入到STM32 FLASH的字符串数组u8 TEXT_Buffer[10]={"1234"};
#define SIZE sizeof(TEXT_Buffer)		//数组长度u8 datatemp[SIZE];
u8 PassFlag = 0;// 1 :更改密码     2:验证密码
u8 inputidx = 0;
u8 setidx = 0;
u8 cardidx = 0;
u8 delidx = 0;
u16 errcnts = 0;
int main(void)
{		extern const u8 BMP1[];int i = 0,m = 0,temp = 0;u8 data[16]={0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,255,255,255,255,255,255,255}; //写入的金额;HZ= GB16_NUM();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级delay_init();TIM3_Int_Init(71,999);Init_Key_Driver();usart3_init(57600);KEY_Init();delay_ms(100);OLED_Init();//delay_ms(1000);OLED_Clear();//delay_ms(500);OLED_ShowCH(16, 0,  "指纹解锁");OLED_ShowCH(16, 2, "K1添加指纹");OLED_ShowCH(16, 4, "K3删除指纹");OLED_ShowCH(16, 6, "K5验证指纹");STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,4);//获取密码delay_ms(50);RC522_Init();		 //RC522while(1){		Main_Key_Ack();if(SysMenu.menuidx == 0){if(SysMenu.ID == 0){OLED_ShowCH(16, 0,  "指纹解锁");OLED_ShowCH(16, 2, "K1添加指纹");OLED_ShowCH(16, 4, "K3删除指纹");OLED_ShowCH(16, 6, "K5验证指纹");}PassFlag = 0;if(SysMenu.ID==1){OLED_Clear();//Add_FR();}if(SysMenu.ID==3){OLED_Clear();Del_FR();}if(SysMenu.ID==5){OLED_Clear();OLED_ShowCH(32,2,"请按手指");press_FR();}	}else if(SysMenu.menuidx == 1){if(SysMenu.ID == 0){OLED_ShowCH(16, 0,  "密码解锁");OLED_ShowCH(16, 2, "K1更改密码");OLED_ShowCH(16, 4, "K2验证密码");//Main_Key_Ack();}if(SysMenu.ID == 1){switch(setidx){case 0://输入新密码Syspass.flag = 1;OLED_ShowCH(16, 2, "输入新密码");OLED_ShowCH(16, 4, "              ");setidx = 1;break;case 1://显示****for( i = 0 ; i < Syspass.changenum;i++){OLED_ShowCH(16 + i *16, 4, "*");}if(Syspass.changenum == 4)setidx = 2;break;case 2://密码更改if(Syspass.isok == 1){Syspass.isok = 0;ChangePass();delay_ms(1000);setidx = 0;SysMenu.ID = 0;Syspass.flag = 0;}break;	}}if(SysMenu.ID == 2){switch(inputidx){case 0://输入密码Syspass.flag = 2;OLED_ShowCH(16, 2, "请输入密码");OLED_ShowCH(16, 4, "              ");inputidx = 1;break;case 1://显示****for( i = 0 ; i < Syspass.verifynum;i++){OLED_ShowCH(16 + i *16, 4, "*");}if(Syspass.verifynum == 4)inputidx = 2;break;case 2://密码匹配if(Syspass.isok == 1){Syspass.isok = 0;MatchPass();delay_ms(1000);inputidx = 0;SysMenu.ID = 0;Syspass.flag = 0;}break;}}}else if(SysMenu.menuidx == 2){if(SysMenu.ID == 0){OLED_ShowCH(16, 0,  "刷卡解锁");OLED_ShowCH(16, 2,  "K1请刷卡");//OLED_ShowCH(16, 4,  "K2验证密码");}if(SysMenu.ID == 1){switch (cardidx){case 0:OLED_ShowCH(16, 2,  "请刷卡  ");//OLED_ShowCH(16, 4,  "              ");temp = read_card_data();if(temp == 0){cardidx = 1;}else OLED_ShowCH(16, 4,  "        ");errcnts++;if(errcnts > 200){errcnts = 0;cardidx = 0;SysMenu.ID = 0;OLED_ShowCH(16, 4,  "          ");}break;case 1:OLED_ShowCH(16, 4,  "刷卡成功");delay_ms(1500);delay_ms(1500);cardidx = 0;SysMenu.ID = 0;OLED_ShowCH(16, 4,  "        ");break;case 2:break;}}}}
}


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

相关文章

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…

win10如何关闭自动更新及修改更新时间

关于win10如何关闭自动更新&#xff0c;有以下三个方法&#xff0c;但其效果明显不同。 当然&#xff0c;可用度最高的肯定放到最前面。 其中方法一实用性最强&#xff0c;方法二有时候没什么用&#xff0c;方法三可以延缓较长一段时间更新&#xff0c;方法四可以设置更新时间…