目录

一、项目功能概述

二、原理图

三、实物图

四、代码

五、资料清单

资料下载地址:基于STM32蓝牙密码锁

一、项目功能概述

主控用的STM32F407ZET6,通过蓝牙模块HC05使手机与STM32单片机进行蓝牙通信,通过手机输入密码控制密码锁开关。也可通过矩阵按键输入密码,当密码输入错误5次后,蜂鸣器报警,并且通过按键修改输入密码。

二、原理图

三、实物图

上电显示如下图

按任意按键进入主界面

手机app解锁界面

四、代码

主程序

int main(void)
{u16 set=0;int key_num;    int time1;int a=0,b=0;int time2;      //锁屏时间char arrow=0;  //箭头位子NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2uart_init(115200);delay_init(84);LED_Init();uart3_init(9600);// 蓝牙初始化Button4_4_Init();//矩阵按键初始化OLED_Init();            //oled初始化W25QXX_Init();             //初始化W25Q128exfuns_init();              //为fatfs相关变量申请内存  f_mount(fs[0],"0:",1);      //挂载SD卡 f_mount(fs[1],"1:",1);        //挂载FLASH.delay_ms(3000);OLED_Clear();FENG=0;STMFLASH_Read(0X08020004,(u32*)Pwd,2);    //读取密码1STMFLASH_Read(0X08090004,(u32*)Pwd2,2); //读取密码2STMFLASH_Read(0X080f0004,(u32*)cardid,1); //读取卡号1strcpy(Pwd,"123456");while(1){MAIN:OLED_Show_Font(56,48,0);//显示锁图标while(1){time1++;if((time1%5000)==0)//每200ms检测一次卡片,蓝牙数据{time1=0;//手机蓝牙解锁密码1Error=usart3_cherk((char*)Pwd);         if(Error==0){OLED_Clear();Show_Str(20,10,128,24,"ok!",24,0);delay_ms(1000);goto MENU;    }else OLED_Show_Font(56,48,0);//锁//手机蓝牙解锁密码2Error=usart3_cherk((char*)Pwd2);if(Error==0){OLED_Clear();Show_Str(20,10,128,24,"ok!",24,0);delay_ms(1000);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);//锁}}
//主界面
MENU://主页菜单显示FENG=0;OLED_Clear();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,"down  up  NO sure",12,0);time2=0;while(1){//超时锁屏time2++;if(time2>50000 | key_num==15){  time2 =0; OLED_Clear();Show_Str(30,20,128,16,"Timeout lock screen",16,0);delay_ms(500);OLED_Show_Font(56,48,0);//锁delay_ms(1000);OLED_Clear();goto MAIN;}//功能选项选择key_num=Button4_4_Scan();   if(key_num){if(key_num==13){if(arrow>0)arrow--;goto MENU;}if(key_num==14){if(arrow<5)arrow++;goto MENU;}if(key_num==16){switch(arrow){case 2:SetPassworld();break;//修改密码}goto MENU;}      }delay_ms(1);}  }
}

密码检测

int password(void)
{int  key_num=0,i=0,satus=0;u16 num=0,num2=0,time3=0;u8 pwd[11]="          ";u8 hidepwd[11]="          ";OLED_Clear();//清屏Show_Str(5,0,128,16,"MIMA: ",16,0);Show_Str(10,16,128,12," 1   2   3   4  ",12,0);Show_Str(10,28,128,12," 5   6   7   8  ",12,0);Show_Str(10,40,128,12," 9   0      Dis ",12,0);Show_Str(10,52,128,12,"Del Clr Bck Ok  ",12,0);while(1){key_num=Button4_4_Scan();  if(key_num){    time3=0;if(key_num>=1 && key_num<10 && i>=0 && i<10){  //‘1-9’键pwd[i]=key_num+0x30;hidepwd[i]='*';i++;}   if(key_num==10 && i>=0 && i<10){       //‘0’键pwd[i]=0x30;hidepwd[i]='*';i++;}if(key_num==12){//显示  satus=!satus;}if(key_num==13 && i>0){pwd[--i]=' ';  //‘del’键hidepwd[i]=' '; }if(key_num==14){while(i--){pwd[i]=' ';  //‘清空’键hidepwd[i]=' ';  //‘清空’键}i=0;}if(key_num==15){//返回OLED_Clear();//清屏delay_ms(500);return -1;}if(key_num==16)break;  //‘Enter’键}if(satus==0)OLED_ShowString(53,0,hidepwd,12);else OLED_ShowString(53,0,pwd,12);time3++;if(time3%1000==0){OLED_Clear();//清屏return -1;}} for(i=0; i<10; i++){   //验证虚伪密码if(pwd[i]==Pwd[num])num++;else num=0;if(num==6)break;}for(i=0; i<10; i++){   //验证密码if(pwd[i]==Pwd2[num2])num2++;else num2=0;if(num2==6)break;}if(num==6 | num2==6){OLED_Clear();//清屏Show_Str(20,10,128,24,"OK!",24,0);delay_ms(1000);OLED_Show_Font(56,48,1);//开锁        delay_ms(1500);OLED_Clear();//清屏return 0;}else{a++;if(a==6){FENG=1;}OLED_Clear();//清屏Show_Str(20,20,128,16,"Error",16,0);delay_ms(1500);OLED_Clear();//清屏return -1;}
}

