博主主页:单片机辅导设计
博主简介:专注单片机技术领域和毕业设计项目。
主要内容:毕业设计、简历模板、学习资料、技术咨询。
文章目录
主要介绍
在基于单片机的蓝牙无线密码锁设计中,将蓝牙技术作为本次设计的核心内容,通过运用STC89C52单片机,加上LCD液晶显示器模块,以及多种类的相关零件,可以提供多种较为便利的设定,成功帮助用户解决开锁以及闭锁等诸多方面的内容,且将整个过程科学合理化,最大程度地保障人们的安全。
经实验验证,相比于传统机械锁,蓝牙无线密码锁具有安全便捷成本低等优点,可普遍应用于家庭、宾馆、办公大楼、银行等地方。这样安全便捷的开锁方式给人们的日常生活和工作提供了保障,保护了人员和财产的安全,大大提高了安全系数。
关键词:单片机;蓝牙模块;LCD1602;密码锁
一、系统总体设计
为了实现远程开锁,保护人们财产和信息安全,本文设计了一个具有报警、远程控制、修改密码、虚假密码等功能于一体的基于单片机的蓝牙无线密码锁系统,以此来对锁的安全性进行改善。
1.1 系统设计要求
(1)采用AT24C02芯片,用于储存设置的密码,并具有掉电之后保存密码功能;
(2)用户可以自行设定对应的密码,想要更换成新密码,必须要重新输入原有密码两次才可以通过系统的审核;
(3)密码输入错误3次,蜂鸣器响,报警锁死,屏幕显示ERROR;
(4)输入正确的密码继电器吸合,开锁指示灯亮,屏幕显示OPEN;
(5) 4×4矩阵键盘包括0~9的数字键和A~D的功能键以及*、#按键;
(6)液晶屏幕采用了新型的光学感应系统,能够成功地对应天气进行相应的屏幕转变,从而最大程度的节约电能;
(7)可以使用虚假密码,开锁时可以随意输入虚假密码掩人耳目,防止他人窃取密码;
(8)采用蓝牙模块,可以实现远程开锁。
1.2 系统设计思路
在总体方案的选定上,最初考虑了两种方案,一种是利用数字电路来实现密码锁的功能,配合其他主控芯片,结合蓝牙模块来实现预期的功能,另一种是使用单片机作为主控芯片[4],利用其可编程性,来实现密码锁功能,同时兼顾了蓝牙模块的使用。
方案一:用数字电路控制系统
运用触发器构成的数字逻辑电路作为密码锁的核心控制,当用户想要避免自己的信息泄露时,只需要按下对应的干扰按键,就能够成功的终止当前的密码输入行为,而且如果该用户在进行密码输入时,使用了过长的时间那么系统会判定此次输入无效并发出警报,通过这种方式能够使整个系统的操作较为便捷,易操作,缺点就是灵活性太差,容易给用户带来不必要的麻烦,并且在加入蓝牙模块时,还要额外加入主控芯片,实行起来复杂且成本高,使用效果也不是很好。因此,这种方案没有得到实际的应用。
方案二:用单片机控制系统
运用单片机作为主要控制系统,单片机是一种虽然小但很完整的芯片,应用在集成电路中,也可以称之为微型计算机系统。它很稳定并且能够对接收的数据进行实时反应,常运用在工业环境中。再外接液晶显示器、蓝牙模块、矩阵键盘、存储芯片等器件,单片机通过I/O口控制外接设备。用户可以有两种方式输入密码,可以使用矩阵键盘输入密码也可以使用蓝牙APP输入密码。如果成功的输入正确的密码,继电器就会吸合,开锁指示灯亮,屏幕会显示为打开状态。如果并没有输入正确的密码,那么蜂鸣器会发出对应的警报。如果输入三次错误内容,那么蜂器将会一直保持警报状态,整个体统进入锁死状态。
通过两种方案相比较,方案二比较好。其最大的优点就是灵活度高、性能高、价格低廉,所以本设计采用单片机控制系统的方案。
二、系统硬件设计
2.1 设计原理
本设计的主要硬件由单片机[5]、显示模块、驱动模块等硬件组成。在整个系统运转时,单片机会依照用户实际输入的对应内容,在此过程中,单片机判断用户输入密码的正确性。如果成功的输入正确的密码,继电器就会吸合,开锁指示灯亮,屏幕会显示为打开状态。如果并没有输入正确的密码,那么蜂鸣器会发出对应的警报。如果多次回答错误内容,系统会根据这一情况,判定为他人盗用,整个体统进入锁死状态。蓝牙无线密码锁硬件原理框图如图2.1所示。
图2.1 蓝牙无线密码锁硬件原理框图
2.2 主控模块
单片机在本次毕业设计中起到了至关重要的角色,它是整个设计方案的核心。本项目拟采用单片机作为主要控制系统,拟采用STC89C52单片机和STM32单片机,两种单片机对比如下所示。
方案一:STC89C52单片机
STC89C52单片机拥有着诸多方面的优点,例如运转速度极快,而且对能源的需求不高,可以有效抵抗外部的干扰等诸多方面,而且其指令代码能够与传统的五一单片机进行很好的衔接。STC89C52单片机内部存在完整操作处理器,处理的对象单位并非字或者字节,而是位。采用51Core内核,拥有64KB空间。同时由于自带的双地址区间,使得STC89C52单片机使用方式更加多样化。
方案二:STM32单片机
STM32单片机主要服务于Cortex-M内核,含有1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,但由于性能优异,使用起来比STC89C52单片机复杂的多,因此本次设计不准备使用STM32单片机。
通过两种方案相比较,方案一比较好。其要求低、功能齐全,在较小的范围内可以实现全方面的功能,所以本设计选择STC89C52单片机作为主控芯片。
STC89C52单片机在进入工作后能够一直保持稳定的工作状态,对于电压的需求需要在5.5V到2.0V之间,进入工作状态后,它的工作频率始终保持在48Hz以下,对于STC89C52单片机而言,它拥有以下几个特征:首先它拥有着把给自己的内部程序储存空间,其次它拥有着三个定时器帮助其工作,最后它拥有着较强的抗干扰性,能够成功地显示当前的工作状态。STC89C52单片机原理图如图2.2所示。
图2.2 STC89C52单片机原理图
本设计运用最少的零部件组成的单片机可以工作的系统,可以被称为最小系统[6]。对于STC89C52单片机而言,最小系统必须要拥有单片机、晶振电路、复位电路。晶振电路和复位电路是单片机运行的必要条件,并且能使单片机一直处于正常工作状态。通常情况下,最小系统往往是整个系统中最重要的部分。通过对其进行相应的操作以及改善,能够帮助我们完成许多复杂的工作。单片机最小系统原理图如图2.3所示。
图2.3 单片机最小系统原理图
三、系统软件设计
3.3 程序流程图
本次设计的总体软件较为简单,主要分为主程序和子程序以及对密码进行相关设定的程序。首先,初始化每个模块,检测是否有按键按下,如果按下,确定哪个按键被按下,然后判断是否调用相应的子程序。主程序流程图如图3.2所示。
图3.2 主程序流程图
实物
原理图
程序
//包含头文件
#include <REG52.h>
#include<intrins.h>
//宏定义
#define LCM_Data P0 //将P0口定义为LCM_Data
#define uchar unsigned char
#define uint unsigned int
#define w 6 //定义密码位数
//1602的控制脚
sbit lcd1602_rs=P2^5;
sbit lcd1602_rw=P2^6;
sbit lcd1602_en=P2^7;
sbit Scl=P3^4; //24C02串行时钟
sbit Sda=P3^5; //24C02串行数据
sbit ALAM = P2^1; //报警
sbit KEY = P3^6; //开锁
bit operation=0; //操作标志位
bit pass=0; //密码正确标志
bit ReInputEn=0; //重置输入允许标志
bit s3_keydown=0; //3秒按键标志位
bit key_disable=0; //锁定键盘标志
bit flag_REC =0; //串口接受标志位
unsigned char buff[5]=0;
unsigned char countt0,second; //t0中断计数器,秒计数器
void Delay5Ms(void); //声明延时函数
unsigned char code a[]={
0xFE,0xFD,0xFB,0xF7}; //控盘扫描控制表
//液晶显示数据数组
unsigned char code start_line[] = {
"password: "};
unsigned char code name[] = {
"===Coded Lock==="}; //显示名称
unsigned char code Correct[] = {