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

一、DHT11簡介

DHT11是一款有已校準(zhǔn)數(shù)字信號輸出的溫濕度傳感器。 其精度濕度±5%RH, 溫度±2℃,量程濕度5~95%RH, 溫度-20~+60℃。


——來自百度百科


測量范圍:濕度 5~95%RH, 溫度 -20~+60℃

測量精度:濕度 ±5%RH, 溫度 ±2℃

供電電壓:3.3~5.5V DC

輸 出:單總線數(shù)字信號

分辨率:濕度1%RH, 溫度0.1℃

關(guān)于單總線協(xié)議可以查看這篇文章:【STM32】stm32f407 + DS18B20 碰出不一樣的火花


二、編程思路

溫濕度傳感器 DHT11 和 溫度傳感器 DS18B20 均采用 單總線協(xié)議,因此兩者的編程思路很相似,不過 DHT11 增加了濕度的測量。


說明:在移植代碼時,注意引腳的變換,選擇合適的引腳,本程序中使用 PB5 作為單總線通訊的引腳。如要修改引腳,只需修改頭文件中引腳的相關(guān)宏定義。


DHT11.h

// =============================================

# @Time    : 2021-08-08

# @Author  : AXYZdong

# @CSDN    : https://axyzdong.blog.csdn.net/

# @FileName: DHT11.h

# @Software: keil5 MDK

// =============================================

#ifndef __DTH11_H

#define __DTH11_H

#include "stm32f4xx.h"

 

/************************** DS18B20 連接引腳定義********************************/

#define    RCC_DHT11                          RCC_AHB1Periph_GPIOB

#define    DHT11_DQ_GPIO_PORT                 GPIOB

#define    DHT11_DQ_GPIO_PIN                  GPIO_Pin_5


/************************** DS18B20 函數(shù)宏定義********************************/

#define    DHT11_DQ_L             GPIO_ResetBits ( DHT11_DQ_GPIO_PORT, DHT11_DQ_GPIO_PIN ) 

#define    DHT11_DQ_H             GPIO_SetBits ( DHT11_DQ_GPIO_PORT, DHT11_DQ_GPIO_PIN ) 



/************************** DS18B20 函數(shù)聲明 ********************************/


void DHT11_Init(void);

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


#endif /* __DS18B20_H */


DHT11.c

// =============================================

# @Time    : 2021-08-08

# @Author  : AXYZdong

# @CSDN    : https://blog.csdn.net/qq_43328313

# @FileName: DHT11.c

# @Software: keil5 MDK

// =============================================

#include "stm32f4xx.h"

#include "dth11.h"

#include "delay.h"


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

 * 函數(shù)名:DHT11_GPIO_Config

 * 描述  :配置DHT11用到的I/O口

 * 輸入  :無

 * 輸出  :無

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

void DHT11_GPIO_Config(void)

  GPIO_InitTypeDef GPIO_InitStructure; 

  RCC_AHB1PeriphClockCmd(RCC_DHT11, ENABLE);       /*開啟DS18B20對應(yīng)的GPIO的外設(shè)時鐘*/ 

  GPIO_InitStructure.GPIO_Pin = DHT11_DQ_GPIO_PIN; /*選擇要控制的DS18B20引腳*/ 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;      /*設(shè)置引腳模式輸出模式*/       

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;     /*設(shè)置引腳的輸出類型為推挽輸出*/

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  /*設(shè)置引腳速率為50MHz */ 

  GPIO_Init(DHT11_DQ_GPIO_PORT, &GPIO_InitStructure); /*調(diào)用庫函數(shù),初始化相應(yīng)GPIO*/

}

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

 * 函數(shù)名:DHT11_Mode_Out

 * 描述  :使DHT11-DATA引腳變?yōu)檩敵瞿J?p> * 輸入  :無

 * 輸出  :無

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

static void DHT11_Mode_Out(void)

{

  GPIO_InitTypeDef GPIO_InitStructure;

/*選擇要控制的DHT11_DQ_GPIO_PORT引腳*/    

  GPIO_InitStructure.GPIO_Pin = DHT11_DQ_GPIO_PIN;

/*設(shè)置引腳模式輸出模式*/

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   

  /*設(shè)置引腳的輸出類型為推挽輸出*/     

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

/*設(shè)置引腳速率為50MHz */   

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

/*調(diào)用庫函數(shù),初始化DHT11_DQ_GPIO_PORT*/

  GPIO_Init(DHT11_DQ_GPIO_PORT, &GPIO_InitStructure);

}

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

 * 函數(shù)名:DHT11_Mode_IN

 * 描述  :使DHT11-DATA引腳變?yōu)檩斎肽J?p> * 輸入  :無

 * 輸出  :無

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

