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

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

這篇具有很好參考價(jià)值的文章主要介紹了(STM32F103單片機(jī))DHT11溫濕度傳感器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

?

一,產(chǎn)品介紹

二,產(chǎn)品亮點(diǎn)

三,產(chǎn)品參數(shù)

四,引腳連接及通信說(shuō)明

?五,原理講解

六,源碼

1,DHR11.C

2.DHR11.H

3,main.c


一,產(chǎn)品介紹

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

二,產(chǎn)品亮點(diǎn)

成本低、長(zhǎng)期穩(wěn)定、相對(duì)濕度和溫度測(cè)量、品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、超長(zhǎng)的信號(hào)傳輸距離、數(shù)字信號(hào)輸出、精確校準(zhǔn)。 (STM32F103單片機(jī))DHT11溫濕度傳感器

三,產(chǎn)品參數(shù)

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

四,引腳連接及通信說(shuō)明

引腳說(shuō)明
1、VDD供電3.3~5.5VDC
2、DATA串行數(shù)據(jù),單總線(xiàn)
3、NC空腳
4、GND接地,電源負(fù)極
◎單總線(xiàn)說(shuō)明
DHT11器件采用簡(jiǎn)化的單總線(xiàn)通信。單總線(xiàn)即只有一根數(shù)據(jù)線(xiàn),系統(tǒng)中的數(shù)據(jù)交換、控制均由單總線(xiàn)完成。設(shè)備(主機(jī)或從機(jī))通過(guò)一個(gè)漏極開(kāi)路或三態(tài)端口連至該數(shù)據(jù)線(xiàn),以允許
設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線(xiàn),而讓其它設(shè)備使用總線(xiàn);單總線(xiàn)通常要求外接一個(gè)約 4.7kΩ的上拉電阻,這樣,當(dāng)總線(xiàn)閑置時(shí),其狀態(tài)為高電平。由于它們是主從結(jié)構(gòu),只有主
機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此主機(jī)訪(fǎng)問(wèn)器件都必須嚴(yán)格遵循單總線(xiàn)序列,如果出現(xiàn)序列混亂,器件將不響應(yīng)主機(jī)。
◎單總線(xiàn)傳送數(shù)據(jù)位定義
DATA用于微處理器與DHT11之間的通訊和同步,采用單總線(xiàn)數(shù)據(jù)格式,一次傳送40位數(shù)據(jù),高位先出。
◎數(shù)據(jù)格式
8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)位。
注:其中濕度小數(shù)部分為0。
◎校驗(yàn)位數(shù)據(jù)定義
“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”8bit校驗(yàn) 位等于所得結(jié)果的末8位。

?五,原理講解

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

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

DHT11編碼步驟:

一. 單片機(jī)上點(diǎn)后1s內(nèi)不讀?。ú恢匾?/p>

二. 主機(jī)(單片機(jī))發(fā)送起始信號(hào):

1.主機(jī)先拉高data。

2.拉低data延遲18ms。(大于18小于30ms)

3.拉高data(通過(guò)此操作將單片機(jī)引腳設(shè)置為輸入)。圖2

三. 從機(jī)(DHT11)收到起始信號(hào)后進(jìn)行應(yīng)答:

?從機(jī)拉低data,主機(jī)讀取到data線(xiàn)被拉低持續(xù)83us后從機(jī)拉高data線(xiàn), 持續(xù)87us,直到高電平結(jié)束,意味著主機(jī)可以開(kāi)始接受數(shù)據(jù)。? ? ? ? ? ? ? ? ? ?圖3

四. 主機(jī)開(kāi)始接收數(shù)據(jù):

1.主機(jī)先把data線(xiàn)拉高(io設(shè)置為輸入)。

2.從機(jī)把data線(xiàn)拉低,主機(jī)讀取data線(xiàn)電平,直到低電平結(jié)束(大約50us)

? 從機(jī)拉高data線(xiàn)后,延遲40us左右(28~70us之間)主機(jī)再次讀取data線(xiàn)電平,如果為低電平,則為“0”,如果為高電平,則為“1”。

