首页 > 其他分享 >22.基于51单片机的蓝牙密码锁设计(实物)

22.基于51单片机的蓝牙密码锁设计(实物)

时间:2024-12-19 21:29:20浏览次数:5  
标签:密码锁 函数 22 重置 51 密码 键值 按键 password

22.基于51单片机的蓝牙密码锁设计(实物)

通过百度网盘分享的文件:资料详解
链接:https://pan.baidu.com/s/1zPXLcLmqZAljkgMeU2RT7w?pwd=597l 
提取码:597l 

本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成蓝牙密码锁的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。输入由五部分组成,第一部分是DS1302时钟模块,通过该模块可检测当前的时间;第二部分是储存模块,采用AT24C02芯片,存储按键输入的信息;第三部分是DS18B20温度检测模块,通过该模块可检测当前的温度;第四部分是4*4矩阵键盘,按键主要功能有一键关门、显示时间、重新设置密码、取消键、确认键、输入密码;第五部分是供电电路,给整个系统进行供电。输出由三部分组成,第一部分是LCD1602显示模块, 通过该模块可以显示门的开关状态、输入的密码显示、重置密码时的显示等;第二部分是蓝牙模块,通过该模块可连接手机;第三部分是蜂鸣器,当键盘锁定且有按键按下时,蜂鸣器作为按键音提醒。

4 系统程序设计

4.1 编程软件介绍

本设计所用到的编程软件为Keil5,其界面如图4-1所示:

图4-1 Keil5开发界面

本设计所使用的编程环境是Keil5,相对于其他软件编程环境,Keil5更加的轻便快捷,操作更加的简单,深受广大嵌入式软件开发者的喜爱。Keil5支持多种芯片,包括51单片机、STM32、HC32、NXP等,生成的HEX文件,可通过烧录器直接烧录到单片机中,非常方便。另外,Keil5编译有三种,一种是单编,一种是部分编译,还有一种是全部编译,这样给开发人员更多的选择,并且编译的结果,显示在界面的最下方,供开发者查找错误。

4.2 主程序流程设计

系统的主流程图如图4-2所示;在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先将密码从存储模块中读出来;然后进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,比如一键关门、显示时间、重新设置密码、取消键、确认键、输入密码等;紧接着进入第二个函数重置密码函数,该函数主要判断当前是否是重置密码界面,若是,再判断两次输入的新密码是否相同,若相同,则密码重置成功,若不相同,则密码重置失败;也可以通过蓝牙控制;最后,通过一个延时函数和计数公式,限制各函数扫描时间。其部分主程序源码如下所示:

void main()

{

      Timer0Init();

      Uart_Init();

      Ds1302_Init();

      Lcd1602_Init();                                                        //LCD1602初始化

      Delay_function(50);                                                   //延时50ms

      lcd1602_clean();                                                         //清屏

      Delay_function(50);                                                   //延时50ms

      Init_IIC();                                  //总线初始化,拉高释放总线

      Delay_function(50);                                                   //延时50ms

      //写过一次后关闭,无需重复写初值

//    Write_init_EEPROM();                      //写入初始密码123456到E2PROM

//    ds1302_write_time();

      lcd1602_display_str(1,0,"===Coded Lock===");  //初始化界面

      lcd1602_display_str(2,0,"Password:");

      while(1)

      {

(部分代码省略)

……

      }

}

图4-2 程序总体流程图

4.3 按键函数流程设计

按键函数子流程图如图4-3所示;按键设置函数首先通过按键扫描函数,获取按键按下的键值,通过不同的键值,进行相应变量的改变。如果键盘锁定时,三分钟内按下按键,蜂鸣器报警。没有锁定键盘时,如果获取的键值为“A”,则一键关门。如果获取的键值为“B”,则显示时间;如果获取的键值为“D”,则重新设置密码;如果获取的键值为“*”,则为取消键;如果获取的键值为“#”,则进确认键;如果获取的键值为0-9的数字,则为输入密码,只保存前6个数字。其部分程序源码如下所示

void Key_function(void)

{

      uchar i;

      key_bianma = matrix_keyboard_scan();                   //读按键的位置码

      if(key_bianma != 0)                                                   //当有按键按下时

      {

             if(flag_key_en == 0)                                    //按键使能标志为0时,锁3分钟

             {

                    BEEP = 0;

                    Delay_function(50);

                    BEEP = 1;

             }

             else

(部分代码省略)

……

}

}

}

图4-3 按键函数子流程图

4.4 确认函数流程设计

