一.硬件方案
基于stm32单片机的智能门禁系统设计的整体电路主要由采用STM32F103单片机,4*4矩阵按键电路,电子锁继电器驱动电路,开锁LED指示灯,LCD1602显示屏电路,蜂鸣器报警电路,RFID感应电路,指纹识别模块;原理图如图:

PCB图如下:
 
二.设计功能
1.采用矩阵按键、指纹或者RFID输入、1602液晶显示、继电器模拟开锁、发光二极管为开锁指示灯,继电器是可以外接电锁的。
 2.有报警、锁定键盘功能,如果密码输入错误3次,系统会直接锁住键盘并有蜂鸣器声音报警提示。
 3.可以设置修改密码(6位数的密码)(0-9之间任意数字),修改密码之前必须输入原始密码,在输入新密码时要输入两次确认并相同才可以修改成功,否则修改不成功,防止误操作。
 4.密码支持掉电保存功能,保存在STM32内部FLASH,可以随时修改密码,密码输入过程中,可按清除键删除已输入的数字。
 5.可注册或者注销开锁的IC卡或者指纹。
三.软件设计
主程序源码
int main(void)
{	
		delay_init();	    //延时函数初始化	  
	  NVIC_Configuration();
		KEY_GPIO_Init();    //按键初始化
		BEEP_AND_RELAY_GPIO_Init();//蜂鸣器继电器初始化
		delay_ms(500);       //上电瞬间加入一定延时在初始化
	  DataInit();
		LCD_Init();         //屏幕初始化
	  LCD_Write_String(0,0,"   Loading...   ");
	  LCD_Write_String(0,1,"                ");
//	  CHECK_NEW_MCU();//单片机校验
	  PS_StaGPIO_Init();
	  RC522_Init();
		PcdReset (); //复位RC522 
		M500PcdConfigISOType ( 'A' );//设置工作方式	
	  uart1_Init(57600);   //串口初始化
	  TIM2_Init(999,719);    //以100Hz计数,定时10ms
		//Tout = ((arr+1)*(psc+1))/Tclk ;  
		//Tclk:定时器输入频率(单位MHZ)
		//Tout:定时器溢出时间(单位us)
		while(1)
		{  
          if(InitDisplay==1)
					{
							InitDisplay = 0;
						  BEEP = 0;
						  DataInit();
						  CorrectCont=0;									//正确计数器清零
						  RELAY = 0; //继电器关闭
				    	LCD_Write_String(0,0,"===Coded Lock===");
						  LCD_Write_String(0,1,"password:       ");
							LCD_Write_Com(0x80+0x40+9);
							LCD_Write_Com(0x0F);//光标闪烁
					}	
					finger_ctrl();//指纹处理函数
					if(Delete == 0&&Register==0)
					COMPER_ID_MODE();	
					ADD_ID_MODE();	
					DEL_ID_MODE();					
					//获取按键
					keycode = KEYSCAN();
					//有效键值0-15
					if ((keycode<16)&&(FlagKeyPress==0))
					{
							FlagKeyPress = 1;
							KeyPress(keycode);
							FlagKeyPress = 0;
					}
					delay_ms(10);
		}
		
}
 
资料链接:https://pan.baidu.com/s/1uAV37SRnQtrCt_lAIKpe1w?pwd=ch93
 提取码:ch93



















