DHT11除錯程式

2021-08-20 18:05:50 字數 2270 閱讀 9736

(一)主程式

while(1)

(二)模組除錯函式

#include "bsp_dht11.h"

#include "delay.h"

#include "bsp_485.h"

/** 函式名:dht11_gpio_config

* 描述  :配置dht11用到的i/o口

* 輸入  :無

* 輸出  :無

*/static void dht11_in_init(void)

/*** @brief 設定埠為輸出模式

*/static void dht11_out_init(void)

/*** @brief 初始化 dht11,並檢測,檢測成功返回 0,否則返回 1

*/static void dht11_rst(void)

/*** @brief 檢測 dht11,檢測成功返回 0,否則返回 1

*/static u8 dht11_check(void)

static u8 dht11_read_bit(void)

else 

return 0;

}/**

* @brief 從 dht11 讀取乙個位元組

*/static u8 dht11_read_byte(void)

return data;

}/*** @brief 從 dht11 讀取 8 位資料報

*/u8 temp[15];           //dht11資料傳送

void dht11_read_data(void)

while(!pain(0)); //等待 40 位資料輸出完後的 50us 低電平輸出結束

//此處不應該再加乙個50us的延時嗎?最後一bit資料傳送完畢後, dht11拉低匯流排

//50us,隨後匯流排由上拉電阻拉高進入空閒狀態

dht11_out_init();

paout(0) = 1;

if ((data_buff[0]+data_buff[1]+data_buff[2]+data_buff[3]) == data_buff[4])

delay_us(400); }}

(三).h檔案

#ifndef __dht11_h

#define__dht11_h

#include "stm32f10x.h"

#include "bsp_systick.h"

#include "sys.h"

#include "delay.h"

#define high  1

#define low   0

#define dht11_clk     rcc_apb2periph_gpioa

#define dht11_pin     gpio_pin_0                  

#define dht11_portgpioa

//帶參巨集,可以像內聯函式一樣使用,輸出高電平或低電平

#define dht11_data_out(a)if (a)\

gpio_setbits(gpioa,gpio_pin_0);\

else\

gpio_resetbits(gpioa,gpio_pin_0)

//讀取引腳的電平

#define  dht11_data_in()   gpio_readinputdatabit(gpioa,gpio_pin_0)

typedef struct

dht11_data_typedef;

//void dht11_gpio_config(void);

static void dht11_mode_ipu(void);

static void dht11_mode_out_pp(void);

uint8_t read_dht11(dht11_data_typedef *dht11_data);

static uint8_t read_byte(void);

static void dht11_in_init(void);

static void dht11_out_init(void);

static void dht11_rst(void);

static u8 dht11_check(void);

static u8 dht11_read_bit(void);

static u8 dht11_read_byte(void);

void dht11_read_data(void);

#endif /* __dht11_h */

DHT11程式設計

通訊協議 單匯流排 測量範圍 20 90 0 50 精度 5 2 data 資料引腳用於微處理器與dht11之間的通訊和同步,採用單匯流排資料格式,一次通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數部分用於以後擴充套件,現讀出為零。操作流程如下 一次完整的資料傳輸為40b...

DHT11程式分析和測試

本篇文章對於dht11進行測試,並且提供程式思路 先看一下dht11的資料 目前dht11讀出的濕度小數和溫度小數都為0 和dht11的版本有關 它採用單匯流排協議,但是和ds18b20的不同在於,它沒有複雜的控制位元組,以及裝置編碼,還有就是諸如eeprom和溫度上下限等特殊儲存功能,相比之下操作...

DHT11 模組的使用

dht11模組 資料線是單線雙向 一次完整的資料傳輸為40bit 高位先出 資料格式 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資料 8bit校驗和 資料傳送正確時校驗和資料等於 8bit濕度整數資料 8bit濕度小數資料 8bi溫度整數資料 8bit溫度小數資...