<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DHT11溫濕度傳感器詳解(stm32)

      01

      傳感器介紹

       

       

      DHT11是一款含有已校準數字信號輸出的溫濕度復合傳感器,采用了自主研發的集成式數字溫濕度元件,應用專用的數字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性與卓越的長期穩定性。DHT11傳感器內包含一個溫濕度測量元件和一個高性能MCU

       

       

       以下是DHT11溫濕度傳感器的參數:

         

      供電電壓 

      DC:3.3-5.5V

      工作范圍(溫度)

      -20~+60℃

      量程范圍(濕度)

      5~95%RH

      溫度精度

      ±2℃

      濕度精度

      ±5%RH

      重復性

      溫度:±1℃ ;濕度:±1%RH

      遲滯(溫度)

      ±0.3℃

      遲滯(濕度)

      ±0.3%RH

       

      02

      傳感器原理

      1.原理圖

      單總線上必須有一個上拉電阻(R1)以實現單總線閑置時,其處于高電平狀態。 

      2.工作時序

      3.工作原理:起始信號與響應信號

       

       

       

      4.工作原理:讀數據時序

       

       

      5.工作原理:DHT11數據格式

      34H + 01H + 18H + 8CH = D9H

       

      濕度高8位(整數)為34H,低8位(小數)為01H,將兩部分數值轉換為十進制后可以得出52.1,即濕度為52.1%RH。同理可以得出溫度為-24.12℃。此處溫度為負值時因為溫度數據的低8位的最高位Bit7為1;當最高位Bit7為0時,數值為正值。

       

       

       

       

       

      03
       
       
      程序設計

       

       

       

      1. main.c文件

       

      #include "stm32f10x.h"#include "led.h"#include "usart.h"#include "delay.h"#include "dht11.h"#include "oled.h"/*****************畢業設計******************            STM32 * 項目      :  1.DHT11溫度濕度傳感器實驗                      * 版本      :   V1.0 * 日期      :   2024.8.4 * MCU      :  STM32F103C8T6 * 接口      :  參看DHT11.h               **********************BEGIN***********************/u8 temp;u8 humi;int main(void){     SystemInit();//配置系統時鐘為72M    delay_init(72);  LED_Init();  LED_On();  USART1_Config();//串口初始化  OLED_Init();  printf("Start \n");  delay_ms(1000);  while(DHT11_Init())  {    printf("DHT11 Error \r\n");    delay_ms(1000);  }  //顯示“溫度:”  OLED_ShowChinese(1,1, 0);  OLED_ShowChinese(1,2, 1);  OLED_ShowChar(1, 5, ':');  OLED_ShowChar(1, 9, 'C');    //顯示“濕度:”  OLED_ShowChinese(2,1, 2);  OLED_ShowChinese(2,2, 1);  OLED_ShowChar(2, 5, ':');    OLED_ShowChar(2, 9, '%');    while (1)  {    DHT11_Read_Data(&temp,&humi);//    printf("temp %d ,humi %d\r\n",temp,humi);    LED_Toggle();    delay_ms(1000);    //顯示溫度數據    OLED_ShowNum(1,6,temp,2);    //顯示濕度數據    OLED_ShowNum(2,6,humi,2);  }}

       

       

       

      2. dht11.h文件

       

      #ifndef __DHT11_H#define __DHT11_H#include "stm32f10x.h"                  // Device header#include "delay.h" /*****************畢業設計******************            STM32 * 文件      :  DHT11溫度濕度傳感器h文件                    * 版本      :   V1.0 * 日期      :   2024.8.4 * MCU      :  STM32F103C8T6 * 接口      :  見代碼              **********************BEGIN***********************/***************根據自己需求更改****************///DHT11引腳宏定義#define DHT11_GPIO_PORT  GPIOA#define DHT11_GPIO_PIN   GPIO_Pin_6#define DHT11_GPIO_CLK   RCC_APB2Periph_GPIOA/*********************END**********************/ //輸出狀態定義#define OUT 1#define IN  0 //控制DHT11引腳輸出高低電平#define DHT11_Low  GPIO_ResetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN)#define DHT11_High GPIO_SetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN) u8 DHT11_Init(void);//初始化DHT11u8 DHT11_Read_Data(u8 *temp,u8 *humi);//讀取溫濕度數據u8 DHT11_Read_Byte(void);//讀取一個字節的數據u8 DHT11_Read_Bit(void);//讀取一位的數據void DHT11_Mode(u8 mode);//DHT11引腳輸出模式控制u8 DHT11_Check(void);//檢測DHT11void DHT11_Rst(void);//復位DHT11    #endif

       

       

       

      3. dht11.c文件

       

      #include "dht11.h"#include "delay.h"      /*****************畢業設計******************                      STM32 * 文件      :  DHT11溫度濕度傳感器c文件                    * 版本      : V1.0 * 日期      : 2024.8.4 * MCU      :  STM32F103C8T6 * 接口      :  見dht11.h文件              **********************BEGIN***********************/            //復位DHT11void DHT11_Rst(void)     {                   DHT11_Mode(OUT);   //SET OUTPUT  DHT11_Low;         //拉低DQ  delay_ms(20);      //主機拉低18~30ms  DHT11_High;       //DQ=1   delay_us(13);       //主機拉高10~35us} //等待DHT11的回應//返回1:未檢測到DHT11的存在//返回0:存在u8 DHT11_Check(void)      {     u8 retry=0;  DHT11_Mode(IN);//SET INPUT       while (GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//DHT11會拉低40~80us  {    retry++;    delay_us(1);  };     if(retry>=100)return 1;  else retry=0;    while (!GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//DHT11拉低后會再次拉高40~80us  {    retry++;    delay_us(1);  };  if(retry>=100)return 1;        return 0;} //從DHT11讀取一個位//返回值:1/0u8 DHT11_Read_Bit(void)        {   u8 retry=0;  while(GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//等待變為低電平  {    retry++;    delay_us(1);  }  retry=0;  while(!GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN)&&retry<100)//等待變高電平  {    retry++;    delay_us(1);  }  delay_us(40);//等待40us  if(GPIO_ReadInputDataBit(DHT11_GPIO_PORT,DHT11_GPIO_PIN))return 1;  else return 0;       } //從DHT11讀取一個字節//返回值:讀到的數據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讀取一次數據//temp:溫度值(范圍:0~50°)//humi:濕度值(范圍:20%~90%)//返回值: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位數據    {      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:存在       u8 DHT11_Init(void){      GPIO_InitTypeDef  GPIO_InitStructure;     RCC_APB2PeriphClockCmd(DHT11_GPIO_CLK, ENABLE);   //使能PA端口時鐘   GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;         //PG11端口配置   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽輸出   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure);         //初始化IO口   GPIO_SetBits(DHT11_GPIO_PORT,DHT11_GPIO_PIN);             //PG11 輸出高          DHT11_Rst();  //復位DHT11  return DHT11_Check();//等待DHT11的回應} void DHT11_Mode(u8 mode){  GPIO_InitTypeDef GPIO_InitStructure;  if(mode)  {    GPIO_InitStructure.GPIO_Pin = DHT11_GPIO_PIN;    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  }  else  {    GPIO_InitStructure.GPIO_Pin =  DHT11_GPIO_PIN;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  }  GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStructure);}

       

       

       

      04
       
       
      實驗演示
       

       

       

       

      posted @ 2024-12-17 16:10  jefften  閱讀(3298)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 防城港市| 麻豆国产传媒精品视频| 风间由美性色一区二区三区| 丰满人妻熟妇乱精品视频| 精品人妻av中文字幕乱| 男人天堂亚洲天堂女人天堂| 国外av片免费看一区二区三区| 亚洲一区二区偷拍精品| 男女性高爱潮免费网站| 国产三级黄色的在线观看| 377p欧洲日本亚洲大胆| 成人无码午夜在线观看| 五月婷婷开心中文字幕| 免费人成年激情视频在线观看| 无码日韩做暖暖大全免费不卡| 国产成人综合色就色综合| 国产一区二区不卡在线看| 狠狠色噜噜狠狠狠狠色综合久av| 蜜桃AV抽搐高潮一区二区| 久久亚洲精品人成综合网| 国产精品亚洲一区二区z| 人妻少妇456在线视频| 久章草在线毛片视频播放 | 丰满无码人妻热妇无码区| 在国产线视频A在线视频| 通州区| 国产AV永久无码青青草原| 久久99精品久久久久久青青| 日韩一区二区黄色一级片| 亚洲熟女乱色一区二区三区| www国产精品内射熟女| 亚洲午夜成人精品电影在线观看 | 日韩V欧美V中文在线| 精品国偷自产在线视频99| 成人免费无遮挡在线播放| 丰满少妇特黄一区二区三区| 久久久久免费看黄a片app| 国产播放91色在线观看| 国产一区二区三区美女| 国产老肥熟一区二区三区| 久久天天躁夜夜躁狠狠|