收藏 分享(赏)

基于51单片机的蓝牙控制-本科生毕业设计.doc

上传人:为人民服务 文档编号:2369672 上传时间:2018-09-13 格式:DOC 页数:21 大小:511KB
下载 相关 举报
基于51单片机的蓝牙控制-本科生毕业设计.doc_第1页
第1页 / 共21页
基于51单片机的蓝牙控制-本科生毕业设计.doc_第2页
第2页 / 共21页
基于51单片机的蓝牙控制-本科生毕业设计.doc_第3页
第3页 / 共21页
基于51单片机的蓝牙控制-本科生毕业设计.doc_第4页
第4页 / 共21页
基于51单片机的蓝牙控制-本科生毕业设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、1摘 要随着科技的进步与现代产业的飞速发展,对控制系统的发展也提出了越来越高的要求,非接触控制、中远程通信正在扮演这越来越重要的角色,所以单片机的中远程通信的意义也愈发重要。作为一名工科生,加强对这方面的学习是很有必要的。基于AT89C51单片机与HC-08蓝牙模块通信的基础,我们设计了能够实现在手机模拟串口APP的客户端上进行温度监视与控制的系统。该系统主要由蓝牙通信模块,灯光模拟加热电路,单片机控制电路,基于DS18B20的温度监视电路等部分组成。画出了系统电路原理图,进行了软件设计,给出了系统流程图,并编写了系统程序。最后在进行系统仿真的基础上进行了实物制作,实物调试结果表明,所设计的系

2、统能够满足要求。本系统具有成本低,安全实用,80米左右通信等特点。关键词:AT89C51;HC-08 蓝牙;DS18B20;LCD 显示屏;2一、概述 41.1 课程考核目的 .41.2 设计任务及要求 .41.3 设计需要的相关知识 4二、总体设计方案与说明 52.1 系统总体设计方案 52.2 系统的技术指标 52.3 AT89C51 单片机的串口 .52.3.1 概念 52.3.2 串行口结构 62.3.3 特殊功能寄存器 PCON72.3.4 串行口的 4 种工作方式 .8三、系统硬件部分设计 103.1 Protel DXP 电路原理图 103.2 LCD 显示电路 .113.2.1

3、 LCD 1602 引脚 .113.2.2LCD1602 字符的显示及命令 .113.3 HC-08 蓝牙模块电路 123.3.1 模块简介 133.3.2 HC-08 蓝牙引脚定义 .133.4 温度检测电路 .143.4.1 DS18B20 模块简介 143.4.2 引脚功能 143.4.3 编程方式 143.5 模拟加热电路(本设计中以 LED 灯和继电器模拟加热电路) .15四、系统软件部分设计 164.1 系统软件流程图 164.2 程序清单 .16五、系统仿真及实物制作 175.1 仿真软件 175.2 程序编译软件 185.3 编译过程 185-4 Proteus 仿真原理图 1

4、95.5 仿真过程 195.6 实物制作及功能演示 23六、总结 25七、参考文献 25附录一 Protel DXP 原理 26附录二 程序清单 27附录三 Proteus 仿真原理图 303一、概述1.1 课程考核目的通过本课程学习,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/ 输出 (I/O)接口技术,单片机中远程通信的方法,应用程序设计技术,并能结合专业设计简单实用的单片机应用系统。针对课堂重点讲授内容使学生加深对单片机硬件原理的理解及提高 C51 语言程序设计的能力,为以后的毕业设计搭建了单片机系统应用平

5、台,提高学生的开发创新能力。1.2 设计任务及要求设计要求:设计一个手机蓝牙通过 HC-08 蓝牙模块联系 AT89C51 单片机,对其发出指令进行温度控制,并且能够将温度回馈到手机的模拟串口的客户端界面上。主要任务:(1)进行系统方案总体设计,画出系统设计的框图。(2)硬件部分设计。将整个硬件系统划分为若干功能单元电路,使用Protel DXP 画出每个单元电路原理图,绘出整个系统电路原理图。(3)软件部分设计。画出程序流程图,编写系统源程序(有必要的注释)并调试。(4)购买实物,进行实物连接。(5)画出 Proteus 仿真图,载入程序,进行仿真。(6)软硬件联调,完成系统工作调试。在以上

