0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

华仔的编程随笔 来源:华仔的编程随笔 作者:华仔的编程随笔 2023-05-26 19:20 次阅读

实验器材

  1. CW32饭盒派开发板
  2. DHT11温湿度传感器

接线

开发板 DHT11
VCC +
GND GND
PB1 OUT

程序

  1. 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

接好线后,把程序下载到开发板,然后重启效果如下:

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 温湿度采集
    +关注

    关注

    0

    文章

    8

    浏览量

    7534
  • DHT11
    +关注

    关注

    19

    文章

    277

    浏览量

    57592
  • CW32
    +关注

    关注

    1

    文章

    203

    浏览量

    640
  • 武汉芯源
    +关注

    关注

    1

    文章

    66

    浏览量

    255
收藏 人收藏

    评论

    相关推荐

    CW32模块使用 SHT30温湿度传感器

    资料文件 三、移植过程 我们的目标是将例程移植至CW32F030C8T6开发板上【测量温湿度的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。 3.1查看资
    的头像 发表于 11-14 17:39 211次阅读
    <b class='flag-5'>CW32</b>模块使用 SHT30<b class='flag-5'>温湿度</b>传感器

    基于CW32模块的SHT30温湿度传感器设计

    我们的目标是将例程移植至CW32F030C8T6开发板上【测量温湿度的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
    的头像 发表于 11-12 11:14 295次阅读
    基于<b class='flag-5'>CW32</b>模块的SHT30<b class='flag-5'>温湿度</b>传感器设计

    LORA无线温湿度监测系统

    仓储、农业、机房等多种应用场景,提供高效、可靠的解决方案。 部分组成 LORA温湿度传感器:作为系统的前端采集设备,实时捕捉环境中的温湿度数据。LORA温湿度传感器的传输距离远,视距可
    的头像 发表于 11-07 16:57 334次阅读

    关于Air780E:使用文件系统存储温湿度数据怎么操作?

    的使用-程序源码demo 780E开发板和DHT11 合宙的TCP/UDP测试服务器 API使用介绍 ​ 1.2 程序解析 (1):首先采集温湿度数据 --采集
    的头像 发表于 10-31 07:26 159次阅读
    关于Air780E:使用文件系统存储<b class='flag-5'>温湿度</b>数据怎么操作?

    低功耗4G模组Air780E快速入门:使用文件系统存储温湿度数据

    LuatOS-Air780E-文件系统的使用-程序源码demo 合宙的TCP/UDP测试服务器 API使用介绍 780E开发板和DHT11 ​ 1.2 程序详解 第一步:首先采集温湿度数据 --
    的头像 发表于 10-19 21:34 372次阅读
    低功耗4G模组Air780E快速入门:使用文件系统存储<b class='flag-5'>温湿度</b>数据

    Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集

    Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集
    的头像 发表于 10-08 11:46 609次阅读
    Arduino Nano 和 DHT11 实现 LabVIEW <b class='flag-5'>温湿度</b><b class='flag-5'>采集</b>

    CW32模块使用 DHT11温湿度传感器

    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。其成本低、长期稳定、可以测量相对湿度和温度测量,并可以只使用一根数据线进行温湿度
    的头像 发表于 09-09 18:21 1341次阅读
    <b class='flag-5'>CW32</b>模块使用 DHT11<b class='flag-5'>温湿度</b>传感器

    温湿度监测解决方案

    。对于维护环境稳定、保障生产安全、提升生活质量具有重要意义。 温湿度监测解决方案,融入物联网、无线通讯等威廉希尔官方网站 ,通过温湿度传感器、智能采集器等感知设备,实时采集环境中的温度和
    的头像 发表于 09-04 17:16 344次阅读

    温湿度监测系统应用

    、可靠的温湿度监测系统显得尤为重要。 温湿度监测系统,通过温度传感器、智能控制终端等硬件设备,与管理云平台组成高精度传感器网络,在线采集室内温湿度变化情况,联动空调等设备,以数字形式打
    的头像 发表于 07-26 16:15 406次阅读

    库房温湿度自动监测系统

    仓储、库房在管理上,环境控制都是重中之重。库房温湿度自动监测系统作为一种更为便捷的解决方案,已经得到广泛的应用。 库房温湿度自动监测系统通过集成传感器、数据采集器、传输设备和管理平台等硬件设备,实现
    的头像 发表于 07-09 18:00 704次阅读

    想要准确地测量环境温湿度温湿度传感器是关键!

    温湿度是生产生活中最重要的环境指标之一,不仅人需要在适宜的温湿度条件下保持良好的精神状态和敏捷的思维,食品、药品、各种仪器设备等都对环境温湿度有特殊的要求。基于对环境温湿度的要求,
    的头像 发表于 07-04 08:48 566次阅读

    无线温湿度监控系统

    解决方案,在需要监控的区域部署传感器节点,实时感知环境温湿度数据,利用无线传感器网络,对环境温湿度的实时采集和传输,上传至监控中心或云平台,用户进行远程查看和管理。一旦数据被采集,自动
    的头像 发表于 05-30 16:43 762次阅读

    项目分享|基于ELF 1开发板的MQTT远程温湿度监测系统

    今天非常荣幸向各位小伙伴详细展示一个由共创社成员完成的MQTT远程温湿度监控系统项目。该项目借助ELF1开发板作为核心威廉希尔官方网站 支撑,成功实现了对各类环境空间中温湿度数据的实时、远程、稳定监测。该系统不仅
    的头像 发表于 04-26 09:54 501次阅读
    项目分享|基于ELF 1<b class='flag-5'>开发板</b>的MQTT远程<b class='flag-5'>温湿度</b>监测系统

    CW32快速开发入门

    CW32快速开发入门
    的头像 发表于 04-24 18:56 1964次阅读
    <b class='flag-5'>CW32</b>快速<b class='flag-5'>开发</b>入门

    温湿度传感器工作原理 温湿度传感器的接线方法

    温湿度传感器是一种用于测量环境温度和相对湿度的装置。它通常用于工业、农业、气象、室内空调等领域。本文将详细介绍温湿度传感器的工作原理和接线方法。 一、温湿度传感器的工作原理
    的头像 发表于 02-14 18:00 9477次阅读