91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用STM32F103ZET6采集DHT11溫濕度串口顯示

jf_88434166 ? 來源:jf_88434166 ? 2026-03-18 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于DHT11

DHT11是一款數(shù)字溫濕度傳感器,DHT11是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有可靠的穩(wěn)定性,響應(yīng)快,抗干擾能力強(qiáng)。傳感器包括一個(gè)高分子電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接,通過單總線與微處理器通訊,只需要一根線。
主圖.png

相關(guān)參數(shù)

1、DHT11數(shù)據(jù)結(jié)構(gòu)
DHT11數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式。即,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5Byte(40Bit)組成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明。
一次完整的數(shù)據(jù)傳輸為40bit,高位先出。
數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和
校驗(yàn)和數(shù)據(jù)為前四個(gè)字節(jié)相加。
傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間
應(yīng)該分開處理。如果,某次從傳感器中讀取如下5Byte數(shù)據(jù):
在這里插入圖片描述
由以上數(shù)據(jù)格式可以得到溫濕度計(jì)算方法
humi (濕度)= byte4 . byte3=45.0 (%RH)
temp (溫度)= byte2 . byte1=28.0 ( ℃)
jiaoyan(校驗(yàn))= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校驗(yàn)正確)
2、DHT11傳輸數(shù)據(jù)時(shí)序
主機(jī)發(fā)送開始信號后,延時(shí)等待 20us-40us 后讀取 DH11T 的回應(yīng)信號,讀取總線為低電平,說明 DHT11 發(fā)送響應(yīng)信號,DHT11 發(fā)送響應(yīng)信號后,再把總線拉高,準(zhǔn)備發(fā)送數(shù)據(jù),每一 bit 數(shù)據(jù)都以低電平開始。
在這里插入圖片描述
3、DHT11的數(shù)字“0”和數(shù)字“1”表示方法
DHT11的數(shù)字0和數(shù)字1表示方式和常見的不同,一般的數(shù)據(jù)表示0的是低電平,表示1的是高電平,DHT11不同,開始傳輸數(shù)據(jù)之后他數(shù)字0的表示方式是高電平26-28us,數(shù)字1的表示方式是高電平116-118us。
在這里插入圖片描述

在這里插入圖片描述

代碼篇

本次實(shí)驗(yàn)定義的IO口是PB11,傳輸?shù)臄?shù)據(jù)是串口一
1、主機(jī)發(fā)送開始信號到DHT11即單片機(jī)拉低18ms之后再拉高20-40us

static void DHT11_Rst(void)
{                
		GPIO_SETOUT();											//配置成輸出模式
    GPIO_ResetBits(DHT11_IO,DHT11_PIN); //拉低數(shù)據(jù)線
    Delay_ms(20);    										//拉低至少18ms
    GPIO_SetBits(DHT11_IO,DHT11_PIN); 	//拉高數(shù)據(jù)線 
	  Delay_us(30);     									//主機(jī)拉高20~40us
		GPIO_ResetBits(DHT11_IO,DHT11_PIN);
}

2、DHT11發(fā)送響應(yīng)信號到主機(jī)(32單片機(jī)),DHT11的數(shù)據(jù)線會(huì)拉低40-50us的,在拉高40-50us,讓單片機(jī)的IO口檢測信號。

函數(shù)名:static u8 DHT11_Check(void)
參數(shù)說明:無
返回值:檢測到回應(yīng)-- >返回1,否則0
函數(shù)作用:檢測DHT11的響應(yīng)信號
***********************************************/
static u8 DHT11_Check(void) 	   
{   
	u8 retry=0;
	GPIO_SETIN();			//設(shè)置為輸入模式	
	
  while (!GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry< 100)//DHT11會(huì)拉低40~50us
	{
		retry++;
		Delay_us(1);
	}
	if(retry >= 100)	//超時(shí)未響應(yīng)/未收到開始信號,退出檢測
		return 0;
	else 
		retry = 0;
  while (GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry< 100)//DHT11拉低后會(huì)再次拉高40~50us
	{
		retry++;
		Delay_us(1);
	}
	if(retry >=100)		//超時(shí),DHT11工作出錯(cuò),退出檢測
		return 0;
	return 1;					//設(shè)備正常響應(yīng),可以正常工作
}

3、DHT11開始傳輸數(shù)據(jù)給單片機(jī),這有兩個(gè)傳輸數(shù)據(jù)的函數(shù),一個(gè)是傳輸字節(jié)的,在由傳輸字節(jié)的函數(shù)來寫傳輸一個(gè)8位字符串的函數(shù)。