static void DHT11_Mode_IN(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;


  /*選擇要控制的DS18B20_DQ_GPIO_PORT引腳*/

  GPIO_InitStructure.GPIO_Pin = DHT11_DQ_GPIO_PIN;


   /*設(shè)置引腳模式為浮空輸入模式*/ 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;


  /*調(diào)用庫函數(shù),初始化DS18B20_DQ_GPIO_PORT*/

  GPIO_Init(DHT11_DQ_GPIO_PORT, &GPIO_InitStructure);

}

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

 * 函數(shù)名:DHT11_Reset

 * 描述  :初始化DHT11

 * 輸入  :無

 * 輸出  :無

 * 返回值:初始化成功為0,不成功為1

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

void DHT11_Reset() 

{      

  DHT11_Mode_Out(); //SET OUTPUT

    DHT11_DQ_L; //DQ=0

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

    DHT11_DQ_H; //DQ=1 

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

}

u8 DHT11_Check(void)    

{   

u8 retry=0;//定義臨時變量

DHT11_Mode_IN();//SET INPUT 

while ((GPIO_ReadInputDataBit(DHT11_DQ_GPIO_PORT,DHT11_DQ_GPIO_PIN)==1)&&retry<100)//DHT11會拉低40~80us

{

   retry++;

   delay_us(1);

}; 

if(retry>=100)return 1;

else retry=0;

  while ((GPIO_ReadInputDataBit(DHT11_DQ_GPIO_PORT,DHT11_DQ_GPIO_PIN)==0)&&retry<100)//DHT11拉低后會再次拉高40~80us

{

   retry++;

   delay_us(1);

};

if(retry>=100)return 1;    

return 0;

}

//從DHT11讀取一個位

//返回值:1/0

u8 DHT11_Read_Bit(void)  

{

u8 retry=0;

while((GPIO_ReadInputDataBit(DHT11_DQ_GPIO_PORT,DHT11_DQ_GPIO_PIN)==1)&&retry<100)//等待變?yōu)榈碗娖?p> {

retry++;

delay_us(1);

}

retry=0;

while((GPIO_ReadInputDataBit(DHT11_DQ_GPIO_PORT,DHT11_DQ_GPIO_PIN)==0)&&retry<100)//等待變高電平

{

retry++;

delay_us(1);

}

delay_us(40);//等待40us

if(GPIO_ReadInputDataBit(DHT11_DQ_GPIO_PORT,DHT11_DQ_GPIO_PIN)==1)

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; 

    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_Reset();

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的IO口 DQ 同時檢測DHT11的存在

//返回1:不存在

//返回0:存在     

void DHT11_Init(void)

{     

DHT11_GPIO_Config();

DHT11_Reset();  //復(fù)位DHT11

DHT11_Check();//等待DHT11的回應(yīng)

}


main.c

// =============================================

# @Time    : 2021-08-08

# @Author  : AXYZdong

# @CSDN    : https://axyzdong.blog.csdn.net/

# @FileName: main.c

# @Software: keil5 MDK

// =============================================

#include "stm32f4xx.h"

#include "delay.h"

#include "QDTFT_demo.h"

#include "Lcd_Driver.h"

#include "GUI.h"

#include "dth11.h"

#include "usart.h"

#include "bsp_key.h"

#include "time.h"


u8 wd=0, sd=0;

u8 tab_wd[5],tab_sd[5];

char set_date=28;

char Set_date[5];


int main(void)

{

    SystemInit(); //System init.

    delay_init(168);//Delay init.

Lcd_Init();

Lcd_Clear(WHITE);

    DHT11_Init();

Debug_USART_Config();

QDTFT_Test_Demo(); //See the test details in QDTFT_Demo.c

  while(1)

  { 

        DHT11_Read_Data(&wd,&sd);

       

tab_wd[0] = wd/10 + 0x30;

tab_wd[1] = wd%10 + 0x30;

tab_wd[2] = 'C';


tab_sd[0] = sd/10 + 0x30;

tab_sd[1] = sd%10 + 0x30;

tab_sd[2] = '%';

Set_date[0] = set_date/10 + 0x30;

Set_date[1] = set_date%10 + 0x30;

Set_date[2] = 'C';

Gui_DrawFont_GBK16(15,30,RED,WHITE,(u8 *)tab_wd);

        Gui_DrawFont_GBK16(15,70,RED,WHITE,(u8 *)tab_sd);    

Gui_DrawFont_GBK16(87,90,RED,WHITE,(u8 *)Set_date);

  }

}


