STM32进阶-DHT11传感器的应用详细步骤

DHT11概述

在这里插入图片描述
 

接口说明
在这里插入图片描述
 
电源引脚
DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此
期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

DHT11数据处理

串行接口 (单线双向)
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次
通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数
部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。

数据格式:8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

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

在这里插入图片描述
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。 DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。
在这里插入图片描述

DHT11代码实现步骤

最重要的就是看懂时序图,然后看图写代码

dht11_init.c


void Dht11_Init(void)
{
   
	GPIO_InitTypeDef  	GPIO_InitStructure;
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;				//第9号引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;			//输出模式
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;			//推挽输出,增强驱动能力,引脚的输出电流更大
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;		//引脚的速度最大为100MHz
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;		//没有使用内部上拉电阻
	GPIO_Init(GPIOG, &GPIO_InitStructure);	
	
	//温湿度模块还没有工作,那么它的触发引脚是高电平
	PGout(9)=1;
}

//引脚模式变更
void Dht11_Pin_Mode
  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,为了驱动DHT11传感器,我们需要使用STM32F103C8T6微控制器的GPIO引脚。DHT11传感器具有一个数字信号引脚,该引脚用于从传感器读取数据。我们可以将DHT11传感器的数字信号引脚连接到STM32F103C8T6微控制器的GPIO引脚。 接下来,我们需要编写代码来读取DHT11传感器的数据。首先,我们需要发送一个开始信号给DHT11传感器,然后等待一段时间。接下来,我们将设置GPIO引脚为输入模式,并读取传感器返回的数据。这些数据包括温度和湿度。我们可以使用适当的算法来解码这些数据,并将其保存在变量中。 一旦我们成功读取了DHT11传感器的数据,我们就可以将其显示在OLED显示屏上。为了驱动OLED显示屏,我们需要使用STM32F103C8T6微控制器的另外一组GPIO引脚。我们将这些GPIO引脚连接到OLED显示屏的相应引脚上。 我们可以使用内置的库函数或者编写自己的代码来控制OLED显示屏。我们需要根据OLED显示屏的规格和通信协议来设置正确的数据和命令发送方式。 最后,我们将根据DHT11传感器返回的数据,使用适当的格式和单位将温度和湿度显示在OLED屏幕上。这可以通过将数据传输到OLED屏幕的适当位置来实现。 总体而言,通过编写适当的代码和配置控制器的GPIO引脚,我们可以实现STM32F103C8T6驱动DHT11传感器,并将数据显示在OLED屏幕上。这将需要一些硬件和软件知识,以及对STM32微控制器和DHT11传感器的理解。但是一旦完成,我们就可以使用STM32F103C8T6微控制器来读取温度和湿度数据,并将其显示在OLED屏幕上,实现一个简单的温湿度监测系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值