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

QQ登錄

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

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

實(shí)現(xiàn)在同一個(gè)STM32 IO口上接多個(gè)DS18B20,進(jìn)行多點(diǎn)溫度測(cè)量教程

[復(fù)制鏈接]
ID:457339 發(fā)表于 2020-3-4 13:18 | 顯示全部樓層 |閱讀模式
如何在32單片機(jī)上掛多個(gè)DS18B20,見(jiàn)鏈接附件
首先包保證對(duì) DS18B20 讀寫操作的函數(shù)沒(méi)有問(wèn)題基本的
//從 DS18B20 讀取一個(gè)位
//返回值:1/0
u8 DS18B20_Read_Bit(void)              // read one bit
{
u8 data;
DS18B20_IO_OUT();//SET PA0 OUTPUT DS18B20_DQ_OUT=0;
delay_us(2); DS18B20_DQ_OUT=1; DS18B20_IO_IN();//SET PA0 INPUT delay_us(12); if(DS18B20_DQ_IN)data=1;
else data=0;
delay_us(50);
return data;
}

//從 DS18B20 讀取一個(gè)字節(jié)
//返回值:讀到的數(shù)據(jù)

u8 DS18B20_Read_Byte(void)              // read one byte

{
u8 i,j,dat;
dat=0;
for (i=1;i<=8;i++)
{
j=DS18B20_Read_Bit();
dat=(j<<7)|(dat>>1);
}
return dat;
}

//寫一個(gè)字節(jié)到 DS18B20
//dat:要寫入的字節(jié)

void DS18B20_Write_Byte(u8 dat)

{
u8 j;
u8 testb;
DS18B20_IO_OUT();//SET PA0 OUTPUT;
for (j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if (testb)

{
}
else
{


}
}
}



DS18B20_DQ_OUT=0;// Write 1 delay_us(2); DS18B20_DQ_OUT=1; delay_us(60);
DS18B20_DQ_OUT=0;// Write 0 delay_us(60); DS18B20_DQ_OUT=1; delay_us(2);

因?yàn)閱纹瑱C(jī)只對(duì)一個(gè) DS18B20 進(jìn)行操作,就不需要讀取 ROM 編碼以及匹配 ROM 編碼了, 只要用跳過(guò) ROM(0XCC)命令。
再進(jìn)行溫度的讀取和轉(zhuǎn)換就可以得到溫度值了

多點(diǎn)溫度讀取

但是有時(shí)我們做一個(gè)項(xiàng)目可能要測(cè)量多個(gè)位置的溫度,這個(gè)時(shí)候我們?nèi)稳豢梢赃x用 DS18B20 來(lái)完成這項(xiàng)工作。每一個(gè) DS18B20 都有自己的 48 位序列號(hào),我們可以通過(guò)這個(gè)序 列號(hào)在同一個(gè) IO 口上尋找不同的 DS18B20。然后接下來(lái)的操作就和讀取一個(gè) DS18B20 溫度 的是一樣的。

得到一個(gè) DS18B20 的光刻 ROM 是實(shí)現(xiàn)多點(diǎn)溫度采集的前提,首先初始化 DS18B20 的狀 態(tài),在向 DS18B20 寫讀 ROM(0X33)的指令,再接收數(shù)據(jù)即可。如下圖。
讀取出的光刻 ROM 可以通過(guò)下面的函數(shù)進(jìn)行檢驗(yàn)是否正確

得到的光刻 ROM 可以通過(guò)串口,打印到上位機(jī)上
然后在上位機(jī)中可以看到這樣的數(shù)據(jù)(看不清可以放大 WORD 來(lái)看)
要知道 64 位的光刻 ROM 中有 8 位是產(chǎn)品類型標(biāo)號(hào),每個(gè) DS18B20 都是一樣的,0X28。 要注意的問(wèn)題是在上位機(jī)超過(guò) 9 的數(shù)字,并不是以a,b,c,d……..的形式顯示,而是以 10,
11,12…….的形式顯示。

然后在通過(guò)自己的轉(zhuǎn)換就可得到光刻 ROM 了。

得到了光刻 ROM 再借助這兩個(gè)函數(shù)就可以進(jìn)行溫度讀取了

回復(fù)

使用道具 舉報(bào)

ID:416950 發(fā)表于 2020-3-31 14:32 | 顯示全部樓層
你好,請(qǐng)教你一個(gè)問(wèn)題,這個(gè)匹配ROM函數(shù)從哪里看出如何匹配3個(gè),顯示如何顯示三個(gè)的溫度。指點(diǎn)一下
回復(fù)

使用道具 舉報(bào)

ID:737981 發(fā)表于 2020-5-25 16:38 | 顯示全部樓層
你好,沒(méi)有看到附件啊

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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