現(xiàn)象:TFT屏幕上顯示當(dāng)前的溫度值和濕度值。


三、總結(jié)

DHT11 驅(qū)動函數(shù)的編寫;

將溫濕度數(shù)據(jù)存儲在數(shù)組中,利用相關(guān)顯示函數(shù)將溫濕度顯示在屏幕上;

關(guān)于溫濕度數(shù)據(jù)的讀取,由于環(huán)境中溫濕度變化不是很快,可以放在定時器里面讀取。(本程序是放在了主函數(shù)中讀取)

關(guān)鍵字:STM32  STM32F407  DHT11 引用地址:【STM32】STM32F407 + DHT11

上一篇:【STM32】EXTI---外部中斷/事件控制器
下一篇:【STM32】PWM 輸出 (標(biāo)準(zhǔn)庫)

推薦閱讀

作為一家專注于安防機(jī)器人研發(fā)制造和銷售的智能科技企業(yè),萬為智能應(yīng)邀出席了2018中國網(wǎng)絡(luò)安全·智能制造大會。 陳小虎:安保服務(wù)機(jī)器人技術(shù)儲備深厚,已走出國門 據(jù)了解,貴公司成立于2014年,主要專注于機(jī)器人相關(guān)技術(shù)以及產(chǎn)品研發(fā)、生產(chǎn)與銷售。作為一家科技型企業(yè),經(jīng)過四年的企業(yè)經(jīng)營,目前公司的發(fā)展?fàn)顩r如何? 陳小虎:我們公司四年以來在技...
線性磨耗儀主要用來帶輪廓表面和拋光表面特性產(chǎn)品的耐磨耗性能,干磨耗測試、濕磨耗測試均可進(jìn)行,適用于塑料、汽車配件、橡膠、皮革和紡織、電鍍、自由拆卸的組件、漆品、印刷圖樣等產(chǎn)品的測試。符合標(biāo)準(zhǔn):ASTM D3884、ASTM D1175、ASTM D1044、ASTM D4060、TAPPI T476、ISO 9352、ISO 5470-1、JIS K7204、 JIS A1453、JIS K6902、JIS L1096...
近日,深圳證監(jiān)局披露了中國國際金融股份有限公司(以下簡稱:中金公司)關(guān)于惠科股份有限公司(以下簡稱:惠科)首次公開發(fā)行并上市輔導(dǎo)備案信息。 據(jù)披露,惠科股份有限公司擬首次公開發(fā)行股票并在境內(nèi)證券交易所上市,現(xiàn)已接受中金公司的輔導(dǎo),并于 2020 年 11 月 24 日在深圳證監(jiān)局進(jìn)行了輔導(dǎo)備案。 資料顯示,惠科股份有限公司位于深圳市寶安區(qū)...
中郵Hi nova 9 / Pro于12月2日發(fā)布,搭載驍龍778G 5G處理器,售價2999元起,將于今日上午10:08正式開售。Hi nova 9售價為(無充電器):8GB + 128GB版本2999元;8GB + 256GB版本3399元。Hi nova 9 Pro售價為(有充電器):8GB + 128GB版本3799元;8GB + 256GB版本4199元。設(shè)計方面,Hi nova 9系列擁有幻境森林、夢幻羅蘭、夢幻星河和亮...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(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
主站蜘蛛池模板: 同心县| 定西市| 吉木乃县| 江阴市| 新闻| 三亚市| 阿巴嘎旗| 鄄城县| 祥云县| 土默特右旗| 通河县| 岳普湖县| 江源县| 鄄城县| 邵阳县| 长武县| 凤山市| 洞头县| 宁波市| 新郑市| 新龙县| 色达县| 资兴市| 双桥区| 荥经县| 贵阳市| 从化市| 北流市| 夹江县| 遵义市| 安福县| 连城县| 苏州市| 威宁| 甘泉县| 昆明市| 颍上县| 佳木斯市| 定襄县| 班玛县| 名山县|