(DTH11.C中有一部分u8 DHT11_receive_bit(void)獲得一個(gè)字節(jié)過(guò)程所得格式0或1,是通過(guò)從機(jī)信號(hào)高電平的持續(xù)時(shí)長(zhǎng)判斷的,如果60us之后任然為高電平則為格式1,反之為格式0)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖4.2

3.繼續(xù)重復(fù)上述1,2步驟累計(jì)40次。

五. data線(xiàn)拉低50us代表讀取結(jié)束

(STM32F103單片機(jī))DHT11溫濕度傳感器
圖2
(STM32F103單片機(jī))DHT11溫濕度傳感器
圖3
(STM32F103單片機(jī))DHT11溫濕度傳感器
圖4

六,源碼

1,DHR11.C

  1. #include "DHT11.h"
    #include "delay.h"
    #include "usart.h"
    
    u8 receive_R_dat[10];//?¨ò?ò???êy?Y×é
    u8 receive_T_dat[10];//?¨ò?ò???êy?Y×é
    
    void DHT11_Init(void)  //′??D?÷3?ê??ˉ
    {
    
    	GPIO_InitTypeDef GPIO_InitStructure;
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);	//ê1?üGPIO_Eê±?ó
    	
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PE.12
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;	//í¨ó?í?íìê?3?
      GPIO_Init(GPIOE, &GPIO_InitStructure);//3?ê??ˉGPIOE12
    }
    
    void DHT11_Start(void)  //·¢?í?eê?D?o?
    	
    {
    	GPIO_SetBits(GPIOE,GPIO_Pin_12);
    	delay_us(10);  //à-??μ???μè′y
    	GPIO_ResetBits(GPIOE,GPIO_Pin_12);
    	delay_ms(25);  //μíμ???±£3?ê±??2?D?óú18MS2?′óóú30MS
    	GPIO_SetBits(GPIOE,GPIO_Pin_12);
    	delay_us(30); //à-??μ???·¢?í?eê?D?o?
    	
    }
    
    u8 DHT11_receive_bit(void)  //′??D?÷·μ???ìó|D?o??£?óê?ò???×??ú
    { 
    	u8 i,dat=0;
    	GPIO_ResetBits(GPIOE,GPIO_Pin_12); //à-??
    	delay_us(81); 
    	GPIO_SetBits(GPIOE,GPIO_Pin_12); //à-μí
    	delay_us(85);
    	//?aê?×?±?·¢?íêy?Y
    	for(i=0;i<8;i++)
    	{
    		PEout(12)=0; //à-μí3?D?83US
    		delay_us(50);
    		PEout(12)=1; //à-??3?D?
    		delay_us(60);
    		dat<<=1;
    		if(PEout(12)==1) //è?1???μ???ê±??3?1y60us?£?a?±1?°×′ì?
    			dat+=1;
    		
    		while(PEout(12));
    	}
    	return dat; //·μ??êy?Y
    }
    
    void DHT11_receive_dat(void)
    {
    	u8 R_H,R_L,T_H,T_L,RH,RL,TH,TL,Checkout;
    	
    	DHT11_Start();//?aê??eê??ìó|?£?óê?40??êy?Y
    	
    	if(PEout(12)==0)
    	{
    		while(PEout(12)==0); //μè′yà-??
    		delay_us(80); //à-??oó?óê±80us
    		R_H=DHT11_receive_bit();
    		R_L=DHT11_receive_bit();
    		T_L=DHT11_receive_bit();
    		T_L=DHT11_receive_bit();
    		Checkout=DHT11_receive_bit();
    		
    		delay_us (50);
    			
    	}
    	/*D£?éêy?Y*/
    	if((R_H+R_L+T_H+T_L)==Checkout)
    	{
    		R_H=RH;
    		R_L=RL;
    		T_H=TH;
    		T_L=TL;	
    	}
    	
    	/*êy?Y′|àí*/
    
    	receive_R_dat[1]=RH/10+0x30;
    	receive_R_dat[2]=RH%10+0x30;
    	receive_R_dat[3]='.';
    	receive_R_dat[4]=RL/10+0x30;
    	receive_R_dat[5]=RL%10+0x30;
    	receive_R_dat[6]='%';
    	
    
    	receive_T_dat[1]=TH/10+0x30;
    	receive_T_dat[2]=TH%10+0x30;
    	receive_T_dat[3]='.';
    	receive_T_dat[4]=TL/10+0X30;
    	receive_T_dat[5]=TL%10+0X30;
    	receive_T_dat[6]='^';
    	receive_T_dat[7]='C';	
    	
    
    	
    	printf ("Humidity:\r\n");
    	MyUSART_SendArr(receive_R_dat,7);
    	printf("\r\n");
    	printf ("Temperture:\r\n");
    	MyUSART_SendArr(receive_T_dat,8);
    	printf("\r\n");
    }
    
    
    

