基于单片机的指纹打卡系统

ops/2024/10/22 7:28:27/

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于STC89C52RC,采用两个按键替代指纹,一个按键按下,LCD12864显示比对成功,则
采用ULN2003驱动步进电机转动,表示开门,另一个按键按下,则LCD12864显示比对失败,
此时启动蜂鸣器报警。
还有两个按键,一个按下后切换到第一个页面:请按指纹
第二个按键按下后,显示请再次按下指纹

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include < reg52.h >
#include < character.h >
#include < lcd.h >\
#include<string.h>
#include<stdio.h>
#include<intrins.h>
#include<stdlib.h>
#define INT8U unsigned char
#define INT16U unsigned intsbit key1 = P0^0;
sbit key2 = P0^1;
sbit key3 = P0^2;
sbit key4 = P0^3;
sbit beep = P0^4;INT8U code FFW_ARR[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; 
INT8U n = 1;/*函数定义*/
void ajpd(); //按键判断函数void jiemian1(void)			  //界面1    请按指纹
{				   Lcd_Character_16X16( 1, 0, 0 , function_logo[5]);  // Lcd_Character_16X16( 1, 0, 16 , function_logo[6]);  // Lcd_Character_16X16( 1, 0, 32 , function_logo[7]);  // Lcd_Character_16X16( 1, 0, 48 , function_logo[8]);  //	
}void jiemian2(void)			  //界面2
{				   Lcd_Character_16X16( 1, 0, 0 , function_logo[0]);  // 比Lcd_Character_16X16( 1, 0, 16 , function_logo[1]);  // 对Lcd_Character_16X16( 1, 0, 32 , function_logo[2]);  // 成Lcd_Character_16X16( 1, 0, 48 , function_logo[3]);  //	功
}void jiemian3(void)			  //界面3  请再次按下指纹 
{				   Lcd_Character_16X16( 1, 0, 0 , function_logo[9]);  // Lcd_Character_16X16( 1, 0, 16 , function_logo[10]);  // Lcd_Character_16X16( 1, 0, 32 , function_logo[11]);  // Lcd_Character_16X16( 1, 0, 48 , function_logo[12]);  //	Lcd_Character_16X16( 1, 0, 64 , function_logo[13]);  // Lcd_Character_16X16( 1, 0, 80 , function_logo[14]);  // Lcd_Character_16X16( 1, 0, 96 , function_logo[15]);  //
}void jiemian4(void)			  //界面4  比对失败
{				   Lcd_Character_16X16( 1, 0, 0 , function_logo[0]);  // Lcd_Character_16X16( 1, 0, 16 , function_logo[1]);  // Lcd_Character_16X16( 1, 0, 32 , function_logo[4]);  // Lcd_Character_16X16( 1, 0, 48 , function_logo[16]);  //	
}void jiemian5(void)			  //界面4   开机中
{				   Lcd_Character_16X16( 1, 0, 32 , function_logo[17]);  // Lcd_Character_16X16( 1, 0, 48 , function_logo[18]);  // Lcd_Character_16X16( 1, 0, 64 , function_logo[19]);  // }void delay_ms(INT16U x)
{INT8U t=120;while(x--)while(t--);
}
void STEP_FFW(INT8U n)
{INT8U i,j;for(i=0; i<5*n; i++){for(j=0; j<8; j++){P1=FFW_ARR[j];delay_ms(60);}}
}
void main(void)
{Lcd_Initial();     //LCD初始化Lcd_Display_On();	//启动屏幕jiemian5();Delay(1000);Lcd_Clear();beep = 0;while(1){ajpd();//按键判断}
}void ajpd()
{if(key1 == 0)  //指纹开{Lcd_Clear();beep = 0;jiemian2();STEP_FFW(n);while(!key1);}if(key2 == 0)  //指纹关{Lcd_Clear();jiemian4();beep = 1;while(!key2);}if(key3 == 0){Lcd_Clear();beep = 0;jiemian1();while(!key3);}if(key4 == 0){Lcd_Clear();beep = 0;jiemian3();while(!key4);}
}

四、实现现象

具体动态效果看B站演示视频:

基于单片机的指纹打卡系统

全部资料(源程序、仿真文件、安装包、演示视频):

百度网盘下载资料icon-default.png?t=O83Ahttps://pan.baidu.com/s/1kcXU1y_TuQWUwiNsIrfo-w?pwd=9nne


http://www.ppmy.cn/ops/118935.html

相关文章

数据对接 模板设计模式的使用

与上游系统常有数据对接的需求&#xff0c;对接的接口在入参 返回值 数据处理逻辑上常有一定的规律性&#xff0c;使用模板方法 可以减少样本代码 提高代码效率 这里给出一个示例 同步上游系统的账号 组织&#xff08;业务方请求接口&#xff09; 抽象类 import cn.hutool.c…

深入浅出MongoDB(三)

深入浅出MongoDB&#xff08;三&#xff09; 文章目录 深入浅出MongoDB&#xff08;三&#xff09;复制副本集设置分片分片实例备份与恢复监控ObjectId 复制 复制时将数据同步在多个服务器的过程&#xff0c;提供了数据的冗余备份&#xff0c;在多个服务器上存储数据副本&#…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】 一、TFLM是什么&#xff1f;二、TFLM开源项目2.1 下载TFLM源代码2.2 TFLM基准测试说明2.3 TFLM基准测试命令 三、TFLM初步体验3.1 PC上运行Keyword基准测试3.2 PC上运行Person detection基准测试3.3 No module nam…

企微软件:重塑企业沟通与管理的新生态

在数字化转型的浪潮中&#xff0c;企业沟通与管理方式正经历着前所未有的变革。企微软件&#xff0c;作为这一变革中的佼佼者&#xff0c;以其强大的功能、灵活的部署和卓越的用户体验&#xff0c;正逐步成为企业提升运营效率、优化内部沟通、促进团队协作的重要工具。本文将深…

【Wireshark笔记】通过Wireshark检测和分析TCP重传

通过Wireshark检测和分析TCP重传 在网络通信中&#xff0c;TCP重传&#xff08;TCP Retransmission&#xff09;是一种非常重要的现象&#xff0c;特别是在分析网络性能和故障排查时。重传数据包会影响网络性能&#xff0c;导致延迟增加&#xff0c;甚至引发网络拥塞等问题。为…

基于Arduino的自弹尤克里里机器人

需要项目源码资料的可以私信我 基于Arduino的自弹尤克里里机器人 一、简介二、材料清单三、工具四、实现过程步骤1&#xff1a;实物图步骤2&#xff1a;3D打印部件步骤3&#xff1a;组装上半部分步骤4&#xff1a;组装下半部分步骤5&#xff1a;安装导轨步骤6&#xff1a;设置…

Kafka和RabbitMQ比较

Kafka和RabbitMQ都是流行的消息队列系统&#xff0c;它们在分布式系统中扮演着至关重要的角色&#xff0c;用于异步消息传递和解耦应用组件。尽管它们共享一些基本的概念&#xff0c;但它们在设计目标、性能特性、使用场景等方面有着显著的差异。 设计目标 Kafka&#xff1a;Ka…

记一次教学版内网渗透流程

信息收集 如果觉得文章写的不错可以共同交流 http://aertyxqdp1.target.yijinglab.com/dirsearch dirsearch -u "http://aertyxqdp1.target.yijinglab.com/"发现 http://aertyxqdp1.target.yijinglab.com/joomla/http://aertyxqdp1.target.yijinglab.com/phpMyA…