51xlf 发表于 2022-8-14 22:39

【AT-START-WB415测评】DHT11温湿度读取

这里使用AT-START-WB415测试板子读取DHT11温湿度传感器数据,并显示在OLED上。
在前面的测评中已经添加了OLED的显示功能。
这里只是使用DHT11实现温湿度数据的读取功能了。
为了提供工作效率,还是使用的宏定义实现的DHT11的IO口的操作。
DHT11对演示函数有着精确的要求,所以这里使用的是系统自带的延时代码,使用systick实现的 。
如果systick被占用,可以使用定时器失效相同的效果的。
直接宏定义温湿度传感器的IO口。
#define DHT11_IO_GPIO_Port GPIOA
#define DHT11_IO_Pin GPIO_PINS_1驱动IO的高低电平和读取数据
//设置驱动IO端口
#define DHT11_DQ_OUT_1 DHT11_IO_GPIO_Port->scr = DHT11_IO_Pin
#define DHT11_DQ_OUT_0 DHT11_IO_GPIO_Port->clr = DHT11_IO_Pin
#define DHT11_DQ_IN gpio_input_data_bit_read(DHT11_IO_GPIO_Port, DHT11_IO_Pin)最重要的是初始化IO口了。

          gpio_init_type gpio_init_struct;

/* enable the led clock */
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);

/* set default parameter */
gpio_default_para_init(&gpio_init_struct);

/* configure the gpio */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type= GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = DHT11_IO_Pin;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(DHT11_IO_GPIO_Port, &gpio_init_struct);很多的代码都是千篇一律的,主要是延时函数。
at32wb415_board.c的文件中已经提供了精确延时函数,这里只需要宏定义或者替换一下即可。
void delay_us(uint32_t nus)
{
uint32_t temp = 0;
SysTick->LOAD = (uint32_t)(nus * fac_us);
SysTick->VAL = 0x00;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ;
do
{
    temp = SysTick->CTRL;
}while((temp & 0x01) && !(temp & (1 << 16)));

SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL = 0x00;
}

这里就是现实的主函数了。
if(!dht11Read(&temperature, &humidity))//Read DHT11 Value
      {
            sprintf(s_temp,"温:%02d'C 湿:%02d%%",temperature,humidity);
            OLED_ShowString(0,32,(unsigned char*)s_temp,1);// 显示温湿度

      }附上效果图。


koala889 发表于 2022-8-16 20:17

哈,有是一个DHT11

jkl21 发表于 2022-8-20 14:30

这个有什么要求?

uiint 发表于 2022-8-20 16:35

WB415是无线的吗   

soodesyt 发表于 2022-8-20 19:42

dht11精度怎么样   

tpgf 发表于 2022-9-6 13:04

这里需要做补偿吗

nawu 发表于 2022-9-6 13:10

自己做飞线的话 会偶尔有干扰吗

aoyi 发表于 2022-9-6 20:47

读取的模拟量还是通讯协议啊

zljiu 发表于 2022-9-6 20:56

一般这个温度传感器的功耗是多少呢

gwsan 发表于 2022-9-6 21:02

只需要读取高低电平就能得到温湿度的数据吗

tfqi 发表于 2022-9-6 21:09

通过什么方式读取的数据呢

xu@xupt 发表于 2022-12-11 00:19

不错的尝试,感谢分享{:biggrin:}
页: [1]
查看完整版本: 【AT-START-WB415测评】DHT11温湿度读取