基于STM32的智能密码锁设计-带蓝牙解锁

 本设计的硬件构成:

STM32F103C8T6单片机最小系统板,LCD1602液晶显示模块,蜂鸣器电路,LED指示灯模块,继电器驱动电路(带5V电子锁接口),4x4矩阵键盘模块,蓝牙模块。

功能介绍:

1、采用4x4共16个按键输入、显示屏采用LCD1602显示、利用stm32单片机内部Flash存储设置的密码,可保证掉电保存,无需上电后重新设置,采用继电器模拟开锁(也可以自行接入5V电子锁);

2、密码为六位数字密码(0-9),更改密码时需要先验证初始密码。输入初始密码正确后,即可进入用户密码设置,当两次输入一致,密码更改成功;

3、当输入三次密码错误后,蜂鸣器声光报警提示,系统进入锁死状态,无法再开锁。

4、如过修改的密码忘记,可以进入管理员模式,重新设置密码;

5、采用蓝牙模块,可通过手机APP进行解锁;解锁成功后,也在APP上修改用户密码。

主要物料清单及型号:

显示屏:LCD1602;

单片机:STM32F103C8T6;

蓝牙模块:HC-05;

蜂鸣器:5V有源蜂鸣器;

部分程序源码:

int main(void)
{
  BEEP_Init();
  LED_Init();
  delay_init();  
  Lcd_GPIO_init();  //初始化lcd引脚
  Lcd_Init();      //初始化lcd屏幕
  KEY_Init();
  uart_init(9600);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  TIM2_Int_Init(4999,7199);
  TIM3_Int_Init(29,35999);
  TIM4_Int_Init(4999,7199);//每500ms计算一次速度的值,并显示
  LCD_Init();   //显示屏初始化

  TIM_Cmd(TIM3, ENABLE);
  STMFLASH_Read(ADDR_hum_up_1,(u16*)flash1,sizeof(flash1));
  setpass_flag=flash1[0];
  STMFLASH_Read(ADDR_hum_up_2,(u16*)flash2,sizeof(flash2));
  for(j=0;j<6;j++)
  {
    setpassword1[j]=flash2[j];
    
  }
  j=0;
  
  open_flag=1;
  pass_shuru=0;
  while(1)
  {
    mound();
    app_setpassword();
    if(rev_data=='P')
    {
      open_flag=2;
      relay=1;
      lock_state=UNLOCK;
      BEEP=0;//
      TIM_Cmd(TIM2, ENABLE);  //使能TIMx
      setopen_flag=2;
      rev_data=0;
    }
    
    if(down_flag==2)
    {
      BEEP=1;
    }
    if(down_flag==30)
    {
      down_flag=0;
      if(setpass_flag11==2)
      {
       TIM_Cmd(TIM2, DISABLE);
      }
      else
      {      
        open_flag=1;
        pass_shuru=0;
        BEEP=1;
        TIM_Cmd(TIM2, DISABLE);
        lock_state=LOCK;
        relay=0;
      }

    }
    
    if(errtime_flag==2)
    {
      BEEP=1;
    }
    if(errtime_flag==3)
    {
      BEEP=0;
    }
    if(errtime_flag==4)
    {
      BEEP=1;
    }
    if(errtime_flag==5)
    {
      BEEP=0;
    }

    if(errtime_flag==6)
    {
      open_flag=1;
      pass_shuru=0;
      errtime_flag=0;
      BEEP=1;
      TIM_Cmd(TIM4, DISABLE);
    }

  }

}

资料

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值