国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32+DHT11溫濕度傳感器(含完整代碼)

這篇具有很好參考價值的文章主要介紹了STM32+DHT11溫濕度傳感器(含完整代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言
DHT11數(shù)字溫濕度傳感器是一種數(shù)字信號輸出的溫濕度傳感器,具有高可靠性和長期穩(wěn)定性。它采用專用的數(shù)字模塊和溫濕度傳感技術(shù),提供準(zhǔn)確的溫濕度數(shù)據(jù)。傳感器內(nèi)部包含感濕元件和測溫元件,并與高性能單片機(jī)連接。因此,該傳感器具有優(yōu)異的品質(zhì)、快速響應(yīng)、抗干擾能力強(qiáng)和性價比高等特點(diǎn)。每個傳感器都在濕度校準(zhǔn)室中進(jìn)行精確校準(zhǔn),校準(zhǔn)系數(shù)以程序方式存儲在內(nèi)存中,用于信號處理過程。它采用單線制串行接口,方便系統(tǒng)集成。此外,它體積小、功耗低,信號傳輸距離可達(dá)20米以上,適用于各種應(yīng)用場合。

一、接口說明
建議連接線長度短于20米時用5K上拉電阻,大于20米時根據(jù)實(shí)際情況使用合適的上拉電阻。

1 接線圖

stm32dht11程序,stm32,嵌入式硬件,單片機(jī)
2 電源引腳
DHT11的供電電壓為3~5.5 V。傳感器上電后,要等待 1s 以越過不穩(wěn)定狀態(tài),在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。

三、測量分辨率與電氣特性
測量分辨率分別為 8bit(溫度)、8bit(濕度)。
VDD=5V,T = 25℃,除非特殊標(biāo)注

四、使用注意事項

  1. 如果工作條件超出建議范圍,可能會導(dǎo)致臨時性漂移信號和傳感器老化?;謴?fù)處理可以加速恢復(fù)過程。
  2. 化學(xué)物質(zhì)會干擾傳感器的感應(yīng)層,導(dǎo)致測量值漂移和靈敏度下降。高濃度的化學(xué)污染可能會損壞感應(yīng)層。
  3. 恢復(fù)處理程序可以將傳感器恢復(fù)到校準(zhǔn)狀態(tài),通過在特定濕度和溫度條件下保持一段時間實(shí)現(xiàn)。
  4. 溫度會影響濕度傳感器的測量結(jié)果,所以應(yīng)盡量保持傳感器在相同溫度下工作,避免與釋放熱量的電子元件靠近。
  5. 長時間暴露在太陽光或紫外線下,會降低傳感器性能。
  6. DATA信號線的質(zhì)量會影響通訊距離和質(zhì)量,建議使用高質(zhì)量的屏蔽線。

五、DHT11驅(qū)動程序
1 DHT11.c
1.1 配置輸入輸出GPIO
stm32dht11程序,stm32,嵌入式硬件,單片機(jī)
1.2 復(fù)位DHT11
復(fù)位DHT11就是發(fā)送DHT11起始信號,告訴傳感器通訊開始。
stm32dht11程序,stm32,嵌入式硬件,單片機(jī)
1.3 檢查DHT11是否正常
檢查DHT11是否正常,正常的話會在單片機(jī)發(fā)送起始信號完成后,傳感器返回80us低電平,然后發(fā)送80us高電平。即證明DHT11工作正常,該函數(shù)工作正常返回0,否則返回1,該函數(shù)中利用了while循環(huán)檢測在一定時間內(nèi)的電平變化,此類用法在后面也會經(jīng)常用到。

stm32dht11程序,stm32,嵌入式硬件,單片機(jī)

1.4 DHT11初始化
在上電后,對IO端口初始化,和檢查DHT11狀態(tài)。需要特別指出的是,在上電后到對DHT11初始化前應(yīng)有1s的穩(wěn)定期,等待傳感器穩(wěn)定。可以在單片機(jī)上電后采用1s延時處理。
stm32dht11程序,stm32,嵌入式硬件,單片機(jī)

