娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月10日(星期二)

正在發(fā)生

2021年09月10日 | STM32學習之傳感器篇——DHT11溫濕度傳感器

發(fā)布者:快樂的小鳥 來源: eefocus關(guān)鍵字:STM32  DHT11  溫濕度傳感器 手機看文章 掃描二維碼
隨時隨地手機看文章

1、DHT11傳感器簡介

DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測型號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為該類應用甚至最為苛刻的應用場合的最佳選擇。產(chǎn)品為4針單排引腳封裝,連接方便。

傳感器特性


供電電壓: 3.3~5.5V DC ;    輸 出: 單總線數(shù)字信號 ;    測量范圍: 濕度20-90%RH, 溫度0~50℃ ;   測量精度: 濕度+-5%RH, 溫度+-2℃;   分 辨 率: 濕度1%RH, 溫度1℃;  互 換 性: 可完全互換 ; 長期穩(wěn)定性: <±1%RH/年;                           

image.png

電氣特性

image.png

引腳說明

image.png

2、編程解讀

2.1、DHT11data數(shù)據(jù)格式: (高位先出)


 一次傳輸40位數(shù)據(jù)=8bit濕度整數(shù)數(shù)據(jù) + 8bit濕度小數(shù)數(shù)據(jù) + 8bit溫度整數(shù)數(shù)據(jù) + 8bit溫度小數(shù)數(shù)據(jù) + 8bit校驗和。數(shù)據(jù)傳送正確時,校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。


用戶MCU發(fā)送一次開始信號后,DHT11從低功耗轉(zhuǎn)換到高速模式,等待主機開始信號結(jié)束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù),從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集,采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。

2.2、時序編程


起步時序


總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結(jié)束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結(jié)束后,延時等待20-40us后, 讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可, 總線由上拉電阻拉高。

數(shù)據(jù)接收時序


總線為低電平,說明DHT11發(fā)送響應信號,DHT11發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,請檢查線路是否連接正常.當最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。


數(shù)字0信號表示方法

數(shù)字1信號表示方法

3、DHT11通信流程及代碼

3.1、簡單通訊流程


第一步初始化IO口 完成起步時序 檢查DHT11是否存在


第二部主機信號線拉高準備接收數(shù)據(jù),依次接收40位


3.2主要程序部分


dht11.h部分代碼


#ifndef _dht11_h

#define _dht11_h

 

#include "system.h"

#include "SysTick.h"


#define DHT11 (GPIO_Pin_4) //PA4

#define GPIO_DHT11 GPIOA

#define DHT11_DQ_IN PAin(4)   //輸入

#define DHT11_DQ_OUT PAout(4)  //輸出

void DHT11_IO_OUT(void);

void DHT11_IO_IN(void);

u8 DHT11_Init(void);

void DHT11_Rst(void);

u8 DHT11_Check(void);

u8 DHT11_Read_Bit(void);

u8 DHT11_Read_Byte(void);

u8 DHT11_Read_Data(u8 *temp,u8 *humi);

 

#endif

dht11.c部分代碼


#include "stm32f10x.h"                  // Device header

#include "dht11.h"

/*******************************************************************************

* 函 數(shù) 名         : DHT11_Init()

* 函數(shù)功能      : DHT11初始化 

* 引    腳         : PA4

* 輸    出         : 返回0:初始化成功,1:失敗

*******************************************************************************/

u8 DHT11_Init()

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin=DHT11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);

GPIO_SetBits(GPIO_DHT11,DHT11);    //拉高

DHT11_Rst();   

return DHT11_Check();

}

/*******************************************************************************

* 函 數(shù) 名         : DHT11_Rst(),DHT11_Check() 

* 函數(shù)功能      : 復位DHT11,檢測DHT11

* 引    腳         : PA4

* 輸    出         ://返回1:未檢測到DHT11的存在,返回0:存在

*******************************************************************************/

void DHT11_Rst()    

{                 

DHT11_IO_OUT(); //配置io口為輸出模式

    DHT11_DQ_OUT=0; //拉低DQ

    delay_ms(20);    //拉低至少18ms

    DHT11_DQ_OUT=1; //DQ=1 

delay_us(30);      //主機拉高20~40us

}

u8 DHT11_Check()    

{   

u8 retry=0;

DHT11_IO_IN();//配置io口為輸入模式 

    while (DHT11_DQ_IN&&retry<100)//高電平循環(huán),低電平跳出

{

retry++;

delay_us(1);

};  

if(retry>=100)return 1;

else retry=0;

    while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~50us

{

retry++;

delay_us(1);

};

if(retry>=100)return 1;     

return 0;

}

/*******************************************************************************

* 函 數(shù) 名         : DHT11_Read_Bit(void) 

* 函數(shù)功能      : 從DHT11讀取一個位

* 引    腳         : PA4

* 輸    出         :返回值:1/0

*******************************************************************************/

