国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>傳感器>

詳解DHT11數(shù)字溫濕度傳感器實(shí)驗(yàn)

2018年10月07日 11:43 網(wǎng)絡(luò)整理 作者:工程師譚軍 用戶評(píng)論(0
  數(shù)字傳感器
?
  數(shù)字傳感器是指將傳統(tǒng)的模擬式傳感器經(jīng)過(guò)加裝或改造A/D轉(zhuǎn)換模塊,使之輸出信號(hào)為數(shù)字量(或數(shù)字編碼)的傳感器,主要包括:放大器、A/D轉(zhuǎn)換器、微處理器CPU)、存儲(chǔ)器、通訊接口、溫度測(cè)試電路等,在微處理器和傳感器變得越來(lái)越便宜的今天,全自動(dòng)或半自動(dòng)(通過(guò)人工指令進(jìn)行高層次操作,自動(dòng)處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的參數(shù)。
?
  特點(diǎn)
?
  1、先進(jìn)的A/D轉(zhuǎn)換技術(shù)和智能濾波算法,在滿量程的情況下仍可保證輸出碼的穩(wěn)定。
?
  2、可行的數(shù)據(jù)存儲(chǔ)技術(shù),保證模塊參數(shù)不會(huì)丟失。
?
  3、良好的電磁兼容性能。
?
  4、傳感器的性能采用數(shù)字化誤差補(bǔ)償技術(shù)和高度集成化電子元件,用軟件實(shí)現(xiàn)傳感器的線性、零點(diǎn)、溫漂、蠕變等性能參數(shù)的綜合補(bǔ)償,消除了人為因素對(duì)補(bǔ)償?shù)挠绊懀蟠筇岣吡藗鞲衅骶C合精度和可靠性。
?
  5、傳感器的輸出一致性誤差可以達(dá)到0.02%以內(nèi)甚至更高,傳感器的特性參數(shù)可完全相同,因而具有良好的互換性。
?
  6、采用A/D轉(zhuǎn)換電路、數(shù)字化信號(hào)傳輸和數(shù)字濾波技術(shù),傳感器的抗干擾能力增加,信號(hào)傳輸距離遠(yuǎn),提高了傳感器的穩(wěn)定性。
?
  7、數(shù)字傳感器能自動(dòng)采集數(shù)據(jù)并可預(yù)處理、存儲(chǔ)和記憶,具有唯一標(biāo)記,便于故障診斷。
?
  8、傳感器采用標(biāo)準(zhǔn)的數(shù)字通訊接口,可直接連入計(jì)算機(jī),也可與標(biāo)準(zhǔn)工業(yè)控制總線連接,方便靈活。
?
  9, 數(shù)字傳感器是將AD,EPROM,DIE(指還未封裝的傳感器芯片,屬于裸片,大小介于cell和chip之間),封裝在一塊用PCB,金屬塊或陶瓷板上的集成。通過(guò)各種溫度,壓力點(diǎn)的校準(zhǔn),計(jì)算出DIE的線性,再利用AD去補(bǔ)償?shù)姆椒庸ざ傻摹?/div>
?
  應(yīng)用及前景
?
  在微處理器和傳感器變得越來(lái)越便宜的今天,全自動(dòng)或半自動(dòng)(通過(guò)人工指令進(jìn)行高層次操作,自動(dòng)處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的參數(shù)。尤其是MEMS(微型機(jī)電系統(tǒng))技術(shù),它使數(shù)字傳感器的體積非常微小并且能耗與成本也很低。以納米碳管或其它納米材料制成的納米傳感器同樣具有巨大的潛力 [1] 。
?
  即使在萌芽階段,人們?nèi)匀徽J(rèn)為在不久的將來(lái)數(shù)字傳感器對(duì)電子市場(chǎng)具有重要的推動(dòng)作用。制作數(shù)字傳感器的接口以及支持用于數(shù)字傳感器網(wǎng)絡(luò)的形式多樣的通訊協(xié)議都是對(duì)技術(shù)工藝的巨大挑戰(zhàn)。傳感器的非均質(zhì)特性和其操作條件的多樣化也對(duì)技術(shù)工藝提出了巨大的挑戰(zhàn)。
