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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2794|回復: 0
收起左側

[更好用的單片機]Stduino學習(三十)DS18B20模塊

[復制鏈接]
ID:786043 發表于 2020-8-18 20:31 | 顯示全部樓層 |閱讀模式
本帖最后由 Stduino 于 2020-8-18 20:34 編輯

說明:
1DS18B20是由 DALLAS 半導體公司推出的一種的單總線接口的溫度傳感器。與傳統的熱敏電阻等測溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡單的數字化溫度傳感器。
30-DS18B20-展示圖.jpg
單總線結構具有簡潔且經濟的特點,可使用戶輕松地組建傳感器網絡,從而為測量系統的構建引入全新概念,測量溫度范圍為-55+125℃,精度為±0.5℃。現場溫度直接以單總線的數字方式傳輸,大大提高了系統的抗干擾性。它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現 9-12 位的數字值讀數方式。它工作在 3~5.5V 的電壓范圍,采用多種封裝形式,從而使系統設計靈活、方便,設定分辨率及用戶設定的報警溫度存儲在 EEPROM 中,掉電后依然保存。
DS18B20的操作步驟如下:
1.初始化單總線對象;
2.搜索單總線上的仆從設備,并返回其ROM地址;
3.ROM地址進行處理,包括CRC校驗、判斷芯片類型,無誤后進行下一步;
4. 讀取溫度,具體過程包括:
  4.1 復位,向DS18B20 發溫度轉換命令(0X44
  4.2 重置,發讀取存儲命令(0XBE
  4.3 對連續校正的兩個字節數據進行轉換。
5. 將溫度通過串口打印

實驗目的:
在本例中,我們將利用 DS18B20模塊測定溫度。

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

電路連接:
30DS18B20電路連接.png

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


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

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讀取溫度,具體過程包括:
//4.1復位、向DS18B20發溫度轉換命令(0X44)
  ds.reset();            
  ds.select(addr);
  ds.write(0x44, 1);        // 開始溫度轉換, 并保持電源接通單總線

  delay(1000);   

//4.2復位、發讀取存儲器命令(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++) {           // 將暫存器里的九字節數據存儲給data
    data = ds.read();
    Serial.print(data, HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");          //CRC校驗
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();

  // 4.3對連續讀出的兩個字節數據進行轉換。

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

  // 通過data第四字節判斷保留的溫度數據位數,將多余的位數置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
                                 // 默認為12位,不需要處理,轉換時間750 ms

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

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


實驗效果:
如串聯監視器所示,現在的溫度位 34.50 ℃。
30-ds18b20效果圖.png

Stduino IDE是一款面向32位處理器快速入門學習的集成開發平臺,目前已經支持Arduino_Core_STM32框架,集聚快捷、高效、免費、開源、易得于一身,軟件還集成了GDB調試功能。IDE當前支持的功能有:

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

更多功能細節請點擊圖片上水印顯示的網址進行了解

已經支持的芯片&板型列表:

    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

更多功能集成正在進行中~

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜激情小视频 | 国产成人综合一区二区三区 | av入口 | 午夜爽爽爽男女免费观看 | 91在线一区 | 久久久国产一区二区三区四区小说 | 欧美日韩亚洲国产 | 国产精品99久久久久久宅男 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 欧美一区二区三区在线视频 | 日韩久草 | 成人午夜性成交 | 午夜精品久久久久久久久久久久久 | 国产精品久久久久久亚洲调教 | 日韩欧美在线视频一区 | 免费看国产精品视频 | 视频一区 国产精品 | 久久久久国产成人精品亚洲午夜 | 国产精品久久久久久久久 | 久久青| 日本一二三区电影 | 国产高清av免费观看 | 日本三级网址 | 午夜视频在线观看网址 | 色综合天天天天做夜夜夜夜做 | 中文字幕在线观看第一页 | 成人国产精品色哟哟 | 99爱在线| 精品久久99 | 日韩国产精品一区二区三区 | 国产福利在线 | 久久天天躁狠狠躁夜夜躁2014 | 午夜精品一区二区三区在线播放 | 国产一区二区三区色淫影院 | 国产欧美精品一区二区色综合朱莉 | 国产精品视频播放 | 在线一区视频 | 91高清在线观看 | 91人人看| 日韩视频一区在线观看 | 国产日韩av一区二区 |