赞
踩
目录
项目成品图片:
哔哩哔哩视频链接:
(资料分享见文末)
基于STM32智能门禁锁系统。
功能如下:
- int main(void)
- {
- u16 set=0;
- u8 err=0;
- int key_num;
- int time1;
- int time2; //锁屏时间
- char arrow=0; //箭头位子
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(9600); //串口初始化为9600
- printf("串口功能正常\r\n");
- Button4_4_Init(); //初始化与按键连接的硬件接口
- OLED_Init(); //显示初始化
- Walkmotor_Init();
- BEEP_Init(); //蜂鸣器初始化
- usart2_init(usart2_baund); //初始化指纹模块
- PS_StaGPIO_Init();
- OLED_Clear();
- starting();//开机信息 logo
- err = RTC_Init(); //RTC初始化
- if(err)
- {
- OLED_Clear();
- Show_Str(12,13,128,20,"RTC CRY ERR!",12,0);
- OLED_Refresh_Gram();//更新显示
- delay_ms(3000);
- }
- SysPartInit(); //系统参数初始化
- while(1)
- {
- //锁屏界面
- MAIN:
- OLED_Clear();
- OLED_Show_Font(56,48,0);//显示锁图标
- while(1)
- {
- time1++; Display_Data();//时间显示:每1000ms更新一次显示数据
- if(DisFlag == 1)
- {
- DisFlag = 0;
- OLED_Fill(0,24,16,63,0);
- OLED_Refresh_Gram();//更新显示
- }
- if((time1%100)==1)
- {
- //MFRC522解锁
- time1=0;
- MFRC522_Initializtion();
- Error=MFRC522_lock();
- if(Error==0)
- {
- goto MENU;
- }
- else
- {
- OLED_Show_Font(56,48,0);//锁
- }
- //手机蓝牙解锁密码1
- Error=usart1_cherk((char*)sys.passwd1);
- if(Error==0)
- {
- OLED_Clear_NOupdate();
- Show_Str(12,13,128,20,"蓝牙密码1:正确",12,0);
- OLED_Refresh_Gram();//更新显示
- delay_ms(800);
- DisUnLock();
- goto MENU;
- }
- else {}
- //手机蓝牙解锁密码2
- Error=usart1_cherk((char*)sys.passwd2);
- if(Error==0)
- {
- sys.errCnt = 0;
- OLED_Clear_NOupdate();
- Show_Str(12,13,128,12,"蓝牙密码2:正确",12,0);
- OLED_Refresh_Gram();//更新显示
- delay_ms(800);
- DisUnLock();
- goto MENU;
- }
- else {}
- }
- //指纹解锁
- if(PS_Sta) //检测PS_Sta状态,如果有手指按下
- {
- while(PS_Sta)
- {
- Error=press_FR();//刷指纹
- if(Error==0)
- {
- goto MENU; //跳到解锁界面
- }
- else
- {
- OLED_Show_Font(56,48,0);//锁
- }
- }
- }
- //密码锁
- key_num=Button4_4_Scan(); //按键扫描
- if(key_num!=-1)
- {
- Error=password();//密码解锁函数
- if(Error==0)
- {
- goto MENU; //跳到解锁界面
- }
- else
- {
- OLED_Show_Font(56,48,0);//锁
- }
- }
- delay_ms(1);
- }
- /********************主界面**************************/
- MENU:
- OLED_Clear();
- MENUNOCLR:
- OLED_Fill(0,0,20,48,0);
- //主页菜单显示
- if(arrow<3)
- {
- Show_Str(5,arrow*16,128,16,"->",16,0);//显示箭头
- set=0;
- }
- else
- {
- Show_Str(5,(arrow-3)*16,128,16,"->",16,0);
- set=3;
- }
- Show_Str(25,0,128,16,setup[set],16,0);
- Show_Str(25,16,128,16,setup[set+1],16,0);
- Show_Str(25,32,128,16,setup[set+2],16,0);
- Show_Str(0,52,128,12,"上 下 确定",12,0);
- OLED_Refresh_Gram();//更新显示
- time2=0;
- while(1)
- {
- //超时锁屏
- time2++;
- if(time2>100 | key_num==4){
- OLED_Clear();
- DisLock();
- if(time2>100) beep_on_mode2();
- time2 =0;
- OLED_Clear();
- goto MAIN;
- }
- //手机蓝牙锁定
- if(memcmp(USART_RX_BUF,"lock",4)==0)
- {
- DisLock();
- goto MAIN;
- }
- //功能选项选择
- key_num=Button4_4_Scan();
- if(key_num)
- {
- if(key_num==13)
- {
- if(arrow>0)arrow--;
- goto MENUNOCLR;
- }
- if(key_num==15)
- {
- if(arrow<5)arrow++;
- goto MENUNOCLR;
- }
- if(key_num==16)
- {
- switch(arrow)
- {
- case 0:Add_FR(); break;//录指
- case 1:Del_FR(); break;//删指纹
- case 2:SetPassworld();break;//修改密码
- case 3:Set_Time(); break; //设置时间
- case 4:Add_Rfid(); break; //录入卡片
- case 5:Massige(); break; //显示信息
- }
- goto MENU;
- }
- }
- delay_ms(1);
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。