|
18b20是單總線IC,用一個(gè)I/O口讀出一個(gè)18b20的步驟如下:
第一步:初始化18b20
第二步:寫(xiě)18b20的跳過(guò)ROM命令
第三步:寫(xiě)18b20的轉(zhuǎn)換溫度命令
第四步:初始化18B20
第五步:寫(xiě)18b20的跳過(guò)ROM命令
第六步:寫(xiě)18b20的讀暫存器命令
第七步:讀18b20的溫度
之所以有這么多的步驟,是因?yàn)槎鄠(gè)18b20的單總線可以共用一個(gè)I/O口,每個(gè)18b20內(nèi)含64位激光修正的只讀存儲(chǔ)ROM,扣除8位產(chǎn)品系列號(hào)和8位循環(huán)冗余校驗(yàn)碼(CRC)之后,產(chǎn)品序號(hào)占48位。這些產(chǎn)品序號(hào)可以看做是每個(gè)18b20的器件的地址系列號(hào),因此,多個(gè)18b20的單總線可以共用一個(gè)I/O口。
我沒(méi)有編過(guò)一個(gè)I/O口讀出多個(gè)18b20溫度的程序,估計(jì)就是在跳過(guò)ROM命令改為匹配ROM命令,就可以用一個(gè)I/O口讀出多個(gè)18b20溫度。我編過(guò)8個(gè)I/O口讀出8個(gè)18b20溫度,第一到六步可以對(duì)8個(gè)18b20同時(shí)進(jìn)行操作,從第七步開(kāi)始,分八次用不同的I/O口讀出8個(gè)18b20溫度。
假如18b20一個(gè)I/O口只能讀出一個(gè)18b20溫度,內(nèi)部也沒(méi)有產(chǎn)品序號(hào),那就簡(jiǎn)單了,只需要兩步,第一步:初始化,第二步:讀出溫度。 |
|