6、工作基础上完成课程设计报告,包括设计任务与要求,总体方案说明,电路原理图与说明,软件流程图和源程序清单,问题分析与解决方案,结论与体会,参考资料等。1.3 设计需要的相关知识通信基础下的温度控制系统设计主要涉及单片机的串口通信。基础知识包括:单片机的串口方式,HC-08 蓝牙的串口通信知识, LCD 显示,DS18B20 的温度显示等等。4二、总体设计方案与说明2.1 系统总体设计方案特别说明:本次设计中,使用一个与继电器连接 LED 灯模拟加热模块。手 机 蓝 牙HC-08蓝 牙8051单 片 机测 温 模 块加 热 模 块LCD显 示 模 块图 2-1 系统工作框图本设计基本工作方式如图

7、2.1-1 所示,在手机模拟串口发出指令,通过 HC-08 蓝牙从机传递给单片机,单片机启动模拟加热模块,测温模块测得实时温度,然后将温度反馈给单片机,单片机再发送到 LCD 显示屏上显示或是回馈给手机客户端。2.2 系统的技术指标利用 51 单片机接收从手机发出的指令,控制 LCD 显示电路、加热电路、测温电路,系统功能:指令“0”LED 灯亮,指令“1”LED 灯灭,指令“2” ,单片机将温度回馈给手机。2.3 AT89C51 单片机的串口2.3.1 概念AT89S51 集成一个全双工通用异步收发(UART )串行口。全双工:两个单片机之间串行数据可同时双向传输。异步通信:收、发双方使用各

8、自时钟控制发送和接收,省去收、发双方5的 1 条同步时钟信号线,使异步串行通信连接更简单且易实现。2.3.2 串行口结构AT89S51 串行口内部结构见图 2-2。有两个物理上独立的接收、发送缓冲器SBUF(特殊功能寄存器) ,可同时收发数据。发送缓冲器只写不读,接收缓冲器只读不写,两个缓冲器共用一个特殊功能寄存器字节地址(99H) 。图 2-2 串行口结构图寄存器 SCON 各位功能:(1) SM0、SM1串口 4 种工作方式选择,如表 2-1表 2-1(2)SM2多机通信控制位多机通信是在方式 2 和方式 3 下进行,因此 SM2 位主要用于方式 2 或方式3。当串口以方式 2 或方式 3

9、 接收时,如 SM2=1,则只有当接收到的第 9 位数据(RB8)为“1”时,才使 RI 置“1” ,产生中断请求,并将收到的前 8 位数据送入 SBUF;当收到的第 9 位数据(RB8)为“0”时,则将收到的前 8 位数据丢弃。6当 SM2=0 时,则不论第 9 位数据是“1”还是“0” ,都将接收的前 8 位数据送入 SBUF 中,并使 RI 置“1” ,产生中断请求。方式 1 时,如果 SM2=1,则只有收到有效的停止位时才会激活 RI。方式 0 时,SM2 必须为 0。(3)REN 允许串行接收位,由软件置“1”或清“0” 。REN=1,允许串行口接收数据。REN=0,禁止串行口接收数

10、据。(4)TB8发送的第 9 位数据在方式 2 和方式 3 时,TB8 是要发送的第 9 位数据,其值由软件置“1”或清“0”。在双机串行通信时,TB8 一般作为奇偶校验位使用;也可在多机串行通信中表示主机发送的是地址帧还是数据帧,TB8=1 为地址帧,TB8=0 为数据帧。 (5)RB8接收的第 9 位数据在方式 2 和方式 3 时,RB8 存放接收到的第 9 位数据。在方式 1,如果SM2=0,RB8 是接收到的停止位。在方式 0,不使用 RB8。(6)TI 发送中断标志位方式 0 时,串行发送的第 8 位数据结束时,TI 由硬件置“1” ,在其他工作方式中,串行口发送停止位的开始时,置

11、TI 为“1” 。TI=1,表示 1 帧数据发送结束。TI 位状态可供软件查询,也可申请中断。CPU 响应中断后,在中断服务程序向 SBUF 写入要发送的下一帧数据。注意:TI 必须由软件清“0” 。(7)RI 接收中断标志位串口在方式 0 时,接收完第 8 位数据时,RI 由硬件置“1” 。在其他工作方式中,串行接收到停止位时,该位置“1” 。RI=1,表示一帧数据接收完毕,并申请中断,要求 CPU 从接收 SBUF 取走数据。该位状态也可供软件查询。注意:RI 必须由软件清“0” 。 2.3.3 特殊功能寄存器 PCON 字节地址为 87H,不能位寻址。格式见图 2-3 仅最高位 SMOD

