久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2813|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[更好用的單片機(jī)]Stduino學(xué)習(xí)(三十)DS18B20模塊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 Stduino 于 2020-8-18 20:34 編輯

說(shuō)明:
1DS18B20是由 DALLAS 半導(dǎo)體公司推出的一種的單總線接口的溫度傳感器。與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡(jiǎn)單的數(shù)字化溫度傳感器。

單總線結(jié)構(gòu)具有簡(jiǎn)潔且經(jīng)濟(jì)的特點(diǎn),可使用戶輕松地組建傳感器網(wǎng)絡(luò),從而為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,測(cè)量溫度范圍為-55+125℃,精度為±0.5℃,F(xiàn)場(chǎng)溫度直接以單總線的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn) 9-12 位的數(shù)字值讀數(shù)方式。它工作在 3~5.5V 的電壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計(jì)靈活、方便,設(shè)定分辨率及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在 EEPROM 中,掉電后依然保存。
DS18B20的操作步驟如下:
1.初始化單總線對(duì)象;
2.搜索單總線上的仆從設(shè)備,并返回其ROM地址;
3.對(duì)ROM地址進(jìn)行處理,包括CRC校驗(yàn)、判斷芯片類型,無(wú)誤后進(jìn)行下一步;
4. 讀取溫度,具體過(guò)程包括:
  4.1 復(fù)位,向DS18B20 發(fā)溫度轉(zhuǎn)換命令(0X44
  4.2 重置,發(fā)讀取存儲(chǔ)命令(0XBE
  4.3 對(duì)連續(xù)校正的兩個(gè)字節(jié)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
5. 將溫度通過(guò)串口打印

實(shí)驗(yàn)?zāi)康模?/strong>
在本例中,我們將利用 DS18B20模塊測(cè)定溫度。

器材:
Stduino UNO / Nano; 杜邦線;數(shù)字溫度傳感器(DS18B20 )模塊

電路連接:


代碼展示:
#include <OneWire.h>


OneWire  ds(10);  // 選擇I/O,實(shí)例化對(duì)象

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;

  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }

  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr, HEX);
  }

  
if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();

  // 利用ROM最低8位判斷是否屬于DS18B20系列,以及具體的種類
  switch (addr[0]) {
    case 0x28:
      Serial.println("  Chip = DS18B20");
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  }

//4讀取溫度,具體過(guò)程包括:
//4.1復(fù)位、向DS18B20發(fā)溫度轉(zhuǎn)換命令(0X44)
  ds.reset();            
  ds.select(addr);
  ds.write(0x44, 1);        // 開(kāi)始溫度轉(zhuǎn)換, 并保持電源接通單總線

  delay(1000);   

//4.2復(fù)位、發(fā)讀取存儲(chǔ)器命令(0XBE)
  present = ds.reset();      
  ds.select(addr);   
  ds.write(0xBE);         // 讀取暫存器

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // 將暫存器里的九字節(jié)數(shù)據(jù)存儲(chǔ)給data
    data = ds.read();
    Serial.print(data, HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");          //CRC校驗(yàn)
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // 4.3對(duì)連續(xù)讀出的兩個(gè)字節(jié)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

    int16_t raw = (data[1] << 8) | data[0];//由于最終結(jié)果是16位整形數(shù)據(jù),因此被存儲(chǔ)為“int16_t”類型

  // 通過(guò)data第四字節(jié)判斷保留的溫度數(shù)據(jù)位數(shù),將多余的位數(shù)置0
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  // 9位, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10位, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11位, 375 ms
                                 // 默認(rèn)為12位,不需要處理,轉(zhuǎn)換時(shí)間750 ms

  celsius = (float)raw / 16.0;  //將數(shù)據(jù)轉(zhuǎn)化為實(shí)際溫度,即把數(shù)據(jù)乘以0.0625
  fahrenheit = celsius * 1.8 + 32.0;  //攝氏度轉(zhuǎn)華氏溫度

  //4.4串口打印
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
}


實(shí)驗(yàn)效果:
如串聯(lián)監(jiān)視器所示,現(xiàn)在的溫度位 34.50 ℃。


Stduino IDE是一款面向32位處理器快速入門學(xué)習(xí)的集成開(kāi)發(fā)平臺(tái),目前已經(jīng)支持Arduino_Core_STM32框架,集聚快捷、高效、免費(fèi)、開(kāi)源、易得于一身,軟件還集成了GDB調(diào)試功能。IDE當(dāng)前支持的功能有:

    GDB調(diào)試
    封裝庫(kù)下載安裝
    代碼自動(dòng)補(bǔ)全提示
    中英文模式
    UTF-8\GBK編碼格式
    代碼快速格式化
    SWD\串口程序下載&調(diào)試(已驗(yàn)證)
    DFU程序下載方式(待驗(yàn)證)
    USB HID程序下載方式(待驗(yàn)證)
    maple DFU程序下載方式(待驗(yàn)證)
    maple DFU2程序下載方式(待驗(yàn)證)
    MassStorage程序下載方式(待驗(yàn)證)

更多功能細(xì)節(jié)請(qǐng)點(diǎn)擊圖片上水印顯示的網(wǎng)址進(jìn)行了解

已經(jīng)支持的芯片&板型列表:

    Stduino UNO&Nano
    Nucleo 144 boards
    Nucleo 64 boards
    Nucleo 32 boards
    Discovery boards
    Eval boards
    STM32MP1 series coprocessor boards
    Generic STM32F0 boards
    Generic STM32F1 boards
    Generic STM32F3 boards
    Generic STM32F4 boards
    Generic STM32H7 boards
    Generic STM32L0 boards
    3D printer boards
    LoRa boards
    Electronic Speed Controller boards
    Generic flight controllers
    Garatronics boards
    Midatronics boards

更多功能集成正在進(jìn)行中~

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: a级在线免费 | 国产高清免费在线 | 国产免费黄网 | 成人精品毛片国产亚洲av十九禁 | 成人欧美一区二区三区1314 | 日韩中文字幕在线观看 | 日本一区二区在线视频 | 视频一区二区三区中文字幕 | 精品国产色 | 日韩欧美在线观看视频网站 | 91精品麻豆日日躁夜夜躁 | 在线天堂免费中文字幕视频 | 欧美日韩一区在线观看 | 中文字幕在线免费视频 | 国产91丝袜在线18 | 国产欧美日韩综合精品一区二区 | 亚洲一区二区三区免费视频 | 国产蜜臀| 91亚洲国产成人久久精品网站 | 久久精品亚洲 | 国产精品99久久久久久久久久久久 | 日韩精品免费一区 | 欧美日韩国产精品一区 | 日本在线黄色 | 一片毛片| 黄色精品 | 国产精品久久久久久久久免费高清 | 欧美99久久精品乱码影视 | 午夜精品视频在线观看 | 在线āv视频 | 国产精品中文字幕在线观看 | 狠狠爱免费视频 | 毛片在线看看 | 黄色免费观看网站 | 国产欧美日韩二区 | 亚洲最大成人综合 | 国产成人福利视频在线观看 | 欧美男人天堂 | 狠狠亚洲 | 成人免费视屏 | av免费观看在线 |