首页 > 其他分享 >DHT11温湿度模块的简单使用与代码(江科大代码风格)

DHT11温湿度模块的简单使用与代码(江科大代码风格)

时间:2024-05-31 21:31:05浏览次数:28  
标签:Pin 温湿度 代码 Humi IO GPIO void DHT11

目录

模块接线

测量范围

模块代码

DTH11.h

DHT11.c


模块接线

测量范围

相对湿度:5%~95%RH

温度:-20~60℃

模块代码

DTH11.h

#ifndef       _DHT11_H_
#define       _DHT11_H_
#include "stm32f10x.h"                  // Device header


//上电后等待1秒才调用函数
extern uint8_t DHT11_RxData[4];
void DHT11_GetData(void);

#endif

DHT11.c

#include "stm32f10x.h"                  // Device header
#include "DHT11.h"
#include "Delay.h"

//***********************
#define DHT11_IO   GPIOB
#define DHT11_Pin  GPIO_Pin_12
#define DHT11_Rcc  RCC_APB2Periph_GPIOB
//*************************************


uint8_t DHT11_RxData[4];
/*
得到的结果:
	湿度:
			DHT11_RxData[0]=Humi_H;
			DHT11_RxData[1]=Humi_L;=0 
	温度:
			DHT11_RxData[2]=Temp_H;
			DHT11_RxData[3]=Temp_L;=0
*/




void DHT11_MOSI_Init(void)
{
	RCC_APB2PeriphClockCmd(DHT11_Rcc,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=DHT11_Pin;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(DHT11_IO,&GPIO_InitStructure);
	
	GPIO_SetBits(DHT11_IO,DHT11_Pin);
}

void DHT11_MISO_Init(void)
{
	RCC_APB2PeriphClockCmd(DHT11_Rcc,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Pin=DHT11_Pin;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(DHT11_IO,&GPIO_InitStructure);
	
}


void DHT11_Start(void)
{
	DHT11_MOSI_Init();
	GPIO_ResetBits(DHT11_IO,DHT11_Pin);
	Delay_ms(20);
	GPIO_SetBits(DHT11_IO,DHT11_Pin);
	Delay_us(30);
	DHT11_MISO_Init();
	
}

uint8_t DHT11_ReceiveByte(void)
{
	uint8_t i,Byte=0x00;
	for(i=0;i<8;i++)
	{
		while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==0);
		Delay_us(40);
		
		if(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==1)
		{
			Byte|=(0x80>>i);
		}
		while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==1);
		
	}
	return Byte;
}
void DHT11_GetData(void)
{
	
	uint8_t Humi_H,Humi_L,Temp_H,Temp_L,Check;
	
	DHT11_Start();
	
	if(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==0)
	{
		while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==0);
		while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_Pin)==1);
		
		Humi_H=DHT11_ReceiveByte();
		Humi_L=DHT11_ReceiveByte();
		Temp_H=DHT11_ReceiveByte();
		Temp_L=DHT11_ReceiveByte();
		Check=DHT11_ReceiveByte();
		
		GPIO_ResetBits(DHT11_IO,DHT11_Pin);
	  Delay_us(55);
		GPIO_SetBits(DHT11_IO,DHT11_Pin);
		
		if(Humi_H+Humi_L+Temp_H+Temp_L==Check)
		{
			DHT11_RxData[0]=Humi_H;
			DHT11_RxData[1]=Humi_L;
			DHT11_RxData[2]=Temp_H;
			DHT11_RxData[3]=Temp_L;
		}
		
		
	}
	
	
	
}

参考文章:DHT11详细介绍(内含51和STM32代码)-CSDN博客

详细信息需要阅读对应手册。

DHT11温湿度传感器-温湿度传感器-温湿度传感器 温湿度芯片 温湿度变送器模块 气体传感器 流量传感器 广州奥松电子股份有限公司 (aosong.com)

PS:代码是笔者学习完自己独立cue的,发出来一是分享,二是激励自己

标签:Pin,温湿度,代码,Humi,IO,GPIO,void,DHT11
From: https://blog.csdn.net/m0_75090944/article/details/139359094

相关文章

  • 雷池waf功能代码剖析
      看到他们发文章​-动态防护功能?了解一下具体是什么功能 就是处理了一下html和js  看一下雷池代码的构成是后台的代码Go语言使用Gin框架启动一个API服务器 ......
  • 逃离代码森林
    亲爱的编程战士们,你们是否厌倦了城市的喧嚣和无尽的代码,是时候要按下暂停键,或者换个环境回归自然。 我们为程序员团队提供专门的空间,舒适的工作站,以及高速的网络连接,让你享受乡村生活的同时,感受宁静与和谐。清晨的瑜伽,午后的茶艺,夜晚的星空,这里的生活简单而充实,让你身心充......
  • 代码随想录算法训练营第四十五天 | 1049. 最后一块石头的重量 II、494. 目标和、474.
    1049.最后一块石头的重量II视频讲解:动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili代码随想录解题思路直接将这一些石头,分为两堆,让他们尽可能相似,然后再相撞,就是最小值1.dp[j]背包容量为j所背的最大价值2.dp[......
  • 代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)
    源代码审计代码安全测试简介    代码安全测试是从安全的角度对代码进行的安全测试评估。(白盒测试;可看到源代码)    结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安......
  • 新型 Meterpreter 后门能够在图片中隐藏恶意代码
    据CyberSecurityNews消息,ANY.RUN沙盒分析了一种被称为Meterpreter的新型后门恶意软件,能利用复杂的隐写技术将恶意有效载荷隐藏在看似无害的图片文件中。基于Meterpreter的攻击从一个包含PowerShell脚本的.NET可执行文件开始,该脚本会从远程命令与控制(C2)服务器下载......
  • 代码随想录算法训练营day10(栈与队列)
    代码随想录算法训练营day10(栈与队列):学习内容:std::queue和std::stack是C++标准库中提供的队列和栈的容器适配器,它们分别基于队列和栈的概念,提供了一组简单的操作接口。std::queuestd::queue是一个先进先出(FIFO)的队列容器适配器。它提供了队列的基本操作,包括入队(pus......
  • EfficientNetV2深度学习记录——代码复现
    神经网络/深度学习第二章Python机器学习入门之EfficientNetV2的使用文章目录神经网络/深度学习前言一、EfficientNetV2是什么?二、EfficientNetV2代码的复现1.准备工作2.训练模型3.进行预测总结前言本文主要是复现efficientnetv2网络代码,训练自己的材质分类模型......
  • Android高通 12/13 录屏流程代码位置
     需求如下图实现系统录屏功能 frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord涉及代码ScreenRecordDialog#startBtnRecordingService#start#end ScreenMediaRecorder.java1、点击开始录屏frameworks/base/packages/SystemUI/src/......
  • kaggle竞赛系列基于图像对水稻分类代码案例
    目录依赖环境代码导入依赖包定义数据集路径:创建训练集、验证集和测试集的文件夹:代码的作用:设置新的数据集路径与类别名称代码的作用:定义数据预处理和增强变换:代码的作用:定义数据集评估划分与batch大小代码的作用:可视化代码的作用: 评估可视化代码的作用:网络结......
  • 数字转型:基于低代码的综合管理平台设计与开发
    摘要本文探讨了数字转型在现代企业中的重要性,并介绍了低代码平台如何成为推动这一转型的有力工具。文章详细阐述了一个基于低代码的综合管理平台的设计和开发过程,包括需求分析、架构设计、功能实现以及部署和维护。引言在当今这个信息化、数字化的时代,数字转型已成为企业......