实验器材
- CW32饭盒派开发板
- DHT11温湿度传感器
接线
| 开发板 | DHT11 |
|---|---|
| VCC | + |
| GND | GND |
| PB1 | OUT |
程序
- dht11.c
#include "dht11.h"
//复位DHT11
void DHT11_Rst(void)
{
PB01_DIR_OUTPUT(); //PB12配置成输出
PB01_SETLOW(); //拉低DQ
delay1ms(20);
PB01_SETHIGH(); //DQ=1
delay10us(3);
}
//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
uint8_t DHT11_Check(void)
{
uint8_t retry=0;
PB01_DIR_INPUT(); //PB12配置成输入
while (PB01_GETVALUE()&&retry<10)//DHT11会拉低40~80us
{
retry++;
delay10us(1);
};
if(retry>=10)return 1;
else retry=0;
while (!PB01_GETVALUE()&&retry<10)//DHT11拉低后会再次拉高40~80us
{
retry++;
delay10us(1);
};
if(retry>=10)return 1;
return 0;
}
//从DHT11读取一个位
//返回值:1/0
uint8_t DHT11_Read_Bit(void)
{
uint8_t retry=0;
while(PB01_GETVALUE()&&retry<10)//等待变为低电平
{
retry++;
delay10us(1);
}
retry=0;
while(!PB01_GETVALUE()&&retry<10)//等待变高电平
{
retry++;
delay10us(1);
}
delay10us(4);//等待40us
if(PB01_GETVALUE())return 1;
else return 0;
}
//从DHT11读取一个字节
//返回值:读到的数据
uint8_t DHT11_Read_Byte(void)
{
uint8_t i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Read_Bit();
}
return dat;
}
//从DHT11读取一次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
uint8_t DHT11_Read_Data(float *temp,uint8_t *humi)
{
// uint8_t buf[5];
char buf[5];
uint8_t i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)//读取40位数据
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}else return 1;
return 0;
}
//初始化DHT11的IO口 DQ 同时检测DHT11的存在
//返回1:不存在
//返回0:存在
uint8_t DHT11_GPIO_Config ( void )
{
GPIO_InitTypeDef GPIO_InitStruct;
__RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.IT = GPIO_IT_NONE;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pins = GPIO_PIN_1;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
DHT11_Rst(); //复位DHT11
return DHT11_Check();//等待DHT11的回应
}
dht11.h
#ifndef __DHT11_H
#define __DHT11_H
#include "main.h"
uint8_t DHT11_Init(void);//初始化DHT11
uint8_t DHT11_Read_Data(float *temp,uint8_t *humi);
uint8_t DHT11_Read_Byte(void);//读出一个字节
uint8_t DHT11_Read_Bit(void);//读出一个位
uint8_t DHT11_Check(void);//检测是否存在DHT11
void DHT11_Rst(void);//复位DHT11
uint8_t DHT11_GPIO_Config ( void );
#endif
接好线后,把程序下载到开发板,然后重启效果如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
温湿度采集
+关注
关注
0文章
9浏览量
7718 -
DHT11
+关注
关注
19文章
277浏览量
59380 -
CW32
+关注
关注
1文章
281浏览量
1686 -
武汉芯源
+关注
关注
1文章
67浏览量
681
发布评论请先 登录
相关推荐
热点推荐
基于芯源CW32F030 MCU低功耗温湿度监测系统设计
的项目。
系统概述
功能描述:实时监测环境温湿度,并通过串口输出结果。采用SHT30传感器进行数据采集。系统闲置时进入低功耗模式,延长电池寿命。
硬件组成:
MCU:CW32F030
温湿
发表于 12-03 06:20
用CW32F030做温湿度采集,ADC读数跳变超过±3LSB正常吗?
用CW32F030做温湿度采集,ADC读数跳变超过±3LSB正常吗?已排除传感器问题,参考电压用LDO单独供电还是波动明显,是否需要外接精密基准源?
发表于 11-20 07:47
CW32 MCU用什么IDE开发?
推荐使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE开发CW32 MCU应用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM则需要
发表于 11-12 07:52
CW32生态社区开发板二三事儿
目前已经有800多名小伙伴拿到体验到我们3款CW32L011相关的社区开发板我这里拿3款里面热度最高的口袋电源开发板CW32_PD_Pocket_Power 给大家汇报一下。
【上海晶珩睿莓1开发板试用体验】Home Assistant 物联网温湿度计
【上海晶珩睿莓1开发板试用体验】Home Assistant 物联网温湿度计
本文介绍了上海晶珩睿莓 1 开发板通过 AHT10 传感器实现环境温湿度
发表于 08-18 13:55
智能仓储:温湿度监控方案应用
随着仓储环境要求提高,温湿度监控对保障货物品质至关重要。本文介绍一个工厂仓库温湿度监控方案,利用温湿度变送器、LoRa技术和智能监测平台,为仓库业主提供高效、可靠的监测解决方案。仓库温湿度
用树莓派RP2350 DIY 桌面动态温湿度计
桌面动态温湿度计本文介绍了DFrobotBeetleRP2350开发板结合DHT11模块、锂电池模块、随机眨眼动画,实现OLED显示的桌面动态温湿度计的项目设计。一、项目介绍本项目包括工作原理:ADC电压
【道生物联TKB-620开发板试用】采集温湿度上报
【前言】
我提交的计划为冷链监控系统,因此采集温湿度是首要步骤。这篇将分享如何采集sht30并实现手动上报数据,在接收端打印出接收到的数据。
【硬件】
1、TKB-620开发板*2
2
发表于 04-18 15:06
制药车间温湿度数据采集监控管理方案
在制药生产过程中,温湿度对药品质量起着关键作用。不稳定的温湿度环境可能导致药品原料变质、药品制剂的稳定性下降,甚至影响药品的疗效和安全性。因此,构建一套精准、可靠的温湿度数据采集监控管理方案,对制药
工厂温湿度监控系统
与智能调控,旨在为工业领域提供一套全面、高效的温湿度管理解决方案。 工厂温湿度监控系统,结合工业生产环境的特殊性,在生产车间、仓库、实验室等关键区域部署传感器,实时采集工厂各区域的温湿度
库房温湿度监测系统
不可或缺的一部分,对于保障货物安全、维护存储品质具有重要意义。 组成与运行 库房温湿度监测系统是一种专门用于仓库环境温湿度监测的系统,结合传感器、数字通信、物联网、自动化控制等技术,通过集成传感器、数据采集器
远程温湿度实时监测系统应用方案
通信、云计算、大数据分析等技术。传感器作为系统的“眼睛”,负责实时采集环境中的温湿度数据。通过Wi-Fi、蓝牙、LoRa、NB-IoT等通讯方式,将传感器采集的数据传输至云端服务器。云平台负责接收、存储和处理传感器传输的数据。
医药仓库温湿度监控系统应用
。 医药仓库温湿度监控系统,结合物联网、无线通讯等技术,通过传感器全天候实时采集仓库内的温湿度数据,管理云平台对接收到的数据进行深入分析、处理,并以图表、曲线等形式直观展示温湿度变化趋

CW32饭盒派开发板温湿度采集
评论