下載手機(jī)汽配人

stc12c5a60s2?18B20溫度傳感器相關(guān)問(wèn)題

官網(wǎng)上程序: #include "REG51.H" #include "INTRINS.H" typedef unsigned char BYTE; sbit DQ = P3^3; //DS18B20的數(shù)據(jù)口位P3.3 BYTE TPH; //存放溫度值的高字節(jié) BYTE TPL; //存放溫度值的低字節(jié) void DelayXus(BYTE n); void DS18B20_Reset(); void DS18B20_WriteByte(BYTE dat); BYTE DS18B20_ReadByte(); void main() { DS18B20_Reset(); //設(shè)備復(fù)位 DS18B20_WriteByte(0xCC); //跳過(guò)ROM命令 DS18B20_WriteByte(0x44); //開(kāi)始轉(zhuǎn)換命令 while (!DQ); //等待轉(zhuǎn)換完成 DS18B20_Reset(); //設(shè)備復(fù)位 DS18B20_WriteByte(0xCC); //跳過(guò)ROM命令 DS18B20_WriteByte(0xBE); //讀暫存存儲(chǔ)器命令 TPL = DS18B20_ReadByte(); //讀溫度低字節(jié) TPH = DS18B20_ReadByte(); //讀溫度高字節(jié) while (1); } /************************************** 延時(shí)X微秒(STC12C5A60S2@12M) 不同的工作環(huán)境,需要調(diào)整此函數(shù) 此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同 **************************************/ void DelayXus(BYTE n) { while (n--) { _nop_(); _nop_(); } } /************************************** 復(fù)位DS18B20,并檢測(cè)設(shè)備是否存在 **************************************/ void DS18B20_Reset() { CY = 1; while (CY) { DQ = 0; //送出低電平復(fù)位信號(hào) DelayXus(240); //延時(shí)至少480us DelayXus(240); DQ = 1; //釋放數(shù)據(jù)線 DelayXus(60); //等待60us
問(wèn) 提問(wèn)者:網(wǎng)友 2018-07-31
最佳回答
你的程序不全,CY應(yīng)該是定義的一個(gè)全局變量。 1、在void DS18B20_Reset() 函數(shù)中,CY的作用是用來(lái)判斷數(shù)據(jù)線接收到的是高電平還是低電平,如果是低電平(表示復(fù)位成功)則退出while循環(huán); 2、在void DS18B20_WriteByte(BYTE dat) 中CY就有點(diǎn)莫名其妙了。你可以參考這樣寫(xiě): void DS18B20_WriteByte(BYTE dat) { char i; for (i=0; i<8; i++) //8位計(jì)數(shù)器 { DQ = 0; //開(kāi)始時(shí)間片 DelayXus(1); //延時(shí)等待 if(dat & 0x01) DQ=1; //如果低位為1,輸出1 else DQ=0; //否則輸出0 dat >>= 1; //送出數(shù)據(jù) DelayXus(60); //等待時(shí)間片結(jié)束 DQ = 1; //恢復(fù)數(shù)據(jù)線 DelayXus(1); //恢復(fù)延時(shí) } } 3、如果CY是一個(gè)全局變量,對(duì)你的程序沒(méi)有影響,因?yàn)槟阌脙蓚€(gè)IO口讀兩個(gè)18B20是分開(kāi)的,并不是同時(shí)進(jìn)行。但是TPH和TPL需要有所區(qū)分,以免混淆。
回答者:網(wǎng)友
產(chǎn)品精選
搜索問(wèn)答
還沒(méi)有汽配人賬號(hào)?立即注冊(cè)

我要提問(wèn)

汽配限時(shí)折扣

本頁(yè)是網(wǎng)友提供的關(guān)于“stc12c5a60s2?18B20溫度傳感器相關(guān)問(wèn)題”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準(zhǔn)確性。