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

    文章

    9

    浏览量

    7750
  • DHT11
    +关注

    关注

    19

    文章

    278

    浏览量

    60022
  • CW32
    +关注

    关注

    1

    文章

    326

    浏览量

    1965
  • 武汉芯源
    +关注

    关注

    2

    文章

    67

    浏览量

    755
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    昉·星光开发板温湿度传感器使用

    本次课程为昉·星光开发板IoT开发系列课程的第三讲,将带领同学们在昉·星光开发板上,使用SHT3X温湿度传感器。 一、学习目标 学习昉·星光开发
    发表于 03-26 07:48

    使用STM32F103ZET6采集DHT11温湿度串口显示

    DHT11是一款数字温湿度传感器,DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有可靠的稳定性,响应快,抗干扰能力强
    的头像 发表于 03-18 17:06 3719次阅读
    使用STM32F103ZET6<b class='flag-5'>采集</b>DHT11<b class='flag-5'>温湿度</b>串口显示

    星鸿——开源星闪开发板上线!首批试用申请中~

    按键,另外还有温湿度模块用以检测温湿度。”星鸿(海思WS63V100)扫码入群,获取试用链接概览星鸿是一款面向创客、学生、嵌入式开发者的
    的头像 发表于 01-27 08:04 814次阅读
    星鸿<b class='flag-5'>派</b>——开源星闪<b class='flag-5'>开发板</b>上线!首批试用申请中~

    CW32F030开发板的工程模板

    温湿度实验 EX9AD电位器实验 其中 Libraries是CW32官方的库函数文件,类似STM32的标准库或者HAL库,非常重要的东西。 CW32-48F大学计划源码工程文件结
    发表于 12-26 08:08

    【瑞萨RA6E2地奇星开发板试用】DHT11 测量温湿度

    使用瑞萨 RA6E2 微控制器,实现 DHT11 温湿度传感器的数据采集,并通过 I2C 接口的 OLED12864 显示屏实时显示数据。 硬件准备​ 核心:瑞萨 RA6E2 地奇星开发板
    发表于 12-19 18:50

    基于芯源CW32F030 MCU低功耗温湿度监测系统设计

    的项目。 系统概述 功能描述:实时监测环境温湿度,并通过串口输出结果。采用SHT30传感器进行数据采集。系统闲置时进入低功耗模式,延长电池寿命。 硬件组成: MCU:CW32F030 温湿
    发表于 12-03 06:20

    使用芯源CW32CW32L012开发评估做了spi屏幕驱动

    CW32生态社区以极高的性价比入手了这块CW32L012开发评估开发板以底板、核心、1.
    的头像 发表于 11-21 11:34 824次阅读
    使用芯源<b class='flag-5'>CW32</b>的<b class='flag-5'>CW</b>32L012<b class='flag-5'>开发</b>评估<b class='flag-5'>板</b>做了spi屏幕驱动

    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 给大家汇报一下。
    的头像 发表于 10-14 17:01 746次阅读
    <b class='flag-5'>CW32</b>生态社区<b class='flag-5'>开发板</b>二三事儿

    【上海晶珩睿莓1开发板试用体验】Home Assistant 物联网温湿度

    【上海晶珩睿莓1开发板试用体验】Home Assistant 物联网温湿度计 本文介绍了上海晶珩睿莓 1 开发板通过 AHT10 传感器实现环境温湿度
    发表于 08-18 13:55

    温湿度变送器功能有哪些?一文详细解析

    对于很多行业来说,精确的测量以及控制温度和湿度至关重要。想要达到这个目的,往往需要用到温湿度变送器。那么,温湿度变送器究竟有哪些功能呢?下面为大家详细介绍。 一、精确测量温湿度
    发表于 06-03 10:56

    智能仓储:温湿度监控方案应用

    随着仓储环境要求提高,温湿度监控对保障货物品质至关重要。本文介绍一个工厂仓库温湿度监控方案,利用温湿度变送器、LoRa技术和智能监测平台,为仓库业主提供高效、可靠的监测解决方案。仓库温湿度
    的头像 发表于 05-29 11:35 942次阅读
    智能仓储:<b class='flag-5'>温湿度</b>监控方案应用

    用树莓RP2350 DIY 桌面动态温湿度

    桌面动态温湿度计本文介绍了DFrobotBeetleRP2350开发板结合DHT11模块、锂电池模块、随机眨眼动画,实现OLED显示的桌面动态温湿度计的项目设计。一、项目介绍本项目包括工作原理:ADC电压
    的头像 发表于 05-27 08:05 1120次阅读
    用树莓<b class='flag-5'>派</b>RP2350 DIY 桌面动态<b class='flag-5'>温湿度</b>计

    LoRa无线技术的温湿度监测预警系统

    LoRa无线技术的温湿度监测预警系统采用LoRa采集器和LoRa网关实现监控区域内的全覆盖,同时在仓储区各个数据采集节点安装温湿度传感器,实现对监测区域的
    的头像 发表于 05-14 16:06 1006次阅读
    LoRa无线技术的<b class='flag-5'>温湿度</b>监测预警系统