当前位置: 首页 > news >正文

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

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于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站演示视频:
B站演示视频
基于单片机的指纹打卡系统

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

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

http://www.lryc.cn/news/497380.html

相关文章:

  • 【Linux】用户操作命令
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • windows部署PaddleSpeech详细教程
  • 线程条件变量 生产者消费者模型 Linux环境 C语言实现
  • C++ packaged_task
  • 【联表查询】.NET开源 ORM 框架 SqlSugar 系列
  • 嵌入式C编程:宏定义与typedef的深入对比与应用
  • 高级java每日一道面试题-2024年12月03日-JVM篇-什么是Stop The World? 什么是OopMap? 什么是安全点?
  • 【openGauss︱PostgreSQL】openGauss或PostgreSQL查表、索引、序列、权限、函数
  • Dataset用load_dataset读图片和对应的caption的一个坑
  • 【信息系统项目管理师】第7章:项目立项管理 考点梳理
  • 知识库、提示词对大语言模型的影响测试
  • vistat-监控和分析网络状态
  • EasyAnimateV5 视频生成大模型原理详解与模型使用
  • 水稻和拟南芥生命周期中单碱基分辨率的m6A定量分析-文献精读88
  • 学习threejs,使用canvas更新纹理
  • 【笔记2-3】ESP32 bug:PSRAM chip not found or not supported 没有外部PSRAM问题解决
  • 大数据hadoop、spark、flink、kafka发展的过程
  • 设计模式-理论基础
  • 猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度
  • 用于目标检测的集中式特征金字塔
  • 大舍传媒-关于海外媒体宣发的探讨
  • Python从入门到入狱
  • AMEYA360 | 杭晶电子:晶振在AR/VR中的应用
  • RAG评估指南:从检索到生成,全面解析LLM性能评估方法
  • 贪心算法实例-问题分析(C++)
  • Ubuntu20.04 配置虚拟显示器和切回物理显示器
  • HTML 常用标签属性汇总一〈body〉标签
  • Python yield关键字
  • tomcat的Mysql链接字符串问题