基于stm32F103C8T6的智能门禁(毕业设计)

刷卡

分享一期
RC522刷卡模块做的门禁系统(上面是视频呈现)

功能文字说明(拓展空间非常大)

识别卡号以及卡类并显示

刷管理卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)

刷用户卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)

再次刷卡 会显示卡号以及卡类

实际的项目中添加了舵机,语音播报模块,大家也可根据自己的需求任意修改

本次演示所需硬件介绍

F103C8T6最小系统
在这里插入图片描述

RC522刷卡模块
接法
VCC接3.3V
GND接GND
SDA,SCK,MOSI,MISO根据引脚配置连接
RQ悬空(不用接)
RST接3.3V(波特率设置为9600)
在这里插入图片描述
轻触按键
找一块以前测试的洞洞板, 随意焊接一个小按键,对脚用排针引出更方便连接(节省成本 向我学习)
在这里插入图片描述
部分代码

#include "stm32f10x.h"
#include "usart.h"
#include "sys.h"
#include "oled.h"
#include "delay.h"
#include "rc522_function.h"
#include "rc522_config.h"
#include "timer.h"
#include "read_card.h"
#include "rtc.h" 
#include "usmart.h"
#include "key.h"
#include "stmflash.h"
#include "MP3.h"
const u8 TEXT_Buffer[]={"STM32F103 FLASH TEST"};
u8 USERResult;//IC卡匹配结果
u8 Look_Start;//门禁状态
u8 Key_Value;//按键值
extern u8 flag;
extern int lu;
extern int lz;
 int main(void)
 {
  u8 datatemp[30];
	u8 sss,aaa;
  delay_init();	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 
  uart_init(9600);
	TIM3_PWM_Init(899,0);
	RC522_Init ();
	KEY_Init();	 
	usmart_dev.init(SystemCoreClock/1000000);	
	RTC_Init(); 
	PcdReset (); 
	MP3_Init();
	M500PcdConfigISOType ( 'A' );//设置工作方式
	OLED_Init();			
	OLED_Clear();
	delay_ms(100);
	 while(1)
	 {
	  display_time(0,0,calendar.sec);//显示时间
		oledkaiji();
		delay_ms(100);
		IC_test ();//IC卡检测,还需要修改		 
		 Key_Value=KEY_Scan(0);
		if((flag==0x01)&&(Key_Value==1))
		 {
			 OLED_Clear();
		   cunka();//显示 刷卡录入
			 //舵机关闭
			 delay_ms(1000);
			 while(lu)
			 {	 
			  lurukahao();
				//duka();
			 }
			 flag=0; 
			 delay_ms(1000);
			 OLED_Clear();
			 OLED_Clear();
	   }
		 if((flag==2)&&(Key_Value==1))
		 {
			 OLED_Clear();
		   //cunka1();//显示 刷卡录入
			 //打印卡号,保存到flash
			 flag=0; 
			 delay_ms(1000);
			 OLED_Clear();
			 OLED_Clear();
	   }
	 if((flag==1)&&(Key_Value==2))
		 {
			 TIM_SetCompare3(TIM3,37000);
			 flag=0;
	   }
	 
		 if((flag==2)&&(Key_Value==2))
		 {
		  //MP3_choose(3);//没有权限关门
		 }			 
		 
		 if(Key_Value==3)
		 {
			 OLED_Clear();
			 while(lz)
			 {	 
				 
			  //shanchukahao();
				delay_ms(1000);
				sk1();
				OLED_Clear();
			  OLED_Clear();
				//duka();
			 }
		    //flag=0; 
		 }
		 
	 
 }
 
 
 
 

}

资料获取可加群或关注公众号
①群 721421120
②群 864292349

公众号回复 智能门禁即可获得
在这里插入图片描述

版权声明:本文为CSDN博主「文某9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lllmeimei/article/details/118360947

刷卡

分享一期
RC522刷卡模块做的门禁系统(上面是视频呈现)

功能文字说明(拓展空间非常大)

识别卡号以及卡类并显示

刷管理卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)

刷用户卡 按下按键 提示刷卡录入(刷未录入的卡即可录入)

再次刷卡 会显示卡号以及卡类

实际的项目中添加了舵机,语音播报模块,大家也可根据自己的需求任意修改

本次演示所需硬件介绍