确认函数子流程如图4-4所示;首先确认是否在设置密码,若不在,则判断当前门的状态是否为关闭,若是关闭状态,则将输入的密码于与储存密码对比,若正确,则打开门,若错误,则不开门,显示密码错误;若当前不在设置密码且门的状态为打开,显示屏显示打开状态;若此时处于设置密码状态,则输入密码并与管理员密码对比,若对比成功,则可设置密码,若对比不成功,则不可设置密码。其部分程序源码如下所示:

void Ensure_function(void)

{

      lcd1602_display_str(1,0,"                ");

      lcd1602_display_str(2,0,"                ");

  //不在设置密码时,并且门是关着在执行如下函数

      if(flag_reset_password == 0 && flag_stat_door == 0)

      {

             //键入密码进行比对将输入密码与存储的密码对比,正确则开门

             if((password[0] == password_input[0]) && (password[1] == password_input[1]) &&

                     (password[2] == password_input[2]) && (password[3] == password_input[3]) &&

                     (password[4] == password_input[4]) && (password[5] == password_input[5]))

             {    

                    lcd1602_display_str(1,0,"===Coded Lock===");

                    lcd1602_display_str(2,0,"   Door Open    ");

(部分代码省略)

……

}

}

图4-4 显示函数子流程图

4.5重置密码函数流程设计

重置密码函数子流程如下图4-5所示,首先判断是否在重置密码状态,若是,则显示屏显示重置密码页面并输入旧密码;然后输入两次新密码并对比两次输入的密码,若相同,则密码重置成功,若不相同,则密码重置失败。软件部分程序源码如下所示:

void Reset_password_function(void)

{

      uchar i;

      if(flag_reset_password == 1 && flag_reset_password_num == 0)

      {

             lcd1602_display_str(1,0,"=Reset Password=");

             lcd1602_display_str(2,0,"adm_Pswd:");

(部分代码省略)

……

}

}

图4-5 处理函数子流程图

 

 

标签:密码锁,函数,22,重置,51,密码,键值,按键,password
From: https://blog.csdn.net/2402_89220103/article/details/144595374

相关文章

  • 20222319 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容(1)掌握基于html、php等编程工具实现简单前后端的编写(2)理解apache在网站展示中的意义,认识到tomcat等web应用服务器工具的使用(3)学习到以mysql为代表的数据库在网页项目中的具体使用(4)通过webgoat、DWVA、pikachu等平台理解sql注入、xss、csrf等攻击的原......
  • 225Python大学生社团管理系统(Pycharm Flask Django Vue mysql)
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍对于网站的前台设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要......
  • 【小白51单片机专用教程】protues仿真AT89C51入门
    课程特点无需开发板0基础教学软件硬件双修辅助入门        本课程面对纯小白,因此会对各个新出现的知识点在实例基础上进行详细讲解,有相关知识的可以直接跳过。课程涉及protues基本操作、原理图设计、数电模电、kell使用、C语言基本内容,所有涉及知识都将建立在实例的......
  • ITC228 - Programming in Java
    SubjectOutlineITC228-ProgramminginJavaCharlesSturtUniversity-TEQSAProviderIdentification:PRV12018(AustralianUniversity).CRICOSProvider:00005FPage2of28thatyouseekoursupportandguidanceifyouarehavinganydifficultieswiththi......
  • 20222307 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝......
  • 20222402 2024-2025-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容Web前端:负责开发用户所看到的内容。(1)HTML(2)JavaScript(Js)(3)CSS(4)Web前端框架Web后端:主要使用各种库,API,Web服务等技术搭建后端应用体系,确保各种Web服务接口之间的正确通信。比如处理前端用户发起的请求,各种业务逻辑的操作,最后与数据......
  • Windows Server 2022 集群服务器技术提供了一种可靠的方式来提高业务连续性、增强系统
    WindowsServer2022集群服务器简介什么是WindowsServer2022集群服务器?WindowsServer2022集群服务器是一种由多个物理或虚拟服务器组成的系统,这些服务器通过网络连接形成一个群集(Cluster)。群集中的服务器协同工作,共同提供高可用性、负载均衡、灾难恢复等功能。WindowsS......
  • 20222404 2024-2025-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝......
  • Linux安装sql server2022的流程步骤
    安装必要的工具sudoyuminstall-ywgetcurl下载并导入MicrosoftGPG密钥sudocurl-shttps://packages.microsoft.com/keys/microsoft.asc|sudorpm--import-注册SQLServer2022存储库sudocurl-o/etc/yum.repos.d/mssql-server-2022.repohttps://packages.m......
  • 洛谷P2240部分背包问题
    2024-12-18-第39篇洛谷贪心算法题单-贪心算法-学习笔记作者(Author):郑龙浩/仟濹(CSND账号名)P2240【深基12.例1】部分背包问题题目描述阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有N......