函數(shù)名:static u8 DHT11_Read_Bit(void)
參數(shù)說明:無
返回值:返回從DHT11上讀取的一個(gè)Bit數(shù)據(jù)
函數(shù)作用:從DHT11上讀取一個(gè)Bit數(shù)據(jù)
***********************************************/
static u8 DHT11_Read_Bit(void)
{
 	u8 retry = 0;
	//DHT11的Bit開始信號為12-14us低電平
	while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry< 100)//等待變?yōu)榈碗娖?等待Bit開始信號)
	{
		retry++;
		Delay_us(1);
	}
	retry = 0;
	while(!GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry< 100)//等待變高電平(代表數(shù)據(jù)開始傳輸)
	{
		retry++;
		Delay_us(1);
	}
	Delay_us(30);//等待30us
	//0信號為26-28us,1信號則為116-118us,所以說超過30us去讀取引腳狀態(tài)就可以知道傳輸?shù)闹盗?/span>
	if(GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN)) return 1;
	else return 0;		   
}


/***********************************************************************
函數(shù)名:static u8 DHT11_Read_Byte(void)
參數(shù)說明:無
返回值:返回從DHT11上讀取的一個(gè)byte數(shù)據(jù)
函數(shù)作用:從DHT11上讀取一個(gè)byte數(shù)據(jù)
************************************************************************/
static u8 DHT11_Read_Byte(void)    
{        
  u8 i,dat;
  dat=0;
	
	for (i=0;i< 8;i++) 
	{
   	dat< <=1; 
	  dat|=DHT11_Read_Bit();
  }	
	
  return dat;
}

4、DHT11數(shù)據(jù)采集完畢之后通過主函數(shù)在串口顯示出來

函數(shù)名:int main(void)
參數(shù)說明:無
返回值:無
函數(shù)作用:主函數(shù)
***************************************************************************/
 int main(void)
 {	
	 
   clock_init();
	 uart_init(115200);		//初始化串口
	 printf("wecome to DHT11");
	 
	 
	 //初始化DHT11(有BUG,第一次上電總是失敗,按一下復(fù)位按鈕又能進(jìn)了)
	 if(!DHT11_Init()){
		 printf("rn EEROR! THE DHT11 HAS NO RESPOND...");
		 //while(1);
	 }
	 printf("rn THE DHT11 HAS RESPOND");
	 Delay_ms(10);		//這里延時(shí)10ms主要是因?yàn)椋瑒倓偨邮盏巾憫?yīng)信息,要等DHT11發(fā)送完信息
	 
	 while(1)
	 {
		 if(DHT11_Read_Data(&temp,&humi))
			printf("rn temp:%d,humi:%d",temp,humi);
		 else
		 //printf("rn EEROR! THE DHT11 HAS NO RESPOND...");//由于是庫函數(shù)編程,不能準(zhǔn)確把握函數(shù)的執(zhí)行時(shí)間,
																													//所以會(huì)經(jīng)常出現(xiàn)這條警告信息
		 Delay_ms(100);
	 }
	  
 }

接線和實(shí)驗(yàn)結(jié)果

6-現(xiàn)象.jpeg

在這里插入圖片描述

總結(jié)

