序
🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机的蓝牙无线密码锁的设计
1 系统硬件设计
1.1 设计原理
本设计的主要硬件由单片机[5]、显示模块、驱动模块等硬件组成。在整个系统运转时,单片机会依照用户实际输入的对应内容,在此过程中,单片机判断用户输入密码的正确性。如果成功的输入正确的密码,继电器就会吸合,开锁指示灯亮,屏幕会显示为打开状态。如果并没有输入正确的密码,那么蜂鸣器会发出对应的警报。如果多次回答错误内容,系统会根据这一情况,判定为他人盗用,整个体统进入锁死状态。蓝牙无线密码锁硬件原理框图如图1.1所示。
图1.1 蓝牙无线密码锁硬件原理框图
1.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单片机原理图如图1.2所示。
图1.2 STC89C52单片机原理图
本设计运用最少的零部件组成的单片机可以工作的系统,可以被称为最小系统[6]。对于STC89C52单片机而言,最小系统必须要拥有单片机、晶振电路、复位电路。晶振电路和复位电路是单片机运行的必要条件,并且能使单片机一直处于正常工作状态。通常情况下,最小系统往往是整个系统中最重要的部分。通过对其进行相应的操作以及改善,能够帮助我们完成许多复杂的工作。单片机最小系统原理图如图1.3所示。
图1.3 单片机最小系统原理图
(1)晶振电路
晶振电路是晶体振荡器的简写,它能够在实际的系统工作之中提供信号,单片机可以依赖该信号发出对应的指令,从而进行恰当的命令。晶振在整个系统之中拥有着极为重要的意义,它能够成功的保证单片机能够正常工作,振荡频率范围通常在1.2~12MHz之间。晶振电路原理图如图1.4所示。
图1.4 STC89C52晶振电路原理图
(2)复位电路
复位电路能够成功地帮助单片机进行复位工作,它对于单片机的作用,就像计算机的重启按键。一旦单片机陷入了混乱之中,没有办法进入下一步的工作流程,那么在此时我们可以选择开启复位电路,从而帮助单片机恢复到原有的设定之中,从而重新开始程序的设定。本次单片机的复位工作必须要在第9引脚接高电平持续2μs才可以实现。复位电路原理图如图1.5所示。
图1.5 STC89C52复位电路原理图
1.3 芯片模块
AT24C02芯片是一个2K位的串行CMOS EEPROM存储设备,对比于传统的芯片,它拥有较大存储空间,目前使用的是I2C技术,拥有较高的可使用性。现今我们使用的CMOS技术,可以最大成度的减少能源的耗损,AT24C02芯片具有16字节的页写缓冲器,并且于I2C接口处进行工作,可以提供极强的保护能力[7]。AT24C02芯片已经在许多实验中出现过,它的主要功能是存储一些断电后需要保存的数据,上一次运行中保存的数据可以在下一次运行中调出。AT24C02芯片管脚描述和可靠参数见表1.1和表1.2。
表1.1 AT24C02芯片管脚描述
管脚名称 | 功能 |
A0、A1、A2 | 器件地址选择 |
SDA | 串行数据/地址 |
SCL | 串行时钟 |
WP | 写保护 |
Vcc | +1.8V~6.0V工作电压 |
Vss | 地 |
表1.2 AT24C02芯片可靠参数
符号 | 参数 | 最小 | 单位 | 参考测试模式 |
NEND | 耐久性 | 1,000,000 | 周期/字节 | MIL-STD-883,测试方法1033 |
TDR | 数据保存时间 | 100 | 年 | MIL-STD-883,测试方法1008 |
VZAP | ESD | 2000 | V | MIL-STD-883,测试方法3015 |
ILTH | 上拉电流 | 100 | mA | JEDEC标准17 |
通常情况下,芯片用来传输信号的零件是通过发送器的方式,与之相结合的所有设备都可以成功通过这种方式来接收其发送的对应信号,而整个信号传输的工作都可以在总设备上进行相应的控制,从而最大程度的解决问题,可以在主设备上对开关信号进行相应的控制,并且在主设备以及辅助设备上都能够进行对应的操作工作。AT24C02芯片原理图如图1.6所示。
图1.6 AT24C02芯片原理图
1.4 矩阵键盘模块
接入数字键盘作用是用来输入数字密码和进行基本操作,本作品采用的是矩阵键盘模块。因为要实现数字密码的输入,所以在按键的设计上,首先要有0~9这十个数字按键,其次为了控制继电器的闭合和流程中确认的操作,还要有*和#两个按键,而且因为蓝牙模块的加入,与之对应的操作也随之变多,所以还要有ABCD四个按键,AB键备用,C键删除密码,D键重置密码。
矩阵键盘作为本次试验中的重要硬件,它本身是由两条行线以及两条列线共同组成的键盘。在两条线的彼此交接处都拥有对应的按钮,因此在整个系统之中的中按钮为4×4个,这样的排列方式能够很好地将端口的利用率达到最高水准,因此能够在实际的设计之中将端口的数量降低为最小值,一般情况下我们都可以将按钮排列成一定的形状。在矩阵键盘中,每条线并不是绝对会用垂直的方法互相连接,而是通过一个按钮进行相应的连接。单片机共拥有着8个端口,在这种情况下能形成16个按钮,这比上面提到的,要整整多出一倍,而多出的按钮也使得它的功能更为强大。如果添加额外的行,则可以形成20个按键的键盘,但是独立按键连接只能再有一个按键。可以看出,当所需按键的数量相对较大时,使用矩阵方法连接键盘是非常合理的[8]。矩阵键盘原理图如图1.7所示。
图1.7 矩阵键盘原理图
1.5 液晶显示模块
显示模块主要功能是显示英文以及特殊符号,显示模块能够在实际工作中同时显示两行字符,针对显示模块我拟设计了两种方案,对比如下。
方案一:LED数码管
LED数码管侧重于对数字的显示,当采用动态扫描法与单片机连接时,虽然占用的单片机口线少,电路简单,性价比较高。但由于本设计显示数据较多,采用数码管不能完全实现显示功能,故未采纳本方案。
方案二:LCD1602液晶显示器
LCD1602液晶显示器可由单片机驱动,它可以显示英文以及特殊符号等信息,整体结构美观,同时LCD1602液晶显示器的编写程序简单,价格便宜,重量较轻而且体积也偏小,能够成功地降低能源的耗损。
经比较发现,LCD1602液晶显示器成本低、易开发且能大量显示字符,符合本设计要求,故选用方案二。LCD1602液晶显示器实物图如图1.8所示。
图1.8 LCD1602液晶显示器实物图
液晶显示的原理是运用了液晶这一物质在其受到对应电压之后,各粒子之间会产生对应的工作,从而显示对应的图形,这种图形只有在液晶被通电之后,才可以被显现,相较于传统的显示器,液晶显示器普遍拥有着较薄的厚度,而且还拥有着较为丰富的图案显示,目前已被运用于各个领域之中,例如家庭电视以及超薄计算机。在市场上拥有着诸多类型的液晶显示器,我们可以通过其显示方法将它分为许多种类,尤其类型的判断还可以根据色彩显示以及灰度等方面进行甄别。LCD1602液晶显示器原理图如图1.9所示。
图1.9 LCD1602液晶显示器原理图
液晶显示屏上显示字符通常都拥有着极为复杂的情况,因为字符之间是由不同的矩阵共同排列进行组成,因此在实际工作之中,我们需要对字节进行相应的确认,将并不显示的字节设定为零,将可以显示的,直接显示为1,那么我们就可以在实际工作中对直接是否能够显示进行实际的检查,如果对应区域出现了问题,我们可以按照排列号和实际列数来对其直接进行相应的查找[9]。LCD1602引脚接口说明和控制命令见表1.3和表1.4。
表1.3 引脚接口说明表
编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 |
1 | VSS | 电源地 | 9 | D2 | 数据 |
2 | VDD | 电源正极 | 10 | D3 | 数据 |
3 | VL | 液晶显示偏压 | 11 | D4 | 数据 |
4 | RS | 数据/命令选择 | 12 | D5 | 数据 |
5 | R/W | 读/写选择 | 13 | D6 | 数据 |
6 | E | 使能信号 | 14 | D7 | 数据 |
7 | D0 | 数据 | 15 | BLA | 背光源正极 |
8 | D1 | 数据 | 16 | BLK | 背光源负极 |
表1.4 控制命令表
序号 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
1 | 清显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
2 | 光标返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | |
3 | 置输入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | |
4 | 显示开/关控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | |
5 | 光标或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | |
7 | 置字符发生存贮器地址 | 0 | 0 | 0 | 1 | 字符发生存贮器地址 | ||||||
8 | 置数据存贮器地址 | 0 | 0 | 1 | 显示数据存贮器地址 | |||||||
9 | 读忙标志或地址 | 0 | 1 | BF | 计数器地址 | |||||||
10 | 写数到CGRAM或DDRAM | 1 | 0 | 要写的数据内容 | ||||||||
11 | 从CGRAM或DDRAM读数 | 1 | 1 | 读出的数据内容 |
1.6 继电器驱动模块
在本次系统设计里,我们采用了继电器来帮助我们成功的认知锁的开关状态。为了更加明确具体的开关信息,本次设计还另外增加了电磁锁。继电器通常情况下由铁芯以及线圈等硬件共同组成。当我们在线圈的对应位置施加相应的电压,在电流通过线圈之后,能够成功地产生电磁效应,从而帮助整个继电器成功地进入到工作状态,电磁锁就会打开。一旦我们将电源关闭,那么对应的电磁效应会随之消失,与此同时整个继电器就会停止目前的工作,电磁锁就会关闭[10]。
单片机在实际工作中的电平状态并不是不变的,随着电平状态的变化,在对继电器进行通电之后,继电器能够成功的进行工作,此时继电器充当驱动负载的开关。继电器的线圈和端子是分开且互补的,其触点就相当于开关。当我们对线圈进行通电时,那么就会产生对应的触点,来帮助继电器进入到工作状态。继电器往往存在两种工作状态,一种是高压状态,一种是低压状态,高压状态下继电器能够在高压下工作,低压状态下继电器能够在低压下工作。继电器原理图如图1.10所示。
图1.10 继电器原理图
1.7 蜂鸣器模块
在本次设计中接入声音报警器是为了在输入密码时可以得到按键声音的反馈,从而实现人机交互,同时还用于实现连续三次密码输入错误系统报警功能,当连续三次密码输入错误时,声音报警器将始终发出短促的警报声[11]。针对报警器我拟设计了两种方案,对比如下。
方案一:ISD4004集成芯片
ISD4004是一种语音集成芯片,它需要扩充喇叭驱动电路且其本身控制比较繁琐、电路比较复杂,稳定性差。基于以上考虑,所以放弃了此方案。
方案二:蜂鸣器
蜂鸣器具有电路简单,性能可靠、稳定等优点,最重要的是成本较低,效果较好。
通过两种方案相比较,方案二比较好。其成本低廉、操作便捷,所以本设计选择蜂鸣器作为报警器。
目前国际上大多数的蜂鸣器都采用了驱动的方式来进行工作,如果蜂鸣器成功地接收到震荡源,那么,此时蜂鸣器就会进入工作之中,如果并没有收到对应的震荡源,那么将不会发出对应的命令信息,因此想要蜂鸣器进入工作,必须要提供对应的方波来促进帮助其进入工作。通常情况下,拥有震荡源的蜂鸣器往往比没有震荡源的蜂鸣机价格更为昂贵,因为拥有震荡源的蜂鸣器能够减少整个工作的流程,从而帮助程序的控制以及设计进行更加便捷的操作。
由于蜂鸣器的工作电流通常较大,因此在实际工作之中必须要运用放大电路的方式来帮助其进入正常的工作之中,在一般情况下我们都会选择三极管来辅助工作,在整个设计的运作流程之中,三极管对于蜂鸣器的重要性不言而喻。蜂鸣器原理图如图1.11所示。
图1.11 蜂鸣器原理图
1.8 蓝牙模块
蓝牙模块的主要功能是实现远程开锁,运用蓝牙模块能够成功的帮助设备进行无线连接,而且能够很好的与单片机系统兼容,从而帮助系统编写。针对蓝牙模块我拟设计了两种方案,对比如下。
方案一:HC-05蓝牙模块
HC-05蓝牙模块是高性能的蓝牙串行端口模块[12],主从可指令切换,指令丰富齐全,蓝牙模块的名字和密码可以进行更改。
方案二:HC-06蓝牙模块
HC-06蓝牙模块是高性能的蓝牙串行端口模块,主从可指令切换,指令较少且不全,蓝牙模块的名字和密码不可以进行更改。
经比较发现,HC-05蓝牙模块和HC-06蓝牙模块都具有高性能、灵活的优点,但HC-06蓝牙模块指令少且不能修改,不符合本设计要求,故选择方案一。
HC-05蓝牙模块目前主要有两种工作类型。首先是自动工作类型,当模块处于运行的时候,能够采取自动方式进行对应的工作,并不需要人为进行干涉就可以发布命令。而另一种模式则是命令响应工作类型,在该类型下模块将可以受到用户的指令控制,如果并未受到控制命令,那么模块将并不会进入工作。
蓝牙模块主要由芯片以及外围零件共同组成,不同的构成零件也会导致各个蓝牙模块的功能各不相同,对应的管角设计也不尽相同,将蓝牙模块与单片机进行连接时,必须先要将对应的连接插口接入到单片机的对应位置,最后再将VCC和GND管脚连接上。HC-05蓝牙模块与手机连接时,需要打开手机上的蓝牙密码锁APP,利用蓝牙密码锁APP查询HC-05蓝牙模块地址并进行连接,首次连接时会出现输入密码界面,输入密码1234点击确定,此时蓝牙模块上的小红灯慢闪,则说明连接成功[13]。蓝牙模块原理图如图1.12所示。
图1.12 蓝牙模块原理图
2 系统调试
2.1 硬件调试
将整个硬件搭建完成之后,第一时间并不能对其进行通电处理,首先需要查看整个系统是否已经就绪,其焊接点是否完善,并且根据对应的电路图进行相应的排查,运用电压表来对电压进行实时的检测,在确定整个系统已经达到完善之后,进行相应的调试[18]。
单片机与蓝牙的调试需要分成两部分,运用单片机开发装备来对单片机进行相应的调试,而蓝牙需要通过蓝牙模块来进行对应的调试。将蓝牙模块连接至电脑端口,运用对应的频率以及指令来对相应的内容进行测试,在蓝牙成功匹配之后,可以输入对应的命令,在输入命令之后液晶显示器会成功的发亮,并能够返回对应的数值,完成以上步骤之后说明该系统的蓝牙模块调试,没有出现问题。
在对整个程序进行相关测试之前,需要正确的设计好报警参数,如果在实验中并没有输入正确的密码,那么报警器会根据错误的输入行为发出对应的警告[19],如果连续三次都没有输入正确的密码,对应的操作系统将会被成功关闭,从而防止信息泄露,当出现这种情况时,必须要及时的按下回位键。蓝牙无线密码锁实物图如图2.1所示。
图2.1 蓝牙无线密码锁实物图
2.2 软件调试
(1)使用Keil μVision4软件创建项目,单击菜单栏上的“工程”,输入并保存新项目名称“基于单片机的蓝牙无线密码锁设计”,并且在对应内容中选择“STC89C52”作为设计主体。
(2)选择新建文本框,并将整个系统的程序进行对应的编写,并将此份文件保存至新建文件夹。
(3)对这个程序进行相应的调试,在编辑选项中可以对信息进行相应的处理,如果整个系统运行有对应的错误,可以根据其错误进行相应的修正,直至系统能够正常运行[20]。Keil μVision4软件开发流程图如图2.2所示。
图2.2 Keil μVision4软件开发流程图
2.3 问题及解决方法
在进入环境以后,遇到了很多问题,总结如下:
(1)提示无asm文件。编译时候提示:F:\...\XX.asm File has been changed outside the editor,reload ?解决方法:重新生成项目,产生examl1.asm即可。
(2)输入程序时存在中文标点符号,用keil编译时出现错误。解决方法:程序里有带中文标点,可用英文重输入一遍。
(3)程序汇编时出现字母数字的混杂,解决方法:字母“O”和数字 “0”。汇编时一定要注意细节。
(4)焊接短路:就是在焊接的过程中,有很多多余的融化锡液滴到了电路板的其他位置,致使锡液与其他电路连接,造成短路。这种失误是最为严重的,如果操作不当可能会使整个电路系统烧毁,解决方法:把控好焊锡的量,在焊接过程中尽量做到仔细,不能有差错。
(5)冷焊:冷焊就是在焊锡在接触线路板时温度过低,使得焊锡与接线板的粘合度降低,可能致使电路连接不稳定。致接线板与零件的结合点较为疏松,会造成接触不良。解决方法:待焊锡丝完全融化后再进行焊接。
(6)零件规格选择错误:就是在焊接过程中选错了零件的参数和规格,例如,误把规格为100PF的电容焊接到需要1000PF的焊接点,会造成系统的部分功能无法使用。解决方法:在选择零件参数时要认真审查零件的规格。最终实现了预期的性能要求和功能表现。
硬件原理图
图2.1 Keil μVision4开发环境
如果你需要帮助、建议或解决问题,不要犹豫,可以随时向老师提问或寻求支持。专注于单片机的解决方案可以为你提供有关电子设计、嵌入式系统、编程和硬件方面的宝贵信息。无论你的问题涉及到哪个方面,都可以向老师咨询,以获得有针对性的建议和指导。祝愿你在单片机设计领域取得成功!