(一)主程式
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溫度小數資...