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

相关推荐
羽获飞5 分钟前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
飞睿科技1 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
来自晴朗的明天2 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)2 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术2 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao3 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报4 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_110111 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋12 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
梁洪飞15 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm