STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

这篇具有很好参考价值的文章主要介绍了STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

下面将介绍如何利用STC89C52单片机和DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度。以及各模块的使用方法。

一、项目要求

利用DHT11温湿度模块测量温湿度,利用HC-08蓝牙模块将数据传到手机上。

二、各模块简介

1.DHT11温湿度模块简介

1.1DHT11温湿度模块外观

STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

1.2DHT11温湿度模块使用方法简介

1.2.1DHT11温湿度模块工作的过程

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主
机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

1.2.2DHT11模块DATA引脚上40bit数据说明

8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验

1.2.3DHT11模块工作的时序图

说明:
1.DATA引脚拉高
2.DATA引脚拉低(至少18ms)
3.DATA引脚拉高(20~40us)
4.如果在后面的80us内检测到DATA引脚被拉低,则说明模块存在
5.再检测DATA引脚是否被拉高
6.再检测DATA引脚,看其是否被拉低,如果拉低,则准备开始传输数据
STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

1.2.4DHT11模块传输数据的时序图

模块给单片机传输的数据只能是0和1。我们可以通过0,1时序图的不同从而判断模块给单片机传输的数据是0还是1.
0的时序图
说明·:
1.不断检测DATA引脚是否被拉高
2.检测到被拉高后,进行延时35us
3.检测DATA引脚是否为低电平,如果是,则传输的数据为0,否则,为1。如果为1,则需要进行等待至引脚为低电平
STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度
1的时序图
STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

2.HC-08蓝牙模块简介

2.1HC-08蓝牙模块外观

STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

2.2HC-08蓝牙模块使用方法简介

1.使用相关的AT指令,更改模块的波特率等指标.
2.将蓝牙模块RXD与单片机的TXD相连,TXD与单片机的RXD相连.

2.3HC-08蓝牙模块的AT指令表及部分说明

说明:
1.在模块未连线状态下可以进行AT指令状态操作,连线后进入串口透传模式
2.模块启动大约需要150ms,所以最好在模块上电200ms后进行AT指令操作
3。AT指令操作成功会一律返回OK(有些指令此外)
STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

三、项目实现的代码

1.HC-08蓝牙模块传输数据部分代码

1.1串口初始化代码

void Uart_Init()//串口中断初始化函数
{
	AUXR = 0X01;//隔离电离辐射
	SCON = 0X50;//串口工作方式1,允许接收
	TMOD &= 0X0F;
	TMOD |= 0X20;//定时器1工作方式2
	TH1  = 0XFD;
	TL1  = 0XFD;//波特率为9600
	TR1  = 1;//定时器1开始计时
}

1.1数据传输代码

void Send_Byte(char cmdata)//发送一个Byte函数
{
	SBUF = cmdata;
	while(!TI);//一个Byte发送完成
	TI = 0;
}

void Send_Data(char* p)
{
	while(*p != '\0'){
		Send_Byte(*p);
		p++;
	}
}

2.DHT11温湿度模块部分代码

2.1DHT11模块激活代码

void Dht11_Start() //使DHT11模块工作函数
{
	//>1.DATA引脚拉高
	DATA = 1;
	//>2.DATA引脚拉低(至少18ms)
	DATA = 0;
	Delay20ms();
	//>3.DATA引脚拉高(20~40us)
	DATA = 1;
	//>4.如果在后面的80us内检测到DATA引脚被拉低,则说明模块存在
	while(DATA);
	//>5.再检测DATA引脚是否被拉高
	while(!DATA);
	//>6.再检测DATA引脚,看其是否被拉低,如果拉低,则准备开始传输数据
	while(DATA);
}

2.2从DHT11模块得到数据代码

void Get_Data_From_Dht11() //从DHT11模块得到数据
{
	int i,j;
	char flag;
	char temp;
	Dht11_Start();//每传输完一次数据都要重新激活模块
	
	for(i=0;i<5;i++){
		for(j=0;j<8;j++){
			//>1.不断检测DATA引脚是否被拉高
			while(!DATA);
			//>2.检测到被拉高后,进行延时35us
			Delay35us();
			//>3.检测DATA引脚是否为低电平,如果是,则传输的数据为0,否则,为1.当为1时要等待至引脚为低电平
			if(DATA == 1){
				flag = 1;
				while(DATA);
			}else{
				flag = 0;
			}
			temp = temp << 1;
			temp |= flag;
		}
		dhtdata[i] = temp;
	}
}

void Build_Data()
{	
	hum[0] = ':';
	hum[1] = dhtdata[0]/10 + 0x30;
	hum[2] = dhtdata[0]%10 + 0x30;//湿度整数部分
	hum[3] = '.';
	hum[4] = dhtdata[1]/10 + 0x30;
	hum[5] = dhtdata[1]%10 + 0x30;//湿度小数部分
	hum[6] = '%';
	hum[7] = '\0';
	
	tem[0] = ':';
	tem[1] = dhtdata[2]/10 + 0x30;
	tem[2] = dhtdata[2]%10 + 0x30;//温度整数部分
	tem[3] = '.';
	tem[4] = dhtdata[3]/10 + 0x30;
	tem[5] = dhtdata[3]%10 + 0x30;//温度小数部分
	tem[6] = 'C';
	tem[7] = '\0';
}

3.main函数部分代码

void main()
{
	Uart_Init();//串口中断初始化函数
	Delay1000ms();
	Delay1000ms();//给模块上电时间
	while(1){
		Get_Data_From_Dht11();
		Build_Data();
		Send_Data("湿度");
		Send_Data(hum);
		Send_Data("\r\n");//换行
		Send_Data("温度");
		Send_Data(tem);
		Send_Data("\r\n");//换行
		Delay1000ms();
	}
}

四、结果

STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度

五、总结

1.看时序图时要注意
2.DHT11模块需要上电时间文章来源地址https://www.toymoban.com/news/detail-434678.html

到了这里,关于STC89C52单片机利用DHT11温湿度模块以及HC-08蓝牙模块实现测量温湿度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STC89C52】学习51单片机的必备电子电路知识基础

    电子电路是学习51单片机的基础, 如果能把以下几个模块弄清楚学习51单片机就不成问题啦。 目录 1.电平 2.单片机IO口 3.电阻 4.电容  5.电路原理图 ​编辑 6.单片机最小系统结构  7.单片机工作的基本时序 单片机是一种数字集成芯片,数字电路中只有高电平和低电平。 单片

    2023年04月26日
    浏览(65)
  • STC89C52单片机LCD1602显示屏介绍与代码演示

    LCD1602显示屏介绍 引脚介绍 内部结构框图  存储器  DDRAM储存器地址  CGRAM与 CGROM的地址 时序介绍 LCD1602快捷指令  LCD1602指令操作流程: 字符、字符串的显示  各种进制的数字显示 在LCD1602上显示十进制数字 在LCD1602上显示十六进制数字 在LCD1602上显示二进制数字 LCD1602(Liq

    2024年02月08日
    浏览(51)
  • 单片机STC89C52倒计时、数码管和蜂鸣器控制

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 单片机选用STC89C52,实现倒计时60秒,控制两个数码管分别显示时间的十位和个位;当计时完毕时,显示\\\"-”,

    2024年02月04日
    浏览(45)
  • 初学51单片机(STC89C52)一个倒计时显示器和大家分享

      想要实现倒计时显示器,首先得确定从哪个时间开始倒计时,这就需要写出一个计数的程序来,通过按键来控制需要的数,从而开始倒计时。我的开发板上用的Key2,Key3,Key4,Key5这四个键,分别对应着加1,减1,乘2,开始计时四个功能。   通过加一,减一,乘2三个操作,

    2024年02月10日
    浏览(58)
  • 基于STC89C52单片机的温度控制系统设计方案与软硬件实现

    目录 摘要 I Abstract II 第一章 前言 1 1.1 温度控制系统设计发展历史及意义 1.2 温度控制系统的目的 1.3 温度控制系统完成的功能 第二章 总体设计方案 2.1 方案一 2.2 方案二 3.1 DS18B20简介 3.1.1DS18B20封装与引脚 3.1.2 DS18B20的简单性能 3.2 DS18B20的工作原理 3.3 DS18B20的测温原理 3.3.1 测

    2024年02月12日
    浏览(44)
  • 免费开源51单片机个人课程设计--基于stc89c52及红外遥控的测温智能电风扇

    51单片机个人课程设计–基于stc89c52及红外遥控的测温智能电风扇 个人学校的课程设计-智能电风扇,包含proteus原理图与源代码。 代码部分由我个人写的也有普中实验中的代码块。 3.1 硬件设计 主要器件: 单片机 AT89C52 红外接收 HS0038 LCD1602 温度测量 DS18B20 驱动集成芯片 L298

    2023年04月10日
    浏览(58)
  • 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯

    2024年02月01日
    浏览(103)
  • 利用AT89C52单片机实现数码管的静态与动态显示

            资源work1和work2(完整工程文件在笔者本人主页的资源中,免费欢迎下载)分别完成下面两个任务:         1、单片机接矩阵键盘和2个静态数码管,自行设计硬件电路,利用汇编语言,要求将按键值(0~15)在数码管显示。         主要代码: ……      

    2024年02月02日
    浏览(48)
  • 基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度

    wx供重浩:创享日记 对话框发送:单片机小车 免费获取完整无水印报告等 利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。 1.1智能

    2023年04月22日
    浏览(52)
  • 89C52RC普中单片机

    资料下载 普中科技--各型号产品资料下载链接 - STM8单片机 - 普中开源电子分享网 - Powered by Discuz! (prechin.net) 2023-06-28  1.开发板    2.软件 keil,stc-isp。 1.点亮led 89C52RC芯片LED模块是P2口。       2.led1一秒闪烁  3.LED流水灯  4.独立按键控制led亮灭(按下key1亮,松手灭) 5.独立按键

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包