1.5 讀取一位數(shù)據(jù)(返回值0/1)
該函數(shù)采用兩個while循環(huán)是等待每個周期的電平變化,先等待低電平到來,后等待高電平到來,延時40us后判斷引腳電平,來判斷該位數(shù)據(jù)為1或0。之所以是40微秒是因?yàn)閭鞲衅鲾?shù)字0的信號持續(xù)時間為26-28us,數(shù)字1的信號持續(xù)時間為70us,選擇一個中值來區(qū)分兩種信號,當(dāng)然也可以選擇其他值,但最好在40us附近,在while循環(huán)中選擇循環(huán)100次也就是100us,是因?yàn)榉乐巩?dāng)單片機(jī)由于某些原因遲遲收不到傳感器電平信號,造成死機(jī)。

stm32dht11程序,stm32,嵌入式硬件,單片機(jī)

1.6 讀取一個字節(jié)(返回值:讀到的數(shù)據(jù))
循環(huán)讀入一個字節(jié)的數(shù)據(jù),并將每一步新加入的數(shù)據(jù)放置在最低位。

stm32dht11程序,stm32,嵌入式硬件,單片機(jī)

1.7 讀取DHT11數(shù)據(jù)(讀取成功返回0,失敗返回1)
讀取數(shù)據(jù)將數(shù)據(jù)存入數(shù)組,這里僅保留了溫度數(shù)據(jù)的整數(shù)位,注意數(shù)據(jù)較驗(yàn)方法,校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù) +8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
stm32dht11程序,stm32,嵌入式硬件,單片機(jī)

1.8 完成版.c文件文章來源地址http://www.zghlxwxcb.cn/news/detail-844480.html

#include "stm32f10x.h"                  // Device header
#include "DHT11.h"
#include "Delay.h"

void DHT11_IO_OUT (void){ //溫濕度模塊輸出函數(shù)
	
	GPIO_InitTypeDef  GPIO_InitStructure; 	
    GPIO_InitStructure.GPIO_Pin = DHT11_IO; //選擇端口號(0~15或all)                        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出       
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //設(shè)置IO接口速度(2/10/50MHz)    
	GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
}

void DHT11_IO_IN (void){ //溫濕度模塊輸入函數(shù)
	GPIO_InitTypeDef  GPIO_InitStructure; 	
    GPIO_InitStructure.GPIO_Pin = DHT11_IO; //選擇端口號(0~15或all)                        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入      
	GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
}

void DHT11_RST (void){ 						//DHT11端口復(fù)位,發(fā)出起始信號(IO發(fā)送)
	DHT11_IO_OUT();							//端口為輸出
	GPIO_ResetBits(DHT11_PORT,DHT11_IO); 	//使總線為低電平
	Delay_ms(20); 							//拉低至少18ms						
	GPIO_SetBits(DHT11_PORT,DHT11_IO); 		//使總線為高電平							
	Delay_us(30); 							//主機(jī)拉高20~40us
}

u8 DHT11_Check(void){ 	//等待DHT11回應(yīng),返回1:未檢測到DHT11,返回0:成功(IO接收)	   
    u8 retry=0;			//定義臨時變量
    DHT11_IO_IN();		//IO到輸入狀態(tài)	 
//GPIO端口輸入時,配置為上拉輸入或者浮空輸入,因?yàn)橥饨由侠娮瑁阅J(rèn)為高電平
//如果DHT11的數(shù)據(jù)線輸入為高電平,且 retry 小于100,則將 retry 加1,并延時1微秒,重復(fù)這個過程直到 retry 大于等于100 或者DHT11的數(shù)據(jù)線輸入變成低電平。如果 retry 大于等于100,表示檢測失敗,返回1;否則,將 retry 重置為0。
	while ((GPIO_ReadInputDataBit(DHT11_PORT,DHT11_IO) == 1) && retry<100)	//DHT11會拉低40~80us
	{
		retry++;
        Delay_us(1);
    }
    if(retry>=100)return 1; 	
	else retry=0;
//如果DHT11的數(shù)據(jù)線輸入為低電平,且 retry 小于100,則將 retry 加1,并延時1微秒,重復(fù)這個過程直到 retry 大于等于100 或者DHT11的數(shù)據(jù)線輸入變成高電平。如果 retry 大于等于100,表示檢測失敗,返回1;否則,返回0,表示檢測成功。
    while ((GPIO_ReadInputDataBit(DHT11_PORT,DHT11_IO) == 0) && retry<100)  //DHT11拉低后會再次拉高40~80us
	{  
        retry++;
        Delay_us(1);
    }
    if(retry>=100)return 1;	    
    return 0;
}

