一.硬件方案
基于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