12、 与串口有关,低 4 位功能在第 2 章中已介绍。SMOD 位:波特率选择位。图 2-3 特殊功能寄存器 PCON 格式72.3.4 串行口的 4 种工作方式4 种工作方式由特殊功能寄存器 SCON 中 SM0、 SM1 位定义,编码见表 2.3-1。方式 0方式 0 为同步移位寄存器输入/输出方式。该方式并不用于两个 AT89S51 单片机间的异步串行通信,而是用于外接移位寄存器,用来扩展并行 I/O 口。方式 0 以 8 位数据为 1 帧,没有起始位和停止位,先发送或接收最低位。波特率是固定的,为 fosc/12。1方式 0 输出(1)方式 0 输出的工作原理当单片机执行将数据写入发送缓冲

13、器 SBUF 指令时,产生一个正脉冲,串口把 8 位数据以 fosc/12 固定波特率从 RXD 脚串行输出,低位在先,TXD 脚输出同步移位脉冲,当 8 位数据发送完,中断标志位 TI 置“1” 。2方式 0 输入(1)方式 0 输入的工作原理 :方式 0 输入时,REN 为串行口允许接收控制位,REN=0,禁止接收;REN=1,允许接收。当 CPU 向串行口 SCON 寄存器写入控制字(设置为方式 0,并使 REN 位置“1”,同时 RI=0)时,产生一正脉冲,串口开始接收数据。引脚 RXD 为数据输入端,TXD 为移位脉冲信号输出端,接收器以 fosc/12 固定波特率采样 RXD 引脚

14、数据信息,当接收器接收完 8 位数据时,中断标志 RI 置“1” ,表示一帧接收完毕,可进行下一帧接收。方式 1方式 1 为双机串行通信方式,如图 2-4。图 2.-4 方式 1 双机串行通信方式当 SM0、SM1=01 时,串行口设为方式 1 双机串行通信。 TXD 脚和 RXD 脚分别用于发送和接收数据。8方式 1 收发一帧数据为 10 位,1 个起始位(0) ,8 个数据位,1 个停止位(1) ,先发送或接收最低位。1方式 1 发送串口以方式 1 输出,数据位由 TXD 端输出,发送一帧信息为 10 位,1 位起始位 0,8 位数据位(先低位)和 1 位停止位 1,当 CPU 执行写数据

15、到发送缓冲器 SBUF 的命令后,就启动发送。发送时钟 TX 时钟频率就是发送波特率。发送开始时,内部逻辑将起始位向TXD 脚(P3.1)输出,此后每经 1 个 TX 时钟周期,便产生 1 个移位脉冲,并由TXD 脚输出 1 个数据位。8 位全发送完后,中断标志位 TI 置“1” 。 2方式 1 接收串行口以方式 1(SM0、SM1=01)接收时(REN=1) ,数据从 RXD(P3.0)脚输入。当检测到起始位负跳变时,则开始接收。接收时,定时控制信号有两种,一种是接收移位时钟(RX 时钟) ,频率和传送的波特率相同,另一种是位检测器采样脉冲,它的频率是 RX 时钟的 16 倍。也就是在 1

16、位数据期间,有 16 个采样脉冲,以波特率的 16 倍速率采样 RXD 引脚状态。当采样到 RXD 端从 1 到 0 的负跳变(有可能是起始位)时,就启动接收检测器。接收的值是 3 次连续采样(第 7、8、9 个脉冲时采样) ,取其中两次相同的值,以确认是否是真正起始位(负跳变)开始,这样能较好消除干扰引起的影响,以保证可靠无误地开始接收数据。当确认起始位有效时,开始接收一帧信息。接收每一位数据时,也都进行 3 次连续采样(第 7、8、9 个脉冲时采样) ,接收的值是 3 次采样中至少两次相同的值,以保证接收到的数据位的准确性。当一帧数据接收完毕后,必须同时满足以下两个条件,这次接收才真正有效

17、。(1)RI=0,即上一帧数据接收完成时,RI=1 发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收 SBUF”已空。(2)SM2=0 或收到的停止位=1 (方式 1 时,停止位已进入 RB8) ,则将接收到的数据装入 SBUF 和 RB8(装入的是停止位) ,且中断标志 RI 置“1” 。若不同时满足这两个条件,收到的数据不能装入 SBUF,这意味着该帧数据将丢失。方式 2串口工作于方式 2 和方式 3 时,为 9 位异步通信接口。每帧数据均为 11 位,1 位起始位 0,8 位数据位(先低位) ,1 位可程控为 1 或 0 的第 9 位数据及 1 位9停止位。1方式 2 发送发