u8 DHT11_Init (void){	//DHT11初始化
	RCC_APB2PeriphClockCmd(DHT11_RCC,ENABLE);	//開始DHT11的時鐘
	DHT11_RST();								//DHT11端口復(fù)位,發(fā)出起始信號
	return DHT11_Check(); 						//等待DHT11回應(yīng)
}

//從DHT11讀取一個位
//返回值:1/0
u8 DHT11_Read_Bit(void)
{
    u8 retry = 0;
    while((GPIO_ReadInputDataBit(DHT11_PORT,DHT11_IO) == 1) && retry < 100) //等待變?yōu)榈碗娖?/span>
    {
        retry++;
        Delay_us(1);
    }
    retry = 0;
    while((GPIO_ReadInputDataBit(DHT11_PORT,DHT11_IO) == 0) && retry < 100) //等待變高電平
    {
        retry++;
        Delay_us(1);
    }
    Delay_us(40);//等待40us
    if(GPIO_ReadInputDataBit(DHT11_PORT,DHT11_IO) == 1)       //用于判斷高低電平,即數(shù)據(jù)1或0
        return 1;
    else
        return 0;
}

//從DHT11讀取一個字節(jié)
//返回值:讀到的數(shù)據(jù)
u8 DHT11_Read_Byte(void)
{
    u8 i, dat;
    dat = 0;
    for (i = 0; i < 8; i++)
    {
        dat <<= 1;					//左移運(yùn)算符,dat左移1位
        dat |= DHT11_Read_Bit();	//"|"表示按位或等于
    }
    return dat;
}

//從DHT11讀取一次數(shù)據(jù)
//temp:溫度值(范圍:0~50°)
//humi:濕度值(范圍:20%~90%)
//返回值:0,正常;1,讀取失敗
u8 DHT11_Read_Data(u8 *temp, u8 *humi)
{
    u8 buf[5];
    u8 i;
    DHT11_RST();						//DHT11端口復(fù)位,發(fā)出起始信號
    if(DHT11_Check() == 0)				//等待DHT11回應(yīng),0為成功回應(yīng)
    {
        for(i = 0; i < 5; i++) 			//讀取40位數(shù)據(jù)
        {
            buf[i] = DHT11_Read_Byte();	//讀出數(shù)據(jù)
        }
        if((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])	//數(shù)據(jù)校驗(yàn)
        {
            *humi = buf[0];				//將濕度值放入指針humi
            *temp = buf[2];				//將溫度值放入指針temp
        }
    }
    else return 1;
    return 0;
}