2.DHR11.H

#ifndef __DHT11_H
#define __DHT11_H

#include "stm32f10x.h"

void DHT11_Init(void); //′??D?÷3?ê??ˉ

void DHT11_Start(void);  //·¢?í?eê?D?o?
u8 DHT11_receive_bit(void) ; //′??D?÷·μ???ìó|D?o??£?óê?ò???×??ú
void DHT11_receive_dat(void);//μ?μ?êy?Y×é

extern u8 receive_R_dat[10];//?¨ò?ò???êy?Y×é
extern u8 receive_T_dat[10];//?¨ò?ò???êy?Y×é

#endif




3,main.c

#include "sys.h"
#include "DHT11.h"
#include "usart.h"
#include "delay.h"
 



 int main(void)
 {	
//	u8 receive_R_dat[10];//?¨ò?ò???êy?Y×é
//	u8 receive_T_dat[10];//?¨ò?ò???êy?Y×é	 
	delay_init();	    	 //?óê±oˉêy3?ê??ˉ	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //éè??NVIC?D??·?×é2:2???à??ó??è??£?2???ìó|ó??è??
	uart_init(115200);	 //′??ú3?ê??ˉ?a115200
	DHT11_Init() ;   //??êa?è′??D?÷3?ê??ˉ
	printf("溫濕度傳感器初始化成功:\r\n");
	

	while(1)
	{
		DHT11_receive_dat();
		delay_ms (10000);
	}
 }

/*注釋*/

receive_R_dat[1]=RH/10+0x30;? ? 二進(jìn)制轉(zhuǎn)換十進(jìn)制
?? ?receive_R_dat[2]=RH%10+0x30;
?? ?receive_R_dat[3]='.';
?? ?receive_R_dat[4]=RL/10+0x30;
?? ?receive_R_dat[5]=RL%10+0x30;
?? ?receive_R_dat[6]='%';
?? ?

?? ?receive_T_dat[1]=TH/10+0x30;
?? ?receive_T_dat[2]=TH%10+0x30;
?? ?receive_T_dat[3]='.';
?? ?receive_T_dat[4]=TL/10+0X30;
?? ?receive_T_dat[5]=TL%10+0X30;
?? ?receive_T_dat[6]='^';
?? ?receive_T_dat[7]='C';?? ?

/*計(jì)算*/

00110101+00000000+00011000+00000100=01010001
接收數(shù)據(jù)正確:
濕度:00110101(整數(shù))=35H=53%RH
? ? ? ? ? ?00000000(小數(shù))=00H=0.0%RH=>53%RH+0.0%RH=53.0%RH
溫度:00011000(整數(shù))=18H=24℃
???????????00000100(小數(shù))=04H=0.4℃=>24℃+0.4℃=24.4℃

最后,歡迎各位指正,互相交流互相學(xué)習(xí)?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-403725.html

