蓝牙温度检测系统(基于BT08-B蓝牙模块)

闲暇之余做的一个小作品,希望能和大家分享一下我的经验和想法,一起学习?

                                         摘 要

本系统以STC89C52单片机为控制核心,结合LCD1602液晶显示屏,DS18B20温度传器,BT08-B蓝牙模块,设计并实现了温度测量系统。经过最终的调试,本系统已实现了所有基本功能。温度检测系统在环境温度改变的情况下可以实现每1s进行误差为2℃以内的基本温度测量,将测量的温度显示在液晶显示屏上,并且可以通过蓝牙模块将测量的温度实时传到手机或者电脑端。

关键词:温度传感器;STC89C52;蓝牙模块;液晶显示屏

目 录
摘 要
一、系统方案
1.系统总体方案设计
2.系统结构框图

二、电路与程序设计
1.各部分电路设计
2.程序设计

三、测试结果
1.测试方案
2.测试结果及分析

四、附录
1.电路原理图
2.程序清单

一、系统方案
1.系统总体方案设计
蓝牙温度检测系统
本系统以STC89C52芯片作为控制核心,DS18B20为温度传感器,LCD1602为显示器件,以及BT08-B为蓝牙模块。DS18B02数字温度计提供 9 位温度读数,指示器件的温度。信息经过单线接口送入 DS18B20 或从 DS18B20 送出。当信息送入,经过单片机处理后在液晶上显示。再通过蓝牙模块将信息传输到手机或者PC端,其系统框图如图 1 所示。

2.系统结构框图

图一

二、电路与程序设计
1.各部分电路设计

(1)温度检测模块
在温度检测系统中,该模块起到检测外部环境温度的作用。DS1802 数字温度
计提供 9 位温度读数,指示器件的温度。信息经过单线接口送入 DS1820 或从
DS1820 送出,因此从中央处理器到 DS1820 仅需连接一条线(和地)。读、写和完 成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。

(2)LCD 液晶显示屏
在温度检测系统中用于显示场景的温度数据以及在智能窗帘系统中用于显
示光照强度数据。为工业字符型液晶,能够同时显示16x2即32个字符。

(3)STC90C52
本设计选用单片机 STC89C52 作为控制核心,它是宏晶科技推出的新一代超强
抗干扰、高速、低功耗的单片机,基于 Intel 标准的 8052,指令代码完全兼容传 统的 8051 系列单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内集成 MAX810 专用复位电路。

(4)BT08-B
BT08-B蓝牙模块是专为智能无线数据传输而打造,遵循 V2.1+EDR蓝牙规范。本模块支持UART接口,并支持SPP蓝牙串口协议具有成本低、体积小、功耗低、收发灵敏 性高等优点,只需配备少许的外围元件就能实现其强大功能。

2.程序设计
蓝牙温度检测系统
本系统以STC89C52作为主控芯片,实现温度检测功能。其中温度检测模块检测环境温度,LCD1602 显示温度数据,蓝牙模块传输数据到手机或者PC端流程图如图2所示。
图2

三、测试结果
1.测试方案
蓝牙温度检测系统
改变温度检测模块附近环境温度,观察 LCD1602 液晶屏所显示温度数据,测试结果为显示数据与实际环境温度基本吻合。并且可以通过蓝牙模块与手机端或者PC端连接,将温度实时传送给用户(1s刷新一次)。

2.测试结果及分析
由测试结果可以看出,温度检测系统可实现所有基本功能。其中温度检测系统可以在误差为2℃的情况下检测出环境度;蓝牙模块可以每隔1s准确地将温度传输到手机或者PC端。

五、附录
1.电路原理图

2.程序清单(模块化编程,程序太长这里就只附主程序)