五、资料清单

基于STM32的蓝牙密码锁相关推荐

  1. 基于STM32单片机的密码锁(Proteus仿真+程序+报告)

    3-基于STM32单片机的密码锁 功能描述如下: 由STM32F103单片机最小系统+ 4*4矩阵键盘+LCD1602液晶显示+蜂鸣器+继电器模块: 1.采用STM32F103为主控芯片. 2.通过4 ...

  2. 基于51单片机蓝牙密码锁

    目录 一.项目需求 二.原理图 三.设计思路 四.实物 五.代码 资料下载地址:基于51单片机蓝牙密码锁-单片机文档类资源-CSDN下载 一.项目需求 1.采用DS1302时钟模块,通过该模块可检测当 ...

  3. 基于STM32的蓝牙小车(来自LLC团队)

    基于STM32的蓝牙小车(来自LLC团队) 引言 1.系统概述 1.1.设计任务 2 .方案设计与论证 2.1.芯片选择方案 2.2.系统概述: 2.3设计要求: 2.4系统总体设计思路 2.5.各功 ...

  4. 毕业设计 基于Stm32的蓝牙便携手环 - 物联网 单片机

    基于STM32的蓝牙手环 本次时基于STM32单片机的简易蓝牙手环 手指放在心率检测处,心率传感器就能实时的检测使用者的心率的变化,并在显示屏上进行显示: 通过DS18B20检测体温,体温数值也会在显 ...

  5. 基于STM32单片机的密码锁(Proteus仿真、程序)

    基于STM32单片机的密码锁 功能描述: 由STM32F103单片机最小系统+ 4*4矩阵键盘+LCD1602液晶显示+蜂鸣器+继电器模块 1.采用STM32F103为主控芯片 2.通过4*4矩阵键盘 ...

  6. 物联网毕设(基于STM32的蓝牙检测心率+步数+手机APP)

    目录 流程图 开发所需平台 keil5+Android studio 需要的元器件 线路连接图 stm32F103C8T6 蓝牙模块 心率模块(MAX30102) 震动开关(SW-18015P) 手机 ...

  7. 基于stm32的c语言程序设计,基于stm32的电子密码锁设计 main.c 代码奉上,做课设的直接用...

    电子密码锁设计 **功能:支持3~20位的密码设置,初始密码为123456:若要重设密码,需先输入正确密码开锁. ** 正常显示情况下,按下确认键上锁:按下密码键,开始输入密码. **接线:PE[0. ...

  8. 基于STM32的简易密码锁

    前言: 朋友做毕设需要用到密码锁这个功能,帮忙设计了一个简单的.因为自己也忙于毕设,所以很多功能也没有完善. 有兴趣的朋友可以看下这个,也能实现扫码开锁功能 扫码点灯 实现功能: 1.密码保存到STM ...

  9. 基于stm32的蓝牙遥控智能小车_基于51用蓝牙控制小车(提高篇)

    一,焊接51最小系统 一辆小车的基本功能就是让它能动起来,能通过手机蓝牙进行遥控,所以就需要用到L298N电机驱动模块,和HC-06蓝牙模块.下面就简单介绍一下这两个模块. 三,制作电机驱动模块 电机 ...

最新文章

  1. 编辑模式下,控制对象移动
  2. Spring Boot 集成 JUnit5,更优雅单元测试!
  3. saspython知乎_评分模型效用度量指标如何解析?(含Python、R、SAS代码)
  4. spark在服务器运行示例_创建示例HTTPS服务器以获取乐趣和收益
  5. mybatis枚举自动转换(通用转换处理器实现)
  6. sql中in和exist语句的区别?
  7. syslog-ng按源ip保存记录
  8. H264参数SPS(序列参数集)和PPS(图像参数集)说明
  9. WinForm 下实现一个自动关闭的MessageBox
  10. windows核心编程第二章阅读
  11. 数据库系统的三级模式结构
  12. 基于Android的个人时间管理设计与开发
  13. 安卓4.0后新控件TextureView解决SurfaceView在修改默认屏幕方向后(硬件导致)视频方向无法翻转的问题
  14. steam linux 安装目录,「Linux」- 安装 Steam 客户端 @20210219
  15. 【NBA之路】启蒙—to—詹皇—to—保罗乔治
  16. 【编译原理】第8讲 语法制导翻译(习题答案)——MOOC哈尔滨工业大学陈鄞
  17. PHP开发环境的搭建
  18. 国外LEAD联盟赚钱,日付款联盟推荐
  19. PPT怎么插入图案填充效果
  20. 你会给父母买保险吗?

热门文章

  1. 2022-2028全球与中国纠正与预防措施软件市场现状及未来发展趋势
  2. English Learning - Day29 作业打卡 2023.1.5 周四
  3. 如何查看电脑CPU性能以及提升电脑最大性能
  4. 牌上的花色-MUD中的玩家
  5. 基于检测和多目标跟踪的客流统计功能小结
  6. 《苏幕遮·怀旧》 范仲淹
  7. 在线教育平台的开发与设计(Python+Django+MySQL)
  8. 【Shader】网格 Mesh
  9. 微型计算机显示性能最好的是,【黑龙江省中小学教师信息技术考试(五)】黑龙江省中小学正高级教师...
  10. 关于springboot整合Jcasbin权限校验说明