u8 DHT11_Read_Bit(void)  

{

  u8 retry=0;

while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?12-14us 開始

{

retry++;

delay_us(1);

}

retry=0;

while(!DHT11_DQ_IN&&retry<100)//等待變高電平 26-28us表示0,116-118us表示1

{

retry++;

delay_us(1);

}

delay_us(40);//等待40us

if(DHT11_DQ_IN)return 1;

else return 0;    

}

/*******************************************************************************

* 函 數(shù) 名         : DHT11_Read_Byte(void)

* 函數(shù)功能      : 從DHT11讀取一個字節(jié)

* 引    腳         : PA4

* 輸    出         :返回值:讀到的數(shù)據(jù)

*******************************************************************************/

u8 DHT11_Read_Byte(void)    

{        

    u8 i,dat;

    dat=0;

for (i=0;i<8;i++) 

{

    dat<<=1; 

    dat|=DHT11_Read_Bit();

    }     

    return dat;

}

/*******************************************************************************

* 函 數(shù) 名         : DHT11_Read_Data(u8 *temp,u8 *humi) 

* 函數(shù)功能      : 從DHT11讀取一次數(shù)據(jù)

* 引    腳         : PA4

* 輸    出         :返回值:0,正常;1,讀取失敗

*******************************************************************************/

u8 DHT11_Read_Data(u8 *temp,u8 *humi)    

{        

  u8 buf[5];

u8 i;

DHT11_Rst();

if(DHT11_Check()==0)

{

for(i=0;i<5;i++)//讀取40位數(shù)據(jù)

{

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輸出模式配置

void DHT11_IO_OUT()

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=DHT11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);

}

//DHT11輸入模式配置

void DHT11_IO_IN()

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=DHT11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉輸入模式

GPIO_Init(GPIO_DHT11,&GPIO_InitStructure);

}

mian.c代碼


#include

#include

#include "system.h"

#include "usart1.h"

#include "dht11.h"

 

 

int main()

{

u8 temperature;         

u8 humidity; 

u8 rx_buf[5];

SysTick_Init(72);   //系統(tǒng)時鐘初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優(yōu)先級分組 分2組

USART1_Init(9600);                    //串口初始化PA9,PA10

DHT11_Init();                         //DHT11初始化      引腳PA4PA6-MISO PA7-MOSI 

while(1)

{

DHT11_Read_Data(&temperature,&humidity);  

 

rx_buf[0]=temperature;

rx_buf[1]=humidity;

        printf("temp=%d,humi=%d",rx_buf[0],rx_buf[1]);   

delay_ms(20);

}

}

 

總結(jié)一下DHT11總體來說挺簡單的 只要清楚理解它的時序,就可以快速上手這款傳感器

關(guān)鍵字:STM32  DHT11  溫濕度傳感器 引用地址:STM32學習之傳感器篇——DHT11溫濕度傳感器

上一篇:基于STM32兩輪自平衡小車
下一篇:STM32F103C8T6+溫濕度傳感器DHT11實現(xiàn)溫濕度采集

推薦閱讀

近日,在集微網(wǎng)2018峰會上,寒武紀研究院院長杜子東介紹了關(guān)于寒武紀近期情況。杜子東表示,寒武紀前身2008年開始對人工智能架構(gòu)進行研究,直到2016年成立了寒武紀,用了八年時間將學術(shù)成果轉(zhuǎn)化為真正的產(chǎn)品,此后推動產(chǎn)品在社會的各個行業(yè)應用,也使得人工智能能夠真正落地,走向千家萬戶。寒武紀2013年發(fā)布了國際首個深度學習處理器架構(gòu),2014年又發(fā)布了...
目的 C語言,相對于匯編有更好的可讀性,便于維護等優(yōu)點。下面實驗將使用C語言實現(xiàn)點亮LED燈。C語言與硬件是緊密連在一起的,結(jié)合芯片中的flash和sram,簡單了解C語言。要求1.有一定的C語言基礎(chǔ)2.了解編譯鏈接腳本3.了解stm32F103的硬件結(jié)構(gòu)實驗源代碼在這下載,代碼中有詳細注釋! 分析1.首先了解硬件,如圖FLASH,就是存放.bin文件的地方。SRAM,用于存...
據(jù)日經(jīng)亞洲評論9月9日報道,中芯國際(SMIC)和中國第一家3D NAND閃存制造商長江存儲(Yangtze Memory Technologies)近期都制定了雄心勃勃的計劃,加緊測試自主研發(fā)生產(chǎn)線中的非美設(shè)備。 日經(jīng)亞洲評論列舉了一些新興中國芯片制造設(shè)備商 消息人士還告訴《日經(jīng)亞洲評論》,之前中芯國際從美國一家大型設(shè)備制造商——應用材料公司(Applied Materials)...
據(jù)外媒報道,高性能特種材料制造商Unifrax將于下周在密歇根州諾維市舉行的電池展上展示其最新產(chǎn)品SiFAB?硅纖維陽極電池技術(shù)。SiFAB技術(shù)是Unifrax于今年年初推出的專利技術(shù)。(圖片來源:Unifrax)Unifrax材料研究部門高級科學家兼經(jīng)理Bruce Zoitos將展示SiFAB經(jīng)歷高級測試后的數(shù)據(jù)。SiFAB在多個電池系統(tǒng)中均表現(xiàn)出良好的性能。SiFAB具有獨特的高容量性能...

