STM32F103的DHT11(温湿度传感器模块)的配置和使用

先来认识一下这个传感器
DHT11温湿度传感器图片
在这里插入图片描述
以下是他的封装尺寸以及管脚介绍
1、VDD供电 3.3~5.5V DC
2、DATA 串行数据,单总线
3、NC 空脚
4、GND接地,电源负极
在这里插入图片描述

在这里插入图片描述
DHT11和单片机之间的通信时通过io口来通信的,以下是它的通信介绍

	DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。设备(主机或从机)通过一个漏枀开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;单总线通常要求外接一个约 4.7kΩ 的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结极,只有主机呼叫从机时,从机才能应答,因此主机访问器件都必须严格遵循单总线序列,如果出现序列混乱,器件将不响应主机。
	单总线传送数据位定义DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。

上面一段话中所说的主机就是Stm32单片机,从机就是传感器内的一个8位单片机,传输模式是主机给从机发送一个信号,然后从机应答后返还给主机数据。主机和从机依靠一个IO口的高低电平进行通信。既然用到IO口那么我们就必须找到并配置这个IO口。

简单认识之后看开发板原理图DTH11是连接在哪个IO口
在这里插入图片描述
在这里插入图片描述
这个传感器连接在PG11 io口上,那么我们需要配置这个端口
之前配置io口,需要开启GPIOx的时钟,创建一个GPIO_initTypeDef结构体,选择管脚、输出速率、IO口输入输出模式,最后调用函数初始化IO在这里插入图片描述
PG11在GPIOG上,那初始化GPIO函数的第一个参数选择GPIOG,管脚和速率我们选择GPIO_Pin_11、GPIO_Speed_50MHz,只剩下IO口输入输出模式这个参数通过DTH11数据手册的时序图介绍可知
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述时序图有实线和虚线、实线代表主机信号(单片机信号)、虚线代表从机信号(DTH11响应的信号).
(1)主机通过拉低IO口之后至少延迟18ms,然后拉高IO口与从机通信,这个过程我们站在32芯片单片机的角度来看,io口当然要配置成输出模式。(2)那么从机响应信号后给主机返回信号,信号到达主机,主机通过读取IO口高低电平状态来读取数据,这个过程当然IO口要配置成输入模式。
这里主机既要求IO口配置成输出模式,从机又要求IO口配置成输入模式,我们怎么解决这个矛盾?
在这里插入图片描述
查询GPIO口输出模式得到将IO口配置成开漏模式可以解决这个矛盾,至此配置IO口的所有参数确定
dht11.h头文件代码:

#ifndef __DHT11_H
#define __DHT11_H

#include "stm32f10x.h"
#define dht11_High() GPIO_SetBits(GPIOG,GPIO_Pin_11)
#define dht11_low()  GPIO_ResetBits(GPIOG,GPIO_Pin_11)
#define dht11_readG11()  GPIO_ReadInputDataBit(GPIOG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值