18、送前,先由通信协议由软件设置 TB8(如奇偶校验位或多机通信的地址/数据的标志位) ,然后将要发送的数据写入 SBUF,即可启动发送过程。串行口能自动把 TB8 取出,并装入到第 9 位数据位的位置,再逐一发送出去。发送完毕,则使 TI 位置“1” 。2方式 2 接收当 SCON 寄存器 SM0、SM1=10,且 REN=1 时,允许串行口以方式 2 接收数据。接收时,数据由 RXD 端输入,接收 11 位信息。当位检测逻辑采样到 RXD引脚从 1 到 0 的负跳变,并判断起始位有效后,便开始接收一帧信息。在接收完第 9 位数据后,需满足以下两个条件,才将接收到的数据送入接收缓冲器SBUF。(

19、1)RI=0,意味着接收缓冲器为空。(2)SM2=0 或接收到的第 9 位数据位 RB8=1。当满足上述两个条件时,接收到的数据送入 SBUF(接收缓冲器) ,第 9 位数据送入 RB8,且 RI 置“1” 。若不满足这两个条件,接收的信息将被丢弃。方式 3当 SM0、 SM1 两位为 11 时,串行口被定义工作在方式 3。方式 3 为波特率可变的 9 位异步通信方式,除了波特率外,方式 3 和方式 2 相同。三、系统硬件部分设计3.1 Protel DXP 电路原理图见附录一103.2 LCD 显示电路图 3-1 LCD 显示电路3.2.1 LCD 1602 引脚LCD 1602 工作电压

20、4.55.5V,典型 5V,工作电流 2mA。标准的 14 引脚(无背光)或 16 个引脚(有背光)的外形及引脚如图 3-2 所示。图3-2 LCD 1602 引脚功能图3.2.2LCD1602 字符的显示及命令(1)显示字符首先要解决待显示字符的 ASCII 码产生。用户只需在 C51 程序中写入欲显11示的字符常量或字符串常量,C51 程序在编译后会自动生成其标准的 ASCII 码,然后将生成的 ASCII 码送入 LCD,内部控制电路就会自动将该 ASCII 码对应的字符在 LCD1602 显示出来。让液晶显示器显示字符,首先对其进行初始化设置,还必须对有、无光标、光标移动方向、光标是否

21、闪烁及字符移动方向等进行工作方式设置,才能获得所需显示效果。(2)命令通过控制引脚进行命令控制,四种状态,每种状态都是在 E 的脉冲下按完成。如表 3-1 所示RS R/ 操作0 0 写命令(初始化、光标位置设置等)1 0 写数据0 1 读状态(液晶忙状态)1 1 读数据(把显示的数据反读出来)表 3-1 LCD 1602 状态3.3 HC-08 蓝牙模块电路图 3-3 HC-08 蓝牙模块电路123.3.1 模块简介HC-08 蓝牙串口通信模块是新一代的基于 Bluetooth Specification V4.0 BLE 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM,调制方式是

22、 GFSK。模块最大发射功率为 4dBm,接收灵敏度-93dBm,空旷环境下和 iphone4s 可以实现 80 米超远距离通信。模块采用 TI 的 CC2540 芯片,配置 256K Byte 空间,支持 AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活。3.3.2 HC-08 蓝牙引脚定义通常情况下,只需要用到 1 脚、2 脚、12 脚、13 脚,引脚定义如表 3-2。引脚 定义 I/O 方向 说明1 TXD 输出 URAT 输出口,3.3V TTL 电平2 RXD 输入 URAT 输入口,3.3V TTL 电平12 VCC 电源脚 电源脚,要求直流

23、 3.3V 电源,供电电流不小于 100mA13 GND 模块公共地表 3-2 HC-08 引脚定义133.4 温度检测电路图 3-4 温度检测电路3.4.1 DS18B20 模块简介DS18B20 是美国 DALLAS 公司推出的数字温度传感器,将温度传感器、数字转换电路集成到了一起。直接将温度转化成数字信号传送给单片机处理,因而可省去传统的信号放大、A/D 转换等外围电路。3.4.2 引脚功能引脚功能定义如下:DQ:数据输入输出,可直接与单片机的 I/O 口相连。VDD: +5V 电源电压。 GND:电源地。3.4.3 编程方式DS18B20 内部有 9 个字节的暂存器。第 2、3、4 个