/*******************************************************************
实验名            :蓝牙温度检测系统 *******************************************************************/#include<reg51.h>
#include"lcd.h"
#include"temp.h"uchar CNCHAR[6] = "摄氏度";
void LcdDisplay(int);
void UsartConfiguration();/*******************************************************************************
*函数名         : main
*函数功能         : 主函数
*******************************************************************************/void main()
{UsartConfiguration();LcdInit();             //初始化LCD1602LcdWriteCom(0x88); //写地址80表示初地址LcdWriteData('C'); while(1){LcdDisplay(Ds18b20ReadTemp());Delay1ms(1000);//1s刷新一次}
}/*******************************************************************************
*函数名         : LcdDisplay
*函数功能         : Lcd显示读取的温度
*******************************************************************************/void LcdDisplay(int temp)    //lcd显示
{unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定义数组float tp;  if(temp< 0)               //当温度为负时{LcdWriteCom(0x80);     //写地址  80表示初地址SBUF='-';//将接收到的数据放到发送寄存器while(!TI);                    //等待发送数据完成TI=0;                        //清除完成发送标志位LcdWriteData('-');        //显示负//因为读取的温度是实际温度的补码,所以减一,再取反求出原码temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5;    }else{          LcdWriteCom(0x80);      //写地址LcdWriteData('+');      //显示正   SBUF='+';               //将接收到的数据放到发送寄存器while(!TI);                  //等待发送数据完成TI=0;                        //清除完成发送标志位tp=temp;temp=tp*0.0625*100+0.5;  }datas[0] = temp / 10000;datas[1] = temp % 10000 / 1000;datas[2] = temp % 1000 / 100;datas[3] = temp % 100 / 10;datas[4] = temp % 10;LcdWriteCom(0x82);          //写地址LcdWriteData('0'+datas[0]); //百位 SBUF = '0'+datas[0];// 将接收到的数据放到发送寄存器while (!TI);                     //等待发送数据完成TI = 0;LcdWriteCom(0x83);        //写地址LcdWriteData('0'+datas[1]); //十位SBUF = '0'+datas[1];// 将接收到的数据放到发送寄存器while (!TI);                   //等待发送数据完成TI = 0;LcdWriteCom(0x84);       //写地址LcdWriteData('0'+datas[2]); // 个位SBUF = '0'+datas[2];// 将接收到的数据放到发送寄存器while (!TI);                   //等待发送数据完成TI = 0;LcdWriteCom(0x85);       //写地址LcdWriteData('.');       //小数点SBUF = '.';// 将接收到的数据放到发送寄存器while (!TI);                     //等待发送数据完成TI = 0;LcdWriteCom(0x86);        //写地址LcdWriteData('0'+datas[3]); // 小数点后一位SBUF = '0'+datas[3];// 将接收到的数据放到发送寄存器while (!TI);                  //等待发送数据完成TI = 0;LcdWriteCom(0x87);        //写地址LcdWriteData('0'+datas[4]); // 小数点后两位SBUF = '0'+datas[4];// 将接收到的数据放到发送寄存器while (!TI);                  //等待发送数据完成TI = 0;for(i=0; i<6; i++){SBUF = CNCHAR[i];// 将接收到的数据放到发送寄存器while (!TI);                  //等待发送数据完成TI = 0;}}
/*******************************************************************************
* 函数名         :UsartConfiguration()
* 函数功能         :初始化串口
*******************************************************************************/void UsartConfiguration()
{SCON=0X50;            //工作方式1TMOD=0X20;          //计数器工作方式2PCON=0X80;           //波特率加倍TH1=0XF3;               //波特率4800TL1=0XF3;ES=1;                       //打开接收中断EA=1;                      //打开总中断TR1=1;                  //打开计数器
}

实物图

最后在文末附上原理图,设计报告,详细代码以及BT08-B蓝牙模块的芯片手册

https://download.csdn.net/download/qq_45416203/12894554

蓝牙温度检测系统(基于BT08-B蓝牙模块)相关推荐

  1. 显微镜镜头缺陷检测系统 基于matlab的图像处理系统

    第一步 可以见到的显微镜镜头的圆形 显示镜头的轮廓 图像处理后,可以框选感兴趣的区域,并且将镜头位置处粗略显示出来 定位一部分缺陷位置 得到缺陷的轮廓 研究了一种sobel改进的方法,并且得到最佳的数 ...

  2. 基于STC15W4K48S4芯片的温度检测控制系统(支持手机蓝牙和串口屏的异步串口通信)

    目标功能 实现温度的实时检测,并通过两个异步串口将数据发送至串口屏HMI和与蓝牙模块相连接的手机上.支持手机APP和串口屏进行实时的相关数据更改.单片机根据数据要求,当实时温度不在合理范围时,做出应激 ...

  3. 51单片机蓝牙温度检测风扇

    1.蓝牙串口的使用 图中有两个同名的串行口缓冲寄存器,其中一个为发送寄存器SBUF,另一个为接收寄存器SBUF,两个寄存器便于单片机进行全双工方式进行通信. 串行发送数据时:SBUF写入数据. 串行接 ...

  4. android spp 服务端,Android开发之蓝牙(一)——基于SPP协议蓝牙模块通信,androidspp...

    Android开发之蓝牙(一)--基于SPP协议蓝牙模块通信,androidspp 使用设备 基本概念 基本流程 本文意在介绍蓝牙开发的主要流程,学习使用蓝牙开发一个星期了,写写一个星期以来遇到的一些 ...

  5. c语言pm2.5检测系统,基于Arduino的PM2.5实时检测系统

    沈华刚 洪香勤 都兴隆 摘 要:文章针对城市中PM2.5进行分析监视,并把数据实行显示在下位机和网络端.有利于相关部门或个人获得PM2.5数据信息,及时对恶劣污染作出反应,减少恶劣环境对人们的侵害.本 ...

  6. 蓝牙信号强度检测app_基于蓝牙技术的智能插座方案

    有这样一句话"科技时代,生活轻快".随着社会现代化程度越来越高,科技的应用为人们的生活带来便捷,大大提高了工作效率.纵观市场上"智能家居"产品很多,功能各异,各 ...

  7. 简易蓝牙的遥控系统基于c语言,基于Android平台的遥控风扇控制系统设计

    黄进皇+黄咏梅+黄胡萍+陈章毅+马来宾 摘要:针对现有风扇智能化程度不足,控制不够便捷等问题,利用现有的蓝牙通信技术.单片机控制技术和安卓平台,设计开发了一个基于Android平台的遥控风扇控制系统, ...

  8. e4a 蓝牙温度app_IIOT应用之Arduino无线蓝牙温湿度和距离测量系统

    本文介绍了基于Arduino的无线/蓝牙温湿度和距离测量系统,包括下位机和上位机. 下位机功能有温湿度和距离采集,OLED显示处理,LED显示报警,蓝牙模块可与手机等蓝牙设备交互,无线模块(HC-12 ...

  9. 蓝牙android rssi测距,基于 RSSI 的蓝牙测距

    蓝牙 RSSI 计算距离https://blog.csdn.net/njchenyi/article/details/46981423 利用 CoreLocation.framework 很容易扫描获 ...

  10. 基于android的手机位置系统,基于Android和SIM900A模块的位置实时监控系统的设计与实现...

    Design and implementation of real-time location monitoring system based on Android and SIM900A modul ...

最新文章

  1. 博客园外挂之一Web搜索引擎命中统计
  2. Python 3 利用 Dlib 实现人脸检测和剪切
  3. tomcat8配置tomcat-users.xml不生效
  4. 百分点认知智能实验室:NLP模型开发平台在舆情分析中的设计和实践(下)
  5. hibernate的Configuration类和SessionFactory接口
  6. 线段树之延时标记(区间修改)及lazy思想
  7. AIX常见日志查看位置
  8. Mac本如何运营php框架,1、Mac系统下搭建thinkPHP框架环境
  9. Spring AOP知识点简介
  10. React开发(160):onref使用
  11. Git系列一之安装管理
  12. BZOJ3561 DZY Loves Math VI
  13. 高数 吉米多维奇 785
  14. 网站视频很卡怎么办?有没有免费的视频平台?使用阿里云OSS对象云存储+下行流量包解决网站文件/视频访问慢问题
  15. CodeForces - 379E New Year Tree Decorations(暴力卡精度)
  16. 力扣5713. 字符串中不同整数的数目
  17. 28KHZ/40KHZ老款超声波开关线路板
  18. 微信小程序万里目_微信小程序加盟千万别忘了几个基本要求
  19. php 监听redis,php监听redis key失效触发回调事件_后端开发
  20. 游戏中的网络同步机制——Lockstep(转载)

热门文章

  1. Unity如何查看当前内存使用情况
  2. 如何破解CuteFTP 4.0,CuteFTP,逆向工程技术
  3. java述职报告ppt_java开发人员述职报告.ppt
  4. Matlab-香农编码
  5. 在表格中显示形位公差符号
  6. 德清租房软件测试,门头沟实习生出租房
  7. 北京内推 | 微软亚洲研究院机器学习组招聘NLP/语音合成等方向全职研究员
  8. AI基础:深度强化学习之路
  9. Ember component
  10. BlackBerry9700刷机