到了這里,關(guān)于(STM32F103單片機(jī))DHT11溫濕度傳感器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【單片機(jī)】STM32單片機(jī)的各個(gè)定時(shí)器的定時(shí)中斷程序,標(biāo)準(zhǔn)庫(kù),STM32F103

    【單片機(jī)】STM32單片機(jī)的各個(gè)定時(shí)器的定時(shí)中斷程序,標(biāo)準(zhǔn)庫(kù),STM32F103

    高級(jí)定時(shí)器和普通定時(shí)器的區(qū)別(https://zhuanlan.zhihu.com/p/557896041): TIM1是高級(jí)定時(shí)器,使用的時(shí)鐘總線(xiàn)是RCC_APB2Periph_TIM1,和普通定時(shí)器不一樣。 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用 timer.c timer.h 調(diào)用

    2024年02月07日
    瀏覽(26)
  • 【單片機(jī)】STM32單片機(jī),定時(shí)器的輸入捕獲,基于捕獲的頻率計(jì),STM32F103

    【單片機(jī)】STM32單片機(jī),定時(shí)器的輸入捕獲,基于捕獲的頻率計(jì),STM32F103

    下面的定時(shí)器都具有輸入捕獲能力: 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部計(jì)數(shù)頻率計(jì)的缺點(diǎn):需要兩個(gè)定時(shí)器配合,最高能測(cè)量的頻率是否有限制我沒(méi)具體嘗試。 基于捕獲的頻率計(jì)的缺點(diǎn):最高能測(cè)量的頻率有限制。 TIM3_CH1 PWM PA6 10KHZ。 輸入

    2024年02月14日
    瀏覽(26)
  • STM32F103ZE單片機(jī)呼吸燈源代碼

    本實(shí)驗(yàn)采用的系統(tǒng)頻率SYSTIM為8MHZ,如果頻率改變需要修改一個(gè)數(shù)值

    2024年02月09日
    瀏覽(25)
  • JDY-31藍(lán)牙模塊遠(yuǎn)程控制STM32F103單片機(jī)

    JDY-31藍(lán)牙模塊遠(yuǎn)程控制STM32F103單片機(jī)

    ? ?手機(jī)app通過(guò)藍(lán)牙模塊發(fā)送指令實(shí)時(shí)控制單片機(jī)的外設(shè)功能,比如發(fā)送衣柜開(kāi)關(guān)門(mén)指令(舵機(jī)旋轉(zhuǎn)),衣架上升降落(步進(jìn)電機(jī)正轉(zhuǎn)反轉(zhuǎn)),遠(yuǎn)程開(kāi)啟去污除濕功能(繼電器控制打開(kāi)關(guān)閉小風(fēng)扇+加熱片)。 本次例子:手機(jī)APP連接藍(lán)牙模塊遠(yuǎn)程控制SG90舵機(jī)正轉(zhuǎn)(0-180°)和反

    2024年02月01日
    瀏覽(32)
  • 86、基于STM32單片機(jī)的溫濕度DHT11 MQ-2煙霧火災(zāi)報(bào)警器藍(lán)牙物聯(lián)網(wǎng)設(shè)計(jì)

    86、基于STM32單片機(jī)的溫濕度DHT11 MQ-2煙霧火災(zāi)報(bào)警器藍(lán)牙物聯(lián)網(wǎng)設(shè)計(jì)

    畢設(shè)幫助、開(kāi)題指導(dǎo)、技術(shù)解答(有償)見(jiàn)文末。 目錄 摘要 一、硬件方案? ? ? ? ? ? ? ? ? ?? 二、設(shè)計(jì)功能 三、實(shí)物圖 四、原理圖 五、硬件框圖 六、流程圖 七、程序源碼?? 八、資料包括 隨著社會(huì)和經(jīng)濟(jì)的發(fā)展,防火工作越來(lái)越重要,但是目前國(guó)內(nèi)的許多研發(fā)都側(cè)重

    2024年02月06日
    瀏覽(22)
  • 【單片機(jī)】STM32單片機(jī)頻率計(jì)程序,外部脈沖計(jì)數(shù)程序,基于脈沖計(jì)數(shù)的頻率計(jì)程序,STM32F103

    【單片機(jī)】STM32單片機(jī)頻率計(jì)程序,外部脈沖計(jì)數(shù)程序,基于脈沖計(jì)數(shù)的頻率計(jì)程序,STM32F103

    兩種方法用于在單片機(jī)中實(shí)現(xiàn)頻率計(jì)的功能。 第一種方法是通過(guò)定時(shí)器來(lái)衡量信號(hào)的周期,然后將周期轉(zhuǎn)換為頻率。在這種方法中,你可以使用單片機(jī)的定時(shí)器模塊來(lái)測(cè)量輸入信號(hào)的周期,定時(shí)器會(huì)產(chǎn)生一個(gè)計(jì)數(shù)值,你可以根據(jù)這個(gè)計(jì)數(shù)值來(lái)推算出輸入信號(hào)的周期,并通過(guò)簡(jiǎn)

    2024年02月11日
    瀏覽(25)
  • 【單片機(jī)】STM32單片機(jī),RTC實(shí)時(shí)時(shí)鐘,STM32F103C8T6,程序,萬(wàn)年歷,數(shù)字時(shí)鐘

    【單片機(jī)】STM32單片機(jī),RTC實(shí)時(shí)時(shí)鐘,STM32F103C8T6,程序,萬(wàn)年歷,數(shù)字時(shí)鐘

    我以STM32F103C8T6為例,但STM32F103的RTC是通用的,STM32F103C8T6有一個(gè)原理圖: https://qq742971636.blog.csdn.net/article/details/131288390 用紐扣電池給VBAT供電(要共地),即可實(shí)現(xiàn)掉電后依舊走時(shí)的能力。 主要特性(來(lái)源于STM32中文參考手冊(cè)V10.pdf): 記得加標(biāo)準(zhǔn)庫(kù)文件: 串口接收:

    2024年02月11日
    瀏覽(32)
  • STM32F103單片機(jī)控制繼電器開(kāi)關(guān)小風(fēng)扇和加熱片

    STM32F103單片機(jī)控制繼電器開(kāi)關(guān)小風(fēng)扇和加熱片

    ? ?在智能衣柜中,使用異味傳感器檢測(cè)柜內(nèi)異味值,當(dāng)異味值大于設(shè)定值時(shí)會(huì)自動(dòng)開(kāi)啟小風(fēng)扇,小風(fēng)扇起到一個(gè)排污去濁的功能,再加上溫濕度傳感器檢測(cè)柜內(nèi)的溫度和濕度,當(dāng)溫濕度達(dá)到設(shè)定值時(shí),加熱片自動(dòng)發(fā)熱,起到一個(gè)降溫除霉的作用。想要使小風(fēng)扇和加熱片自動(dòng)

    2024年02月02日
    瀏覽(45)
  • 【單片機(jī)】STM32F103C8T6 最小系統(tǒng)板原理圖

    【單片機(jī)】STM32F103C8T6 最小系統(tǒng)板原理圖

    STM32F103C8T6是一款基于ARM Cortex-M3內(nèi)核的32位微控制器,由STMicroelectronics(ST)公司生產(chǎn)。它是STMicroelectronics的STM32系列微控制器中的一員,被廣泛應(yīng)用于嵌入式系統(tǒng)和電子設(shè)備中。 STM32F103C8T6單片機(jī)的主要特點(diǎn)和資源包括: 內(nèi)存資源: Flash存儲(chǔ)器:64 KB SRAM(靜態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器

    2024年02月12日
    瀏覽(30)
  • stm32F103單片機(jī)pwm控制伺服驅(qū)動(dòng)器進(jìn)而控制步進(jìn)電機(jī)

    stm32F103單片機(jī)pwm控制伺服驅(qū)動(dòng)器進(jìn)而控制步進(jìn)電機(jī)

    1.需要一臺(tái)步進(jìn)電機(jī),私服驅(qū)動(dòng)器,stm32單片機(jī);先按照說(shuō)明文檔,連接好硬件相關(guān)線(xiàn)路,對(duì)應(yīng)好sign+,sign-,puls+,puls-線(xiàn)路,其中sign只是個(gè)io口拉高拉低操作,puls是pwm波形輸出口,雖然有兩根線(xiàn),但只是需要控制一個(gè)IO口輸出波形即可; 采用主從模式,TIM1為主定時(shí)器,tim3未從定

    2024年02月04日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包