?
  現(xiàn)在系統(tǒng)設(shè)計(jì)所包含的傳感器和處理器越來(lái)越多。隨著傳感器和處理器價(jià)格的不斷降低,取代機(jī)械控制結(jié)構(gòu)的閾值也在不斷變化。在系統(tǒng)中選擇正確的傳感器組合和處理算法可以顯著地降低原材料及能耗的費(fèi)用并提高系統(tǒng)的總體性能。目前,不斷提高操作的簡(jiǎn)化程度和延長(zhǎng)能源的使用壽命變得越來(lái)越重要,尤其是如今越來(lái)越多的傳感器網(wǎng)絡(luò)動(dòng)輒就配置1000或更多的傳感器節(jié)點(diǎn)。

  DHT11是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個(gè)電阻式測(cè)濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。通過(guò)單片機(jī)等微處理器簡(jiǎn)單的電路連接就能夠?qū)崟r(shí)的采集本地濕度和溫度。DHT11與單片機(jī)之間能采用簡(jiǎn)單的單總線進(jìn)行通信,僅僅需要一個(gè)I/O口。傳感器內(nèi)部濕度和溫度數(shù)據(jù)40Bit的數(shù)據(jù)一次性傳給單片機(jī),數(shù)據(jù)采用校驗(yàn)和方式進(jìn)行校驗(yàn),有效的保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。DHT11功耗很低,5V電源電壓下,工作平均最大電流0.5mA。

  DHT11的技術(shù)參數(shù)如下:

  l 工作電壓范圍:3.3V-5.5V

  l 工作電流 :平均0.5mA

  l 輸出:?jiǎn)慰偩€數(shù)字信號(hào)

  l 測(cè)量范圍:濕度20~90%RH,溫度0~50℃

  l 精度 :濕度±5%,溫度±2℃

  l 分辨率 :濕度1%,溫度1℃

  DHT11的管腳排列如圖36.1.1所示:

  圖36.1.1 DHT11管腳排列圖

  雖然DHT11與DS18B20類似,都是單總線訪問(wèn),但是DHT11的訪問(wèn),相對(duì)DS18B20來(lái)說(shuō)要簡(jiǎn)單很多。下面我們先來(lái)看看DHT11的數(shù)據(jù)結(jié)構(gòu)。

  DHT11數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式。即,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5Byte(40Bit)組成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。DHT11的數(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)該分開(kāi)處理。例如,某次從DHT11讀到的數(shù)據(jù)如圖36.1.2所示:

  圖36.1.2 某次讀取到DHT11的數(shù)據(jù)

  由以上數(shù)據(jù)就可得到濕度和溫度的值,計(jì)算方法:

  濕度= byte4 。 byte3=45.0 (%RH)

  溫度= byte2 。 byte1=28.0 ( ℃)

  校驗(yàn)= byte4+ byte3+ byte2+ byte1=73(=濕度+溫度)(校驗(yàn)正確)

  可以看出,DHT11的數(shù)據(jù)格式是十分簡(jiǎn)單的,DHT11和MCU的一次通信最大為3ms左右,建議主機(jī)連續(xù)讀取時(shí)間間隔不要小于100ms。

  下面,我們介紹一下DHT11的傳輸時(shí)序。DHT11的數(shù)據(jù)發(fā)送流程如圖36.1.3所示:

  圖36.1.3 DHT11數(shù)據(jù)發(fā)送流程

  首先主機(jī)發(fā)送開(kāi)始信號(hào),即:拉低數(shù)據(jù)線,保持t1(至少18ms)時(shí)間,然后拉高數(shù)據(jù)線t2(20~40us)時(shí)間,然后讀取DHT11的相應(yīng),正常的話,DHT11會(huì)拉低數(shù)據(jù)線,保持t3(40~50us)時(shí)間,作為響應(yīng)信號(hào),然后DHT11拉高數(shù)據(jù)線,保持t4(40~50us)時(shí)間后,開(kāi)始輸出數(shù)據(jù)。

  DHT11輸出數(shù)字‘0’的時(shí)序如圖36.1.4所示:

  圖36.1.4 DHT11數(shù)字‘0’時(shí)序

  DHT11輸出數(shù)字‘1’的時(shí)序如圖36.1.5所示:

  圖36.1.5 DHT11數(shù)字‘1’時(shí)序

  通過(guò)以上了解,我們就可以通過(guò)STM32來(lái)實(shí)現(xiàn)對(duì)DHT11的讀取了。DHT11的介紹就到這里,更詳細(xì)的介紹,請(qǐng)參考DHT11的數(shù)據(jù)手冊(cè)。

  36.2 硬件設(shè)計(jì)

  由于開(kāi)發(fā)板上標(biāo)準(zhǔn)配置是沒(méi)有DHT11這個(gè)傳感器的,只有接口,所以要做本章的實(shí)驗(yàn),大家必須找一個(gè)DHT11插在預(yù)留的DHT11接口上。

  本章實(shí)驗(yàn)功能簡(jiǎn)介:開(kāi)機(jī)的時(shí)候先檢測(cè)是否有DHT11存在,如果沒(méi)有,則提示錯(cuò)誤。只有在檢測(cè)到DHT11之后才開(kāi)始讀取溫濕度值,并顯示在LCD上,如果發(fā)現(xiàn)了DHT11,則程序每隔100ms左右讀取一次數(shù)據(jù),并把溫濕度顯示在LCD上。同樣我們也是用DS0來(lái)指示程序正在運(yùn)行。

  所要用到的硬件資源如下:

  1) 指示燈DS0

  2) TFTLCD模塊

  3) DHT11溫濕度傳感器

  這些我們都已經(jīng)介紹過(guò)了,DHT11和DS18B20的接口是共用一個(gè)的,不過(guò)DHT11有4條腿,需要把U13的4個(gè)接口都用上,將DHT11傳感器插入到這個(gè)上面就可以通過(guò)STM32來(lái)讀取溫濕度值了。連接示意圖如圖36.2.1所示:

  圖36.2.1 DHT11連接示意圖

  這里要注意,將DHT11貼有字的一面朝內(nèi),而有很多孔的一面朝外,然后然后插入如圖所示的四個(gè)孔內(nèi)就可以了。

  36.3 軟件設(shè)計(jì)

  打開(kāi)上一章的工程,首先在HARDWARE文件夾下新建一個(gè)DHT11的文件夾。然后新建一個(gè)dht11.c和dht11.h的文件保存在DHT11文件夾下,并將這個(gè)文件夾加入頭文件包含路徑。

  打開(kāi)dht11.c在該文件下輸入如下代碼:

  #include “dht11.h”

  #include “delay.h”

  //復(fù)位DHT11

  void DHT11_Rst(void)

  {

  DHT11_IO_OUT(); //SET OUTPUT

  DHT11_DQ_OUT=0; //拉低DQ

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

  DHT11_DQ_OUT=1; //DQ=1

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

  }

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

  //返回1:未檢測(cè)到DHT11的存在

  //返回0:存在

  u8 DHT11_Check(void)

  {

  u8 retry=0;

  DHT11_IO_IN();//SET INPUT

  while (DHT11_DQ_IN&&retry《100)//DHT11會(huì)拉低40~80us

  {

  retry++;

  delay_us(1);

  };

  if(retry》=100)return 1;

  else retry=0;

  while (!DHT11_DQ_IN&&retry《100)//DHT11拉低后會(huì)再次拉高40~80us

  {

  retry++;

  delay_us(1);

  };

  if(retry》=100)return 1;

  return 0;

  }

  //從DHT11讀取一個(gè)位

  //返回值:1/0

  u8 DHT11_Read_Bit(void)

  {

  u8 retry=0;

  while(DHT11_DQ_IN&&retry《100)//等待變?yōu)榈碗娖?/p>

  {

  retry++;

  delay_us(1);

  }

  retry=0;

  while(!DHT11_DQ_IN&&retry《100)//等待變高電平

  {

  retry++;

  delay_us(1);

  }

  delay_us(40);//等待40us

  if(DHT11_DQ_IN)return 1;

  else return 0;

  }

  //從DHT11讀取一個(gè)字節(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_Rst();

  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 同時(shí)檢測(cè)DHT11的存在

  //返回1:不存在

  //返回0:存在

  u8 DHT11_Init(void)

  {

  RCC-》APB2ENR|=1《《8; //使能PORTG口時(shí)鐘

  GPIOG-》CRH&=0XFFFF0FFF;//PORTG.11 推挽輸出

  GPIOG-》CRH|=0X00003000;

  GPIOG-》ODR|=1《《11; //輸出1

  DHT11_Rst();

  return DHT11_Check();

  }

  該部分代碼就是根據(jù)我們前面介紹的單總線操作時(shí)序來(lái)讀取DHT11的溫濕度值的,DHT11的溫濕度值通過(guò)DHT11_Read_Data函數(shù)讀取,如果返回0,則說(shuō)明讀取成功,返回1,則說(shuō)明讀取失敗。保存dht11.c,并把該文件加入到HARDWARE組下,然后我們打開(kāi)dht11.h,在該文件下輸入如下內(nèi)容:

  #ifndef __DHT11_H

  #define __DHT11_H

  #include “sys.h”

  //IO方向設(shè)置

  #define DHT11_IO_IN() {GPIOG-》CRH&=0XFFFF0FFF;GPIOG-》CRH|=8《《12;}

  #define DHT11_IO_OUT() {GPIOG-》CRH&=0XFFFF0FFF;GPIOG-》CRH|=3《《12;}

  ////IO操作函數(shù)

  #define DHT11_DQ_OUT PGout(11) //數(shù)據(jù)端口 PG11

  #define DHT11_DQ_IN PGin(11) //數(shù)據(jù)端口 PG11

  u8 DHT11_Init(void); //初始化DHT11

  u8 DHT11_Read_Data(u8 *temp,u8 *humi);//讀取溫濕度

  u8 DHT11_Read_Byte(void); //讀出一個(gè)字節(jié)

  u8 DHT11_Read_Bit(void); //讀出一個(gè)位

  u8 DHT11_Check(void); //檢測(cè)是否存在DHT11

  void DHT11_Rst(void); //復(fù)位DHT11

  #endif

  此部分代碼比較簡(jiǎn)單,接下來(lái),我們先保存這段代碼,然后打開(kāi)test.c,在該文件下修改main函數(shù)如下:

  int main(void)

  {

  u8 t=0;

  u8 temperature;

  u8 humidity;

  Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置

  uart_init(72,9600); //串口初始化為9600

  delay_init(72); //延時(shí)初始化

  LED_Init(); //初始化與LED連接的硬件接口

  LCD_Init(); //初始化LCD

  usmart_dev.init(72); //初始化USMART

  KEY_Init(); //按鍵初始化

  POINT_COLOR=RED;//設(shè)置字體為紅色

  LCD_ShowString(60,50,200,16,16,“WarShip STM32”);

  LCD_ShowString(60,70,200,16,16,“DHT11 TEST”);

  LCD_ShowString(60,90,200,16,16,“ATOM@ALIENTEK”);

  LCD_ShowString(60,110,200,16,16,“2012/9/12”);

  while(DHT11_Init()) //DHT11初始化

  {

  LCD_ShowString(60,130,200,16,16,“DHT11 Error”);

  delay_ms(200);

  LCD_Fill(60,130,239,130+16,WHITE);

  delay_ms(200);

  }

  LCD_ShowString(60,130,200,16,16,“DHT11 OK”);

  POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色

  LCD_ShowString(60,150,200,16,16,“Temp: C”);

  LCD_ShowString(60,170,200,16,16,“Humi: %”);

  while(1)

  {

  if(t==0)//每100ms讀取一次

  {

  DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值

  LCD_ShowNum(60+40,150,temperature,2,16); //顯示溫度

  LCD_ShowNum(60+40,170,humidity,2,16); //顯示濕度

  }

  delay_ms(10);

  t++;

  if(t==20)

  {

  t=0;

  LED0=!LED0;

  }

  }

  }


非常好我支持^.^

(7) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:金巧 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?