24、字节数据为存放于EEPROM 数据的镜像。开始两个暂存器存放当前测到的温度值,以 16 位补码形式表示 12 位温度读数。16 位温度转换值的存放格式,高 5 位是温度值的符号扩展,中间 7 位是温度值的整数部分,最低 4 位为小数部分。如果测得的温度大于 0,高 5 位为 0,只要将测到的数值乘以140.0625(1/16)即可得到实际温度;如果温度小于 0,高 5 位为 1,测到的数值需要取反加 1 再乘以 0.0625 即可得到实际温度。温度与转换后的数字量的对应关系见下表所示。度/ 16 位二进制编码 十六进制表示125 0000 0111 1101 0000 07D0H85 0000

25、 0101 0101 0000 0550H+25.0625 0000 0001 1001 0001 0191H+10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FE6FH-55 1111 1100 1001 0000 FC90H表 3-3 温度与转换后的数字量的对应关系3.5 模拟加热

26、电路(本设计中以 LED 灯和继电器模拟加热电路)15图 3-5 加热电路图当单片机接收到命令 0 时,继电器吸合,加热电路开始工作;当单片机接收命令 1 时,继电器断开,加热电路停止工作四、系统软件部分设计4.1 系统软件流程图主函数设置定时器为方式 2,然后运行头 lcd1602 文件中的 LCD 初始化函数,串口初始化函数,以及 ds18b20 头文件中的读取温度函数,再通过数组显示温度,见图 4-1。定时器中断函数采用 if 选择结构,当 sbuf 接收到 ASCII 码 0x30,则点亮LED,0x31 熄灭 LED,0x32 就把温度以数组的依次送回手机界面。见图 4-2开 始LC

27、D显 示 初 始 化串 口 初 始 化定 时 器 初 始 化开 始定 时 器 中 断 函 数读 取 温 度显 示 温 度启 动 定 时 器RI=1?Y清 除 RISBUF=0x30?YLED=1继 电 器 导通SBUF=0x31?NYLED=0继 电 器 关断结 束主 函 数SBUF=0x32?N发 送 温 度 返 回 给手 机Y图 4-1 主函数流程图 图 4-2 定时器中断函数流程图164.2 程序清单见附录二五、系统仿真及实物制作5-4 Proteus 仿真原理图见附录三17附录一 Protel DXP 原理18附录二 程序清单#include #include“LCD1602.h“#i

28、nclude“ds1820.h“#define PINLV 11059200UL /使用 11.0592M 晶体#define BAUD_9600 9600UL /波特率定义为 9600sbit LED = P14;#define uchar unsigned char#define uint unsigned intuchar fh,bw,sw;int i;uint ty1,temp,tempx,tempi;uchar displaytemp16 = “temp “;/第一行void UART_INIT(void); /函数声明void delays (unsigned int us) wh

29、ile(us-);/* 串口初始化子函数* T1 工作在方式 2,波特率 9600,开串口中断*/void UART_INIT(void)TMOD=0x20; /定时器 1 工作在模式 2,自动重装模式SCON=0x50; /串口工作在模式 1TH1=256-PINLV/(BAUD_9600*12*16); /计算定时器重装值TL1=256-PINLV/(BAUD_9600*12*16);PCON|=0x80; /串口波特率加倍ES=1; /串行中断允许TR1=1; /启动定时器 1 EA=1; /允许中断void DISPLAY()displaytemp4=:;displaytemp5=fh

30、;bw=tempi/100;if(bw=0)displaytemp6= ;else19displaytemp6=bw+0x30;sw=(tempi%100)/10;if(sw=0)displaytemp7= ;elsedisplaytemp7=sw+0x30;displaytemp8= (tempi%100)%10+0x30;displaytemp9=.; displaytemp10=tempx/10+0x30;displaytemp11= 0xdf;displaytemp12= 0x43;LCD_Write_String(0,1,displaytemp);/显示第二行/主程序void mai

31、n() P1=0x00;LCD_initial();UART_INIT(); /串口初始化while(1) temp=retemp();ty1=temp;if(ty10xf000)fh=-;temp=temp;temp+=1;elsefh=+;tempi =temp4;tempx=(tempDISPLAY();delays(10);/显示 /原地踏步/* 中断服务子函数* 清除 RI,同时判断接到的数据*/20void uart(void) interrupt 4unsigned char n; /接收数据寄存器if(RI) /是否收到数据RI=0; /清中断请求n=SBUF; /读入缓冲区的值/* switch(n)case 0X30:LED=1;break;case 0X31:LED=0;break;case 0X32:for(i=0;i11;i+)n=displaytempi;while(TI=0);TI=0;delays(100000);break; */if(n=0x30)LED=1;if(n=0x31)LED=0;if(SBUF=0x32)for(i=0;i11;i+) SBUF=displaytempi;while(TI=0);TI=0;delays(100000);21附录三 Proteus 仿真原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报