史海拾趣

問答坊 | AI 解惑

關(guān)于水溫控制系統(tǒng)的問題

我現(xiàn)在正在做水溫控制系統(tǒng),要用到繼電器,不知道用什么型號好, 有經(jīng)驗的朋友,指點一下吧,謝謝…

查看全部問答∨

自家院子,選擇什么樣的報警裝置?

村子里,最近聽說周圍鄰居老是讓人偷。想自己安裝個報警,不知道用什么的好。 請大家指點。…

查看全部問答∨

如何使添加的用戶成為超級用戶?

我用useradd -G root -g root -d/home/arm arm添加一個arm用戶, 設(shè)置環(huán)境變量后重新以arm用戶登陸,為什么提示符還是$, 怎么可以變成 [arm@localhost arm]#…

查看全部問答∨

wince6.0 能否 直接操作IO地址

各位:       我現(xiàn)在的問題如下:       我現(xiàn)在手上有模擬輸入板卡,用的是研華的2718。準備用程序觸發(fā)的輪詢方式讀取板卡數(shù)據(jù)。       速率要求不高,一秒讀一次。過程是:程序向 ...…

查看全部問答∨

給推薦幾本關(guān)于485通信協(xié)議的好書

最近做關(guān)于485方面的通信設(shè)備,但第一次接觸,感覺比較迷惘,希望哪位大蝦給推薦幾本好書,謝謝?!?

查看全部問答∨

求助軟件mcu_ideV3.0

誰有mcu_ideV3.0,(裝上去之后自帶工具鏈,如keil c51,一共四種,就是有2KB代碼限制的哪個版本) 官網(wǎng)上下的沒有工具鏈,…

查看全部問答∨

(急?。。。ヾs18b20時序問題

幫我調(diào)下ARM+DS18b20時序,我調(diào)了半天調(diào)不出來。晶振11.0592??刂破鱈PC2131,串口和中斷不用看了。謝謝! 程序: #include "..\\\\basescr\\\\config.h" #include "stdio.h" #define DS1820_DQ 1<<7 //DQ腳接P0.2 #define  ...…

查看全部問答∨

不太急,附件,翻譯,,,問下

問下 白紙黑字的單頁   實驗產(chǎn)品免責聲明   關(guān)于 第三個 方框中 要求 3 個工作日內(nèi) 交回的簽名 ,   可以給個該頁的中文簡介?    我不能夠 無歧義 的 完整的理解 它。基本意思 有點懂。…

查看全部問答∨

pic ad轉(zhuǎn)換精度問題

如果用來檢測外部500V對應到an0口的電壓是1V,如果電壓的基準是5V,ad是10位的話,那么他的精度就是500V/(1024/5)對嗎?如果我把送到AN0的1V電壓在程序中放大5倍,是不是精度就變了呢?是提高5倍還是不變?請解答,謝謝…

查看全部問答∨

《運算放大器噪聲優(yōu)化手冊》閱讀【Ⅴ】 運放內(nèi)部噪聲

本帖最后由 dontium 于 2015-1-23 11:13 編輯 運放內(nèi)部噪聲是指運放自身具有的噪聲,與外圍電路無關(guān)。本章主要寫怎么分析運放內(nèi)部噪聲。運放內(nèi)部噪聲跟運放的輸入級有很大關(guān)系。雙極性與Jfet,cmos等差別很大。本章得出了一些結(jié)論性的文字, ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 精河县| 楚雄市| 和龙市| 顺义区| 儋州市| 黔江区| 奉贤区| 台北市| 敖汉旗| 株洲县| 庆城县| 临西县| 沂源县| 新兴县| 皮山县| 白沙| 长治县| 万年县| 榕江县| 台中县| 扎鲁特旗| 邵武市| 龙门县| 惠水县| 临夏县| 墨竹工卡县| 开远市| 江达县| 台东县| 阿拉尔市| 垣曲县| 启东市| 温州市| 诏安县| 甘孜| 延川县| 宁阳县| 合肥市| 安徽省| 玛沁县| 横峰县|