時(shí)間:2006-06-21 16:00:00來(lái)源:0
頭兩個(gè)字節(jié)表示測(cè)得的溫度讀數(shù),數(shù)據(jù)格式如圖2所示:
S=1時(shí)表示溫度為負(fù),S=0時(shí)表示溫度為正,其余低位以二進(jìn)制補(bǔ)碼形式表示,最低位為1,表示0.0625℃
內(nèi)部存儲(chǔ)器的第五個(gè)字節(jié)是結(jié)構(gòu)寄存器,主要用于溫度值的數(shù)字轉(zhuǎn)換分辨率。
1.2 DS18B20的工作時(shí)序
DS18B20嚴(yán)格遵循單總線協(xié)議,工作時(shí),主機(jī)先發(fā)一復(fù)位脈沖,使總線上的所有DS18B20都被復(fù)位,接著發(fā)送ROM操作指令,使序列號(hào)編碼匹配的DS18B20被激活,準(zhǔn)備接受下面的RAM訪問(wèn)指令。RAM訪問(wèn)指令控制選中的DS18B20工作狀態(tài),完成整個(gè)溫度轉(zhuǎn)換,讀取等工作。在ROM命令發(fā)送之前,RAM命令命令不起作用。表1列出了所有操作命令。
整個(gè)操作主要包括三個(gè)關(guān)鍵過(guò)程:主機(jī)搜索DS18B20序列號(hào)、啟動(dòng)在線DS18B20做溫度轉(zhuǎn)換、讀取溫度值。
其工作流程如圖3:
DS18B20對(duì)時(shí)序及電特性參數(shù)要求較高,必須嚴(yán)格按照DS18B20的時(shí)序要求去操作。它的數(shù)據(jù)讀寫(xiě)主要由主機(jī)讀寫(xiě)特定的時(shí)間片來(lái)完成,包括復(fù)位(初始化)、讀時(shí)間片和寫(xiě)時(shí)間片。
(1) 復(fù)位時(shí)序
使用DS18B20時(shí),首先需將其復(fù)位,然后才能執(zhí)行其它命令。復(fù)位時(shí),主機(jī)將數(shù)據(jù)線拉為低電平并保持480μs~960μs,然后釋放數(shù)據(jù)線,再由上拉電阻將數(shù)據(jù)線拉高15~60μs,等待DS18B20發(fā)出存在脈沖,存在脈沖有效時(shí)間為60~240μs,這樣,就完成了復(fù)位操作。其復(fù)位時(shí)序如圖4所示。
(2) “寫(xiě)”時(shí)序
在主機(jī)對(duì)DS18B20寫(xiě)數(shù)據(jù)時(shí),先將數(shù)據(jù)線置為高電平,再變?yōu)榈碗娖?該低電平應(yīng)大于1μs。在數(shù)據(jù)線變?yōu)榈碗娖胶?5μs內(nèi),根據(jù)寫(xiě)“1”或?qū)憽?”使數(shù)據(jù)線變高或繼續(xù)為低。DS18B20將在數(shù)據(jù)線變成低電平后15μs~60μs內(nèi)對(duì)數(shù)據(jù)線進(jìn)行采樣。要求寫(xiě)入DS18B20的數(shù)據(jù)持續(xù)時(shí)間應(yīng)大于60μs而小于120μs,兩次寫(xiě)數(shù)據(jù)之間的時(shí)間間隔應(yīng)大于1μs。寫(xiě)時(shí)隙的時(shí)序如圖5所示。“讀”時(shí)序機(jī)理類(lèi)似,不再贅述。
2 系統(tǒng)軟硬件設(shè)計(jì)
2.1 硬件設(shè)計(jì)
我們采用的控制器是SAMSUNG公司的32位ARM微控制器S3C44BOX,是三星公司為一般應(yīng)用提供的高性?xún)r(jià)比和高性能的微控制器的解決方案,功耗小,可靠性高。它使用ARM7TDMI核,工作在66MHz。采用的該ARM控制器將服務(wù)于整個(gè)熱誤差補(bǔ)償系統(tǒng),完成包括數(shù)據(jù)處理與通訊、控制等多任務(wù)的實(shí)現(xiàn)。機(jī)床測(cè)溫系統(tǒng)只使用小部分片上資源。
我們主要通過(guò)對(duì)I/O引腳的電平讀寫(xiě)來(lái)完成單總線的通訊,采用ARM內(nèi)部的定時(shí)器產(chǎn)生中斷來(lái)完成有時(shí)隙要求的工作。由于我們通過(guò)預(yù)分頻后產(chǎn)生的計(jì)時(shí)值單位達(dá)到1μs,完全能夠滿(mǎn)足時(shí)序工作的需要。
DS18B20與控制器的接口及其簡(jiǎn)單,只需將DS18B20的信號(hào)線與控制器的一位雙向端口連接即可。系統(tǒng)連接如圖8所示:
2.2 軟件設(shè)計(jì)
遵循DS18B20單總線通訊協(xié)議,溫度轉(zhuǎn)換與讀取工作的軟件流程可表示為圖9(該流程是在已經(jīng)選中激活某個(gè)選中的DS18B20以后,選中激活流程軟件原理類(lèi)似,此處省略)。
可見(jiàn),與DS18B20進(jìn)行通訊主要完成以下三個(gè)基本子程序:初始化程序(復(fù)位程序)、‘讀’子程序,‘寫(xiě)’子程序。系統(tǒng)采用 C語(yǔ)言進(jìn)行設(shè)計(jì),以下是初始化(復(fù)位)子程序,設(shè)計(jì)如下:
U8 resetpulse(void) //復(fù)位函數(shù)定義
{
U8 RX=1; //函數(shù)返回值設(shè)置
rPCONF=0x01; //PF0輸出口
rPDATF=0x0; //PF0輸出0,拉低
rTCNTB1=0x1f4; //定時(shí)緩沖器設(shè)定,延時(shí)500us
rTCON=0x0200; //定時(shí)控制器設(shè)定,將定時(shí)器1手動(dòng)更新
rTCON=0x0100; //定時(shí)器開(kāi)啟,手動(dòng)更新關(guān)閉
while(TIME); //在定時(shí)中斷產(chǎn)生以前踏步等待(我們?cè)谥袛嘀懈淖冞@個(gè)標(biāo)志值)
rPDATF=0x01; //低脈沖時(shí)間500us已過(guò),PF0置高
TIME=1; //將TIME值恢復(fù)
rTCON=0x0; //關(guān)閉定時(shí)器
rTCNTB1=60; //延時(shí)60us
rTCON=0x0200;
rTCON=0x0100;
while(TIME);
TIME=1;
rTCON=0x0;
rPCONF=0x0; //改為輸入口,進(jìn)行讀值
if((rPDATF & 0x01)==0) //讀到PF0口為低時(shí)說(shuō)明存在脈沖收到
{RX=0;}
rTCNTB1=0x0190; //延時(shí)400us
rTCON=0x0200;
rTCON=0x0100;
while(TIME);
TIME=1;
rTCON=0x0;
return(RX); //函數(shù)返回RX值,在收到存在脈沖時(shí)RX為零
}
調(diào)用該初始化程序就可以實(shí)現(xiàn)復(fù)位要求!白x”子程序、“寫(xiě)”子程序?qū)崿F(xiàn)機(jī)制類(lèi)似,代碼不再贅述。在單總線協(xié)議下,通過(guò)調(diào)用這幾個(gè)子程序進(jìn)行相應(yīng)的控制,就能完成主機(jī)與DS18B20的通訊,實(shí)現(xiàn)溫度的采集。
3 結(jié)論
本系統(tǒng)接口電路簡(jiǎn)單,通訊可靠,集成后的系統(tǒng)運(yùn)行良好,測(cè)試精度高,試驗(yàn)證明能完成預(yù)定測(cè)試任務(wù)。
標(biāo)簽:
![]()
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門(mén)給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
耐磨管道機(jī)器人檢測(cè)電纜CCTV,水下管道...
2025-09-23
推薦專(zhuān)題
更多>