亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機讀取18B20傳感器的ROM序列碼是8個FF

查看數: 928 | 評論數: 6 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2025-11-22 20:08

正文摘要:

      最近搞51單片機4個18b20傳感器并聯,通過讀取ROM序列碼查詢溫度并顯示在1602液晶上,現在已經能顯示,并且使用了幾天。4個18b20的ROM序列碼是一個單獨的工程代讀出來,寫到另一個工程的數 ...

回復

ID:382454 發表于 2025-12-1 15:45
這個數據表格里肯定有說,單總線多個并聯。也可以分開多個IO口。
ID:71233 發表于 2025-11-24 09:17
我覺得多半是時序不對
ID:1133081 發表于 2025-11-24 08:34
小橋流水不 發表于 2025-11-23 19:12
這4個18b20我是知道序列號的,是之前讀出來做好記錄的,如果現在將這4個序列號寫到數組里能讀出并顯示溫 ...

在已知多器件的序列號的條件下,需要發匹配命令0x55,匹配成功才能正確讀取指定器件返回的溫度值。例如:
  1. //匹配多通道DS18B20序列號
  2. void SeriesNumber(u8 ch)
  3. {
  4.         u8 i;
  5.         DS18B20_WriteByte(0x55); //發送匹配 ROM 命令
  6.         for(i=0;i<8;i++)
  7.                 DS18B20_WriteByte(table[ch][i]);
  8. }
  9. //讀取多通道DS18B20溫度函數
  10. u16 ReadTemperature(u8 ch)
  11. {
  12.         u16 TempH, TempL, Temperature;
  13.         DS18B20_Reset();                //設備復位
  14.         DS18B20_WriteByte(0xCC);        //跳過ROM匹配
  15.         DS18B20_WriteByte(0x44);        //啟動轉換
  16.         while (!DQ);                    //等待轉換完成
  17.         DS18B20_Reset();                //設備復位
  18.         SeriesNumber(ch);               //匹配 ROM
  19.         DS18B20_WriteByte(0xBE);        //讀暫存存儲器命令
  20.         TempL = DS18B20_ReadByte();     //讀溫度低字節
  21.         TempH = DS18B20_ReadByte();     //讀溫度高字節       
  22.         if(TempH & 0xf8)                //判斷是否位負數
  23.         {
  24.                 MinusFlag = 1;              //設置負數標志
  25.                 Temperature = (TempH<<8) | TempL;
  26.                 Temperature = ~Temperature + 1;
  27.                 Temperature *= 0.625;       //0.0625 * 10,保留1位小數點
  28.         }
  29.         else
  30.         {
  31.                 MinusFlag = 0;              //清除負數標志
  32.                 Temperature = (((TempH<<8) | TempL) * 0.625); //0.0625 * 10,保留1位小數點
  33.         }       
  34.         return Temperature;
  35. }
復制代碼




ID:888875 發表于 2025-11-23 21:04
問題太多,還有啟動溫度轉換之后要等一定時間才能讀取到準確數據
ID:1151496 發表于 2025-11-23 19:12
WL0123 發表于 2025-11-23 08:22
單線多點18b20的測溫需要先讀出各分支器件的序列號并保存,通常采用“二讀法”,再根據序列號匹配各分支器 ...

這4個18b20我是知道序列號的,是之前讀出來做好記錄的,如果現在將這4個序列號寫到數組里能讀出并顯示溫度,我現在想加一個功能是插一個傳感器,按下按鍵,讀出ROM碼再保存到eep。這個功能是為了方便更換傳感器不用重新燒錄。現在遇到的問題是我單獨只能讀出2個正確的rom碼,另外兩個讀出來都是8個FF。你要說傳感器壞了吧,把這個傳感器之前讀出來的ROM碼寫進去又能讀出溫度。
ID:1133081 發表于 2025-11-23 08:22
單線多點18b20的測溫需要先讀出各分支器件的序列號并保存,通常采用“二讀法”,再根據序列號匹配各分支器件,才能正確獲取各分支器件的溫度值。

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表