找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3545|回復(fù): 1
收起左側(cè)

多個18b20串聯(lián)測溫問題,求大神指導(dǎo)

[復(fù)制鏈接]
ID:405738 發(fā)表于 2018-10-23 21:13 | 顯示全部樓層 |閱讀模式
10黑幣
假設(shè):串聯(lián)4個18b20
      1.單片機(jī)上電后逐個給18b20供電讀取rom序列號存入4個數(shù)組
       2.通過匹配rom序列號來讀取溫度。
讀取rom序列號代碼:
       void rom() //讀取序列號
{
uchar i;
int j;
initionds18b20(); //復(fù)位
delay1(1); //延時
writeds18b20(0x33); //發(fā)送讀序列號子程序
for        (j=0;j<9;j++)
{
         ds_rom1[j]=readds18b20(); //讀取序列號存入數(shù)組


}

}
匹配代碼:
     void Match_rom(uchar a)         //匹配ROM
{
        uchar j;
        writeds18b20(0x55);           //發(fā)送匹配ROM命令
        if(a==1)
        {
                for(j=0;j<8;j++)
                        writeds18b20(ds_rom1[j]);                //發(fā)送18B20的序列號,先發(fā)送低字節(jié)
        }
}

問題:數(shù)組內(nèi)的數(shù)據(jù)處理,獲取rom序列號后數(shù)組內(nèi)可能是{28,b0,96,45,92,03,02,dd}通過匹配肯定不成功。
       {0x28,0xb0,0x96,0x45,0x92,0x03,0x02,0xdd}匹配成功

關(guān)于18b20使用疑惑:
  1網(wǎng)上教程大部分是將rom序列號寫入程序中,如果更換18b20還要從新編寫,我覺得不方便
  2還有一種是用18b20搜索,多個18b20搜索后讀取溫度值。問題是有的需要固定位置,這一起讀取確定不了位置。
關(guān)于多點(diǎn)測溫想法:
1.一個18b20連接一個端口
2.利用鎖存器切換多個18b20供電.

回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2018-10-24 23:41 | 顯示全部樓層
這里的多點(diǎn),指的是只用兩根線,就在這兩根線上并聯(lián)多個18B20,不是串聯(lián).你說的鎖存器,那不如直接用單片機(jī)的IO.
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表