到了這里,關(guān)于STM32+DHT11溫濕度傳感器(含完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 玩轉(zhuǎn)傳感器——DHT11溫濕度傳感器(STM32版)

    玩轉(zhuǎn)傳感器——DHT11溫濕度傳感器(STM32版)

    DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機(jī)相連接。因此該產(chǎn)

    2024年02月03日
    瀏覽(27)
  • STM32+DHT11采集溫濕度傳感器數(shù)據(jù)

    STM32+DHT11采集溫濕度傳感器數(shù)據(jù)

    ????????DHT11 是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個電阻式測濕元件和一個 NTC 測溫元件,并與一個高性能 8 位單片機(jī)相連接。通過單片機(jī)等微處理器簡單的電路連接就能夠 實(shí)時的采集本地濕度和溫度。 DHT11 與單片機(jī)之間能采用簡單的單總線進(jìn)行通信,僅

    2024年02月07日
    瀏覽(39)
  • 【STM32(HAL庫)--DHT11溫濕度傳感器】

    【STM32(HAL庫)--DHT11溫濕度傳感器】

    stm32控制DHT11溫濕度傳感器,進(jìn)行溫濕度的讀取.以下是自己的一點(diǎn)學(xué)習(xí)過程和心得,若有不妥之處,還望各位大佬指正,在下感激不盡. DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器 。 它應(yīng)用專用的數(shù)字模塊采集技術(shù)溫濕度傳感技術(shù), 確保產(chǎn)品具有極高

    2024年04月15日
    瀏覽(28)
  • STM32+DHT11溫濕度傳感器(含完整代碼)

    STM32+DHT11溫濕度傳感器(含完整代碼)

    前言 DHT11數(shù)字溫濕度傳感器是一種數(shù)字信號輸出的溫濕度傳感器,具有高可靠性和長期穩(wěn)定性。它采用專用的數(shù)字模塊和溫濕度傳感技術(shù),提供準(zhǔn)確的溫濕度數(shù)據(jù)。傳感器內(nèi)部包含感濕元件和測溫元件,并與高性能單片機(jī)連接。因此,該傳感器具有優(yōu)異的品質(zhì)、快速響應(yīng)、抗

    2024年04月08日
    瀏覽(28)
  • 【STM32】DHT11溫濕度模塊傳感器詳解&代碼

    【STM32】DHT11溫濕度模塊傳感器詳解&代碼

    DHT11是數(shù)字溫濕度傳感器,測量范圍:濕度20%-95%,溫度0-50℃,廣泛應(yīng)用于加濕器、溫濕度計、空調(diào)、汽車等領(lǐng)域。 如上圖DATA引腳用于MCU與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右(超時時間的判斷)。一次完整的數(shù)據(jù)傳輸為40bit,高位先出(MSB最高

    2024年02月12日
    瀏覽(20)
  • [STM32]HAL庫STM32CubeMX+DHT11溫濕度傳感器

    [STM32]HAL庫STM32CubeMX+DHT11溫濕度傳感器

    目錄 所用的工具: 知識概括: DHT11介紹: DHT11性能說明: 接口說明 ?電源引腳 串行接口?? 工程創(chuàng)建 1、設(shè)置RCC 2、時鐘設(shè)置 3、項目文件設(shè)置 4、設(shè)置IO口(DATA) 5、TIM時鐘配置 6、USART配置 ? 程序編寫: ? ? ? ???1、TIM3實(shí)現(xiàn)微秒(us)級延時函數(shù): 2、IO口配置 3、DHT11檢測

    2024年02月09日
    瀏覽(30)
  • STM32F4_DHT11數(shù)字溫濕度傳感器

    STM32F4_DHT11數(shù)字溫濕度傳感器

    目錄 前言 1. DHT11簡介 2. DHT11數(shù)據(jù)結(jié)構(gòu) 3. DHT11的傳輸時序 3.1 DHT11開始發(fā)送數(shù)據(jù)流程 3.2 主機(jī)復(fù)位信號和DHT11響應(yīng)信號 3.3 數(shù)字 “0” 信號表示方法 3.4 數(shù)字 “1” 信號表示方法 4. 硬件分析 5. 實(shí)驗(yàn)程序詳解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h ????????DHT11數(shù)字溫濕度傳感器 不但能測溫度

    2024年02月08日
    瀏覽(88)
  • Clion開發(fā)Stm32之溫濕度傳感器(DHT11)驅(qū)動編寫

    涵蓋之前文章: Clion開發(fā)STM32之HAL庫GPIO宏定義封裝(最新版) Clion開發(fā)stm32之微妙延遲(采用nop指令實(shí)現(xiàn)) Clion開發(fā)STM32之日志模塊(參考RT-Thread) 頭文件 源文件

    2024年02月15日
    瀏覽(26)
  • (STM32F103單片機(jī))DHT11溫濕度傳感器

    (STM32F103單片機(jī))DHT11溫濕度傳感器

    目錄 ? 一,產(chǎn)品介紹 二,產(chǎn)品亮點(diǎn) 三,產(chǎn)品參數(shù) 四,引腳連接及通信說明 ?五,原理講解 六,源碼 1,DHR11.C 2.DHR11.H 3,main.c DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高

    2023年04月08日
    瀏覽(28)
  • ESP32單片機(jī)使用DHT11溫濕度傳感器的實(shí)踐與代碼解析

    摘要:本文將介紹如何使用ESP32單片機(jī)與溫濕度傳感器進(jìn)行連接和數(shù)據(jù)讀取。通過實(shí)例代碼的解析,幫助讀者了解實(shí)現(xiàn)溫濕度檢測的原理和方法。 一、引言 ESP32是一款功能強(qiáng)大的微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居等領(lǐng)域。在許多應(yīng)用場景中,溫濕度傳感器是不可或缺的

    2024年02月21日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包