F103C8T6最小系统
在这里插入图片描述

RC522刷卡模块
接法
VCC接3.3V
GND接GND
SDA,SCK,MOSI,MISO根据引脚配置连接
RQ悬空(不用接)
RST接3.3V(波特率设置为9600)
在这里插入图片描述
轻触按键
找一块以前测试的洞洞板, 随意焊接一个小按键,对脚用排针引出更方便连接(节省成本 向我学习)
在这里插入图片描述
部分代码

#include "stm32f10x.h"
#include "usart.h"
#include "sys.h"
#include "oled.h"
#include "delay.h"
#include "rc522_function.h"
#include "rc522_config.h"
#include "timer.h"
#include "read_card.h"
#include "rtc.h" 
#include "usmart.h"
#include "key.h"
#include "stmflash.h"
#include "MP3.h"
const u8 TEXT_Buffer[]={"STM32F103 FLASH TEST"};
u8 USERResult;//IC卡匹配结果
u8 Look_Start;//门禁状态
u8 Key_Value;//按键值
extern u8 flag;
extern int lu;
extern int lz;
 int main(void)
 {
  u8 datatemp[30];
	u8 sss,aaa;
  delay_init();	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 
  uart_init(9600);
	TIM3_PWM_Init(899,0);
	RC522_Init ();
	KEY_Init();	 
	usmart_dev.init(SystemCoreClock/1000000);	
	RTC_Init(); 
	PcdReset (); 
	MP3_Init();
	M500PcdConfigISOType ( 'A' );//设置工作方式
	OLED_Init();			
	OLED_Clear();
	delay_ms(100);
	 while(1)
	 {
	  display_time(0,0,calendar.sec);//显示时间
		oledkaiji();
		delay_ms(100);
		IC_test ();//IC卡检测,还需要修改		 
		 Key_Value=KEY_Scan(0);
		if((flag==0x01)&&(Key_Value==1))
		 {
			 OLED_Clear();
		   cunka();//显示 刷卡录入
			 //舵机关闭
			 delay_ms(1000);
			 while(lu)
			 {	 
			  lurukahao();
				//duka();
			 }
			 flag=0; 
			 delay_ms(1000);
			 OLED_Clear();
			 OLED_Clear();
	   }
		 if((flag==2)&&(Key_Value==1))
		 {
			 OLED_Clear();
		   //cunka1();//显示 刷卡录入
			 //打印卡号,保存到flash
			 flag=0; 
			 delay_ms(1000);
			 OLED_Clear();
			 OLED_Clear();
	   }
	 if((flag==1)&&(Key_Value==2))
		 {
			 TIM_SetCompare3(TIM3,37000);
			 flag=0;
	   }
	 
		 if((flag==2)&&(Key_Value==2))
		 {
		  //MP3_choose(3);//没有权限关门
		 }			 
		 
		 if(Key_Value==3)
		 {
			 OLED_Clear();
			 while(lz)
			 {	 
				 
			  //shanchukahao();
				delay_ms(1000);
				sk1();
				OLED_Clear();
			  OLED_Clear();
				//duka();
			 }
		    //flag=0; 
		 }
		 
	 
 }
 
 
 
 

}

资料获取可加群或关注公众号
①群 721421120
②群 864292349

公众号回复 智能门禁即可获得
在这里插入图片描述

版权声明:本文为CSDN博主「文某9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lllmeimei/article/details/118360947

生成海报
点赞 0

文某9

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

Arduino零基础实践——1

一:资源层 1.1硬件:Arduino各种开发板,我常用的是Nano,因为比较小而且便宜,某宝上20-30块。还有Arduino的拓展板卡,就是在后面连接外设

无刷直流(BLDC)电机的原理及正确的使用方法

当工程师想利用电气、电子的机器在现实世界中做些什么时,他们会思考怎样才能将电信号变为“力”?将电信号转换为力的就是传动器,即电机。可以将电机视作“将电气转换为机械的力的元件”。 最基本的电机是 “DC电机(有刷电机)”。在磁场中放置线

GP2Y0E03夏普红外测距传感器简单使用

夏普红外测距传感器规格书引脚如下 一共七个引脚,如果要改地址的话还需要用到第八个引脚(当时改地址试了半天,仔细一看数据手册还有第八个引脚),第八个引脚Vpp如下图所示 和GP