DHT11是性價(jià)比較高的一個(gè)溫濕度模塊,用串口來顯示溫濕度來說比較直觀,長期發(fā)布此類文章,喜歡的點(diǎn)個(gè)關(guān)注吧。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2577

    文章

    55150

    瀏覽量

    792049
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1622

    瀏覽量

    82967
  • DHT11
    +關(guān)注

    關(guān)注

    19

    文章

    278

    瀏覽量

    59756
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于arduino的dht11溫濕度傳感器的使用

    本文介紹了DHT11溫濕度傳感器電氣特性、DHT11封裝形式及接口說明與典型應(yīng)用電路,其次介紹了DHT11溫濕度傳感器時(shí)序圖與連接圖,最后介
    發(fā)表于 01-22 15:50 ?5w次閱讀
    基于arduino的<b class='flag-5'>dht11</b><b class='flag-5'>溫濕度</b>傳感器的使用

    STM32F103試用體驗(yàn):LCD顯示DHT11測量實(shí)驗(yàn)

    實(shí)驗(yàn)名稱:LCD顯示DHT11測量溫濕度 實(shí)驗(yàn)?zāi)康?通過開發(fā)板連接的DHT11模塊實(shí)時(shí)測量環(huán)境溫濕度,并在LCD屏上
    發(fā)表于 11-09 10:41 ?1.2w次閱讀

    DHT11溫濕度數(shù)據(jù)的采集

    用的控制器是STM32F103C8T6,如果你用STMF103的其他芯片來跑這個(gè)代碼也能跑通,基本配置都是一樣的。先介紹DHT11溫濕度數(shù)據(jù)的采集
    發(fā)表于 07-16 06:24

    基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32F407ZGT6開發(fā)板進(jìn)行項(xiàng)目開發(fā),選用的傳感器為常見通用的DHT11溫濕度傳感器。傳感器將采集到的數(shù)據(jù)傳輸?shù)?b class='flag-5'>STM32(MCU)
    發(fā)表于 08-10 07:41

    如何通過STM32采集DHT11的數(shù)據(jù)將溫濕度信息顯示帶LCD及虛擬串口上?

    如何通過STM32采集DHT11的數(shù)據(jù)將溫濕度信息顯示帶LCD及虛擬串口上?
    發(fā)表于 11-10 06:37

    請問STM32F103C8T6如何通過DHT11獲取溫濕度數(shù)據(jù)?

    請問STM32F103C8T6如何通過DHT11獲取溫濕度數(shù)據(jù)?
    發(fā)表于 11-25 08:02

    請問STM32F103C8T6如何使用DHT11采集溫濕度通過串口顯示?

    請問STM32F103C8T6如何使用DHT11采集溫濕度通過串口顯示
    發(fā)表于 12-14 06:02

    STM32F103ZET6主控開發(fā)板的學(xué)習(xí)記錄

    文章目錄前言一、所用器件(1)STM32F103ZET6(2) MQ_煙霧傳感器(3)聲音傳感器(5)sg90舵機(jī)(5)DHT11 溫濕度傳感器(6)OLED
    發(fā)表于 01-06 06:39

    DHT11采集溫濕度源程序

    DHT11采集溫濕度并用LCD12864顯示的源程序.可以使用的哈,分享給大家
    發(fā)表于 01-07 16:56 ?171次下載

    基于51單片機(jī)+DHT11溫濕度+LCD1602顯示

    DHT溫濕度1602顯示DHT11溫濕度相關(guān)介紹DHT11產(chǎn)品概述1.測量范圍2.接口說明3.電
    發(fā)表于 11-12 11:51 ?125次下載
    基于51單片機(jī)+<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b>+LCD1602<b class='flag-5'>顯示</b>

    stm32獲取DHT11模塊溫濕度數(shù)據(jù)原理解析

    stm32獲取DHT11模塊溫濕度數(shù)值原理解析stm32單片機(jī)如何從DHT11獲取到溫濕度的呢?
    發(fā)表于 11-13 20:06 ?55次下載
    <b class='flag-5'>stm32</b>獲取<b class='flag-5'>DHT11</b>模塊<b class='flag-5'>溫濕度</b>數(shù)據(jù)原理解析

    STM32實(shí)例——基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32實(shí)例——基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集
    發(fā)表于 12-05 20:06 ?93次下載
    <b class='flag-5'>STM32</b>實(shí)例——基于<b class='flag-5'>STM32</b>開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)<b class='flag-5'>采集</b>-<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>

    MSP432 P401R 單片機(jī) 讀取DHT11 串口發(fā)送溫濕度 OLED顯示溫濕度 溫濕度檢測

    MSP432P401R讀取DHT11串口發(fā)送溫濕度OLED顯示溫濕度
    發(fā)表于 12-16 16:54 ?33次下載
    MSP432 P401R 單片機(jī)  讀取<b class='flag-5'>DHT11</b> <b class='flag-5'>串口</b>發(fā)送<b class='flag-5'>溫濕度</b> OLED<b class='flag-5'>顯示</b><b class='flag-5'>溫濕度</b> <b class='flag-5'>溫濕度</b>檢測

    使用STM32F103ZET6采集DHT11溫濕度串口顯示

    STM32采集DHT11溫濕度關(guān)于DHT11相關(guān)參數(shù)代碼篇接線和實(shí)驗(yàn)結(jié)果總結(jié)關(guān)于DHT11DHT11
    發(fā)表于 12-24 19:10 ?46次下載
    使用<b class='flag-5'>STM32F103ZET6</b><b class='flag-5'>采集</b><b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b><b class='flag-5'>串口</b><b class='flag-5'>顯示</b>

    基于STM32DHT11溫濕度數(shù)據(jù)采集仿真設(shè)計(jì)

    通過STM32采集DHT11溫度傳感器的數(shù)據(jù),將溫濕度信息顯示在LCD顯示屏上及虛擬
    的頭像 發(fā)表于 09-01 09:32 ?3857次閱讀
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度數(shù)據(jù)采集</b>仿真設(shè)計(jì)