乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      DS18B20溫度測(cè)量(1)理論知識(shí)

       ccbupt 2009-04-11
      DS18B20溫度測(cè)量(1)理論知識(shí)
       

      DS18B20數(shù)字溫度測(cè)量傳感器,網(wǎng)上介紹很多,我就不羅嗦了。見(jiàn)圖

      DS18B20與前產(chǎn)品DS1820的不同:

        DS18B20繼承了DS1820的全部?jī)?yōu)點(diǎn),并做了如下改進(jìn) 1.供電范圍擴(kuò)大為3.0--5.5V。2.溫度分辨力可編程。3.轉(zhuǎn)換速率有很大提高.4.內(nèi)部存儲(chǔ)器映射關(guān)系發(fā)生變化。5.具有電源反接保護(hù)電路。5.體積減小一半。 對(duì)我們使用來(lái)說(shuō)最大的不同就是DS18B20可以程序設(shè)定9~12位的分辨率數(shù)字值,而DS1820為固定的9位數(shù)字值,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s減為750ms。。

      電路的接法:
        DS18B20說(shuō)明書(shū)上介紹了幾種電路的接法,但我這里就說(shuō)最常用的一種接法見(jiàn)圖:

      先介紹一下DS18B20內(nèi)部的結(jié)構(gòu):
      常規(guī)的內(nèi)部邏輯圖我就不說(shuō)了,只說(shuō)說(shuō)跟我們使用直接相關(guān)的內(nèi)容。
      DS18B20的內(nèi)部存儲(chǔ)資源分為8個(gè)字節(jié)的ROM、9個(gè)字節(jié)的RAM、3個(gè)字節(jié)的EEPROM如下圖:

      一、ROM:
      在DS18B20內(nèi)部光刻了一個(gè)長(zhǎng)度為64bit的ROM,這個(gè)編碼是器件的身份識(shí)別標(biāo)志。如下圖:

        64位光刻ROM的排列是:開(kāi)始(最低)8位是產(chǎn)品類型標(biāo)號(hào),對(duì)于DS18B20來(lái)說(shuō)就是(28H),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。

      二、RAM:
        高速暫存存儲(chǔ)器(RAM)由9個(gè)字節(jié)組成,包含了8個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是溫度高限TH、溫度低限TL暫存區(qū),第五個(gè)字節(jié)是配置寄存器暫存區(qū),第6、7、8字節(jié)是系統(tǒng)保留用,就相當(dāng)于DS18B20的運(yùn)算內(nèi)存,第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。其分配如下表所示。

      ①、第0和第1字節(jié):
        當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。

      這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度??聪聢D

      例如+125℃的數(shù)字輸出為07D0H,十進(jìn)制是2000,乘以0.0625就等于125℃。同樣+25.0625℃的數(shù)字輸出為0191H,十進(jìn)制為401,乘以0.0625就得出25.0625℃了。-55℃的數(shù)字輸出為FC90H,因?yàn)榉?hào)位為1,先將1111110010010000取反,得1101101111,再加一得1101110000,十進(jìn)制為880,乘以0.0625就得55,為負(fù)值,即-55℃。

      ② 第2第3字節(jié):
        RAM的第2、3、4字節(jié)和EEPROM的三個(gè)字節(jié)是對(duì)應(yīng)的,內(nèi)容是相同的,只是RAM因?yàn)槭菚捍嫫?,失電后?shù)據(jù)就丟失了。而EEPROM是電擦除只讀存儲(chǔ)器,失電后數(shù)據(jù)不會(huì)丟失。在工作時(shí)得到復(fù)位命令后就從EEPROM復(fù)制一份數(shù)據(jù)到RAM的第2、3、4字節(jié)內(nèi),作為我們進(jìn)行報(bào)警搜索、改寫(xiě)報(bào)警值和改寫(xiě)器件設(shè)置用,我們從外部只能對(duì)RAM進(jìn)行操作,EEPROM只能從RAM復(fù)制而得到要保存的數(shù)據(jù)。
        第2字節(jié)為報(bào)警值高限TH,第3字節(jié)為報(bào)警值低限。DS18B20完成一次溫度轉(zhuǎn)換后,就拿溫度值和存儲(chǔ)在TH和TL中的值進(jìn)行比較,因?yàn)檫@些寄存器是8位的,所以小數(shù)位被忽略不計(jì)。TH或TL的最高有效位直接對(duì)應(yīng)16位溫度寄存器的符號(hào)位。如果測(cè)得的溫度高于TH或低于TL,器件內(nèi)部就會(huì)置位一個(gè)報(bào)警標(biāo)識(shí)。每進(jìn)行一次測(cè)溫就對(duì)這個(gè)標(biāo)識(shí)進(jìn)行一次更新。當(dāng)報(bào)警標(biāo)識(shí)置位時(shí),DS18B20會(huì)對(duì)報(bào)警搜索命令有反應(yīng)。這樣就允許許多DS18B20并聯(lián)在一起同時(shí)測(cè)溫,如果某個(gè)地方溫度超過(guò)了限定值。報(bào)警的器件就會(huì)被立即識(shí)別出來(lái)并讀取。而不用讀未報(bào)警的器件。

      ③ 第4字節(jié) 配置寄存器:
        第4字節(jié)的配置寄存器是用來(lái)設(shè)置DS18B20的工作模式和測(cè)量精度的,其內(nèi)容如下圖:

        低五位一直都是"1",TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如下圖所示:(DS18B20出廠時(shí)被設(shè)置為12位)

        我們使用時(shí)可以跟據(jù)實(shí)際需要通過(guò)修改RAM第4字節(jié)的R0和R1的值來(lái)DS18B20的溫度測(cè)量精度。需要保存這種設(shè)置時(shí),還要用一條復(fù)制命令將RAM內(nèi)的數(shù)據(jù)復(fù)制到EEPROM內(nèi)。

      ④ 第5、6、7、8字節(jié):
        前面我們已經(jīng)說(shuō)過(guò)。RAM的第5、6、7字節(jié)是器件的保留字節(jié),就相當(dāng)于器件內(nèi)部轉(zhuǎn)換運(yùn)算時(shí)所用的內(nèi)存。第8字節(jié)是循環(huán)冗余校驗(yàn)字節(jié)。它是前面8個(gè)字節(jié)的CRC值。起著對(duì)前面字節(jié)的校驗(yàn)作用。

      三、EEPROM:
        EEPROM只有三個(gè)字節(jié),和RAM的第2、3、4字節(jié)的內(nèi)容相對(duì)應(yīng),它的作用就是存儲(chǔ)RAM第2、3、4字節(jié)的內(nèi)容,以使這些數(shù)據(jù)在掉電后不丟失??赡芡ㄟ^(guò)幾條命令將RAM的該3個(gè)字節(jié)內(nèi)容復(fù)制到EEPROM或從EEPROM將該3個(gè)字節(jié)內(nèi)容復(fù)制到RAM的第2、3、4字節(jié)去。因?yàn)槲覀儚耐獠肯敫膶?xiě)報(bào)警值和器件的設(shè)置都是只對(duì)RAM進(jìn)行操作的。要保存這些設(shè)置后的數(shù)據(jù)就還要用相應(yīng)的命令將RAM的數(shù)據(jù)復(fù)制到EEPROM去。

      好了,下面說(shuō)說(shuō)對(duì)DS18B20的操作都有哪些命令:
        對(duì)DS18B20的操作分為對(duì)ROM的操作和對(duì)RAM的操作。列表見(jiàn)下圖:

      實(shí)際操作的具體實(shí)現(xiàn):
        DS18B20是單總線器件,通訊協(xié)議包括幾種單線信號(hào)類型:復(fù)位脈沖、存在脈沖、寫(xiě)0、寫(xiě)1、讀0、讀1。所有這些信號(hào),除存在脈沖外,其余都是由總線控制器(單片機(jī))發(fā)出的。根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成一次操作經(jīng)過(guò)三個(gè)步驟:①要對(duì)DS18B20進(jìn)行復(fù)位操作,②復(fù)位成功后發(fā)送一條ROM指令,③最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。

        ① 對(duì)DS18B20復(fù)位操作:
         主機(jī)(單片機(jī))和DS18B20間的任何通訊都需要以初始化序列開(kāi)始,初始化序列就是主機(jī)發(fā)出一個(gè)復(fù)位脈沖跟著檢測(cè)一個(gè)DS18B20的存在脈沖,表明DS18B20已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。初始化序列見(jiàn)下圖:

        主機(jī)首先發(fā)出一個(gè)480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說(shuō)明總線上有器件已做出應(yīng)答。若無(wú)低電平出現(xiàn)一直都是高電平說(shuō)明總線上無(wú)器件應(yīng)答。
        做為從器件的DS18B20在一上電后就一直在檢測(cè)總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒(méi)有檢測(cè)到就一直在檢測(cè)等待。

       ② 對(duì)DS18B20的寫(xiě)和讀操作:
        接下來(lái)就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫(xiě)0和寫(xiě)1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過(guò)程。因此首先要搞清主機(jī)是如何進(jìn)行寫(xiě)0、寫(xiě)1、讀0和讀1的。
        寫(xiě)周期最少為60微秒,最長(zhǎng)不超過(guò)120微秒。寫(xiě)周期一開(kāi)始做為主機(jī)先把總線拉低1微秒表示寫(xiě)周期開(kāi)始。隨后若主機(jī)想寫(xiě)0,則繼續(xù)拉低電平最少60微秒直至寫(xiě)周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫(xiě)1,在一開(kāi)始拉低總線電平1微秒后就釋放總線為高電平,一直到寫(xiě)周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us45us開(kāi)始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。
        

        對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開(kāi)始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開(kāi)始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。(為什么不可以像寫(xiě)時(shí)序那樣將采樣時(shí)間放在讀周期開(kāi)始后的第15微秒到45微秒之間呢。雖然目前這樣也不是不可以,但總覺(jué)得不安全。有點(diǎn)懸啊?。?br>  DS18B20的說(shuō)明書(shū)上也說(shuō),由于主機(jī)拉低總線電平時(shí)間Tint、釋放總線時(shí)的恢復(fù)時(shí)間TRC與采樣時(shí)間Tsample之和必須小于15微秒。如下圖13。為了使讀出數(shù)據(jù)更可靠,說(shuō)明書(shū)上建議Tint和TRC保持時(shí)間盡可能小,把控制器采樣時(shí)間放到15微秒周期的最后。如下圖14。
        (要是像寫(xiě)周期那樣不就從容了,何必搞得緊緊張張的,唉?。?/p>

      好!弄清了如何復(fù)位,如何寫(xiě)1寫(xiě)0和讀1讀0,我們現(xiàn)在就要看看在總線上如何進(jìn)行實(shí)際的運(yùn)用。
      例如,我們做兩個(gè)操作,第一個(gè)是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換。第二是讀取RAM內(nèi)的溫度。
       ?、佟∽孌S18B20進(jìn)行一次溫度的轉(zhuǎn)換。前面已經(jīng)講過(guò)每一個(gè)對(duì)DS18B20的操作都要有三個(gè)步驟。一是復(fù)位操作。二是對(duì)ROM的操作。三是對(duì)RAM的操作?,F(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機(jī)先作個(gè)復(fù)位操作,2、主機(jī)再寫(xiě)跳過(guò)ROM的操作(CCH)命令,3、然后主機(jī)接著寫(xiě)個(gè)轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個(gè)命令字節(jié)在寫(xiě)的時(shí)候都是低字節(jié)先寫(xiě),例如CCH的二進(jìn)制為11001100,在寫(xiě)到總線上時(shí)要從低位開(kāi)始寫(xiě),寫(xiě)的順序是“零、零、壹、壹、零、零、壹、壹”。整個(gè)操作的總線狀態(tài)如下圖。

       ?、凇∽x取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個(gè)操作也要接照三個(gè)步驟。1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機(jī)發(fā)出跳過(guò)對(duì)ROM操作的命令(CCH)。3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個(gè)字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個(gè)數(shù)據(jù)后就不再理會(huì)后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。整個(gè)操作的總線狀態(tài)如下圖:

      在這里得說(shuō)明一下,第二步跳過(guò)對(duì)ROM操作的命令是在總線上只有一個(gè)器件時(shí),為節(jié)省時(shí)間而簡(jiǎn)化的操作,若總線上不止一個(gè)器件,那么跳過(guò)ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出現(xiàn)數(shù)據(jù)沖突。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多