基于DS18B20傳感器溫度測量課程設(shè)計的報告_第1頁
基于DS18B20傳感器溫度測量課程設(shè)計的報告_第2頁
基于DS18B20傳感器溫度測量課程設(shè)計的報告_第3頁
基于DS18B20傳感器溫度測量課程設(shè)計的報告_第4頁
基于DS18B20傳感器溫度測量課程設(shè)計的報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 PAGE23 / NUMPAGES23課程設(shè)計報告專 業(yè):_班 級:_姓 名:_指導(dǎo)老師:_二00九年 12月 27日目錄1、 (容) 頁碼2、3、4、設(shè)計題目基于DS18B20傳感器溫度測量課程設(shè)計目的通過基于MCS-51系列單片機AT89C51和DS18B20溫度傳感器檢測溫度,熟悉芯片的使用,溫度傳感器的功能,數(shù)碼顯示管的使用,匯編語言的設(shè)計;并且把我們這一年所學(xué)的數(shù)字和模擬電子技術(shù)、檢測技術(shù)、單片機應(yīng)用等知識,通過理論聯(lián)系實際,從題目分析、電路設(shè)計調(diào)試、程序編制調(diào)試到傳感器的選定等這一完整的實驗過程,培養(yǎng)了學(xué)生正確的設(shè)計思想,使學(xué)生充分發(fā)揮主觀能動性,去獨立解決實際問題,以達到提升學(xué)

2、生的綜合能力、動手能力、文獻資料查閱能力的作用,為畢業(yè)設(shè)計和以后工作打下一個良好的基礎(chǔ)。設(shè)計任務(wù)和要求 以MCS-51系列單片機為核心器件,組成一個數(shù)字溫度計,采用數(shù)字溫度傳感器DS18B20為檢測器件,進行單點溫度檢測,檢測精度為0.5攝氏度。溫度顯示采用3位LED數(shù)碼管顯示,兩位整數(shù),一位小數(shù)。具有鍵盤輸入上下限功能,超過上下限溫度時,進行聲音報警。正文一、方案選擇與論證 根據(jù)設(shè)計任務(wù)的總體要求,本系統(tǒng)可以劃分為以下幾個基本模塊,針對各個模塊的功能要求,分別有以下一些不同的設(shè)計方案:1、溫度傳感器模塊方案一:采用熱敏電阻,熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測1攝氏度的信號是不適用的,

3、也不能滿足測量圍。在溫度測量系統(tǒng)中,也常采用單片溫度傳感器,比如AD590,LM35等。但這些芯片輸出的都是模擬信號,必須經(jīng)過A/D轉(zhuǎn)換后才能送給計算機,這樣就使測溫系統(tǒng)的硬件結(jié)構(gòu)較復(fù)雜。另外,這種測溫系統(tǒng)難以實現(xiàn)多點測溫,也要用到復(fù)雜的算法,一定程度上也增加了軟件實現(xiàn)的難度。方案二:采用單總線數(shù)字溫度傳感器DS18B20測量溫度,直接輸出數(shù)字信號。便于單片機處理與控制,節(jié)省硬件電路。且該芯片的物理化學(xué)性很穩(wěn)定,此元件線形性能好,在0100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89C51構(gòu)成的溫度裝置,它

4、直接輸出溫度的數(shù)字信號到微控制器。每只DS18B20具有一個獨有的不可修改的64位序列號,根據(jù)序列號可訪問不同的器件。這樣一條總線上可掛接多個DS18B20傳感器,實現(xiàn)多點溫度測量,輕松的組建傳感網(wǎng)絡(luò)。綜上分析,我們選用第二種方案。2、顯示模塊方案一:采用8位段數(shù)碼管,將單片機得到的數(shù)據(jù)通過數(shù)碼管顯示出來。該方案簡單易行,但所需的元件較多,且不容易進行操作,可讀性差,一旦設(shè)定后很難再加入其他的功能,顯示格式受限制,且大耗電量大,不宜用電池給系統(tǒng)供電。方案二:采用液晶顯示器件,液晶顯示平穩(wěn)、省電、美觀,更容易實現(xiàn)題目要求,對后續(xù)的園藝通兼容性高,只需將軟件作修改即可,可操作性強,也易于讀數(shù),采用

5、RT1602兩行十六個字符的顯示,能同時顯示其它的信息如日期、時間、星期、溫度。綜上分析,我們采用了第二個方案。3、微控制器模塊溫度傳感器有四種主要類型:熱點偶、熱敏電阻、電阻溫度檢測器、IC溫度傳感器。其中IC溫度傳感器又包括模擬輸出和數(shù)字輸出兩種類型。 熱電偶應(yīng)用很廣泛,因為它們非常堅固而且不太貴。熱電偶有多種類型,它們覆蓋非常寬的溫度圍,從-200到2000。它們的特點是:低靈敏度、低穩(wěn)定性、中等精度、響應(yīng)速度慢、高溫下容易老化和有漂移,以與非線性。另外,熱電偶需要外部參考端。 電阻溫度檢測器精度極高且具有中等線性度。它們特別穩(wěn)定,并有許多種配置。但它們的最高工作溫度只能達到400左右。

6、它們也有很大的TC,且價格昂貴(是熱電偶的410倍),并且需要一個外部參考源。 模擬輸出IC溫度傳感器具有很高的線性度 (如果配合一個模數(shù)轉(zhuǎn)換器或ADC可產(chǎn)生數(shù)字輸出)、低成本、高精度(大約1%)、小尺寸和高分辨率。它們的不足之處在于溫度圍有限(-55150),并且需要一個外部參考源。數(shù)字輸出IC溫度傳感器帶有一個置參考源,它們的響應(yīng)速度也相當(dāng)慢(100 ms數(shù)量級)。雖然它們固有地會自身發(fā)熱,但可以采用自動關(guān)閉和單次轉(zhuǎn)換模式使其在需要測量之前將IC設(shè)置為低功耗狀態(tài),從而將自身發(fā)熱降到最低。 綜上方案的比較,數(shù)字輸出IC溫度傳感器與熱敏電阻、RTD和熱電偶傳感器相比,具有很高的線性,而且由于技

7、術(shù)比較成熟,集成復(fù)雜的功能,成本也較低,能夠提供一個數(shù)字輸出,省去A/D轉(zhuǎn)化器的使用,有效較低了系統(tǒng)成本,提高系統(tǒng)穩(wěn)定性,并能夠在一個相當(dāng)有用的圍進行溫度測量。本實驗采用DS18B20作為溫度傳感器二、系統(tǒng)的具體設(shè)計與實現(xiàn)1、系統(tǒng)的總體設(shè)計方案 采用AT89S52單片機作為控制核心對溫度傳感器DS18B20控制,讀取溫度信號并進行計算處理,并送到液晶顯示器RT1602顯示。按照系統(tǒng)設(shè)計功能的要求,確定系統(tǒng)由3個模塊組成:主控制器、測溫電路和顯示電路。數(shù)字溫度計總體電路結(jié)構(gòu)框圖如圖5所示。 圖5 電路結(jié)構(gòu)框圖2、硬件電路設(shè)計 (1)、單片機控制模塊 該模塊由AT89S52單片機組成在設(shè)計方面,A

8、T89S52的EA接高電平,其外圍電路提供能使之工作的晶振脈沖、復(fù)位按鍵,四個I/O分別接8路的單列IP座方便與外圍設(shè)備連接。當(dāng)AT89S52芯片接到來自溫度傳感器的信號時,其部程序?qū)⒏鶕?jù)信號的類型進行處理,并且將處理的結(jié)果送到顯示模塊,發(fā)送控制信號控制各模塊。該模塊的硬件電路如下圖 (2)溫度傳感器模塊DS18B20相關(guān)資料1、DS18B20原理與分析DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。可以分別在93.75 ms和750 ms完

9、成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他在測溫精度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面較DS1820有了很大的改進,給用戶帶來了更方便的使用和更令人滿意的效果。 以下是DS18B20的特點:(1)獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。(2)在使用中不需要任何外圍元件。(3)可用數(shù)據(jù)線供電,電壓圍:+3.0 +5.

10、5 V。(4)測溫圍:-55 - +125 。固有測溫分辨率為0.5 。(5)通過編程可實現(xiàn)9-12位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報警上下限值。(7)支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。(8)負壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。2、DS18B20的測溫原理DS18B20的測溫原理上圖所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就

11、對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在 -55 所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正

12、減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。DS18B20工作過程與時序DS18B20部的低溫度系數(shù)振蕩器是一個振蕩頻率隨溫度變化很小的振蕩器,為計數(shù)器1提供一頻率穩(wěn)定的計數(shù)脈沖。高溫度系數(shù)振蕩器是一個振蕩頻率對溫度很敏感的振蕩器,為計數(shù)器2提供一個頻率隨溫度變化的計數(shù)脈沖。初始時,溫度寄存器被預(yù)置成

13、-55,每當(dāng)計數(shù)器1從預(yù)置數(shù)開始減計數(shù)到0時,溫度寄存器中寄存的溫度值就增加1,這個過程重復(fù)進行,直到計數(shù)器2計數(shù)到0時便停止。初始時,計數(shù)器1預(yù)置的是與-55相對應(yīng)的一個預(yù)置值。以后計數(shù)器1每一個循環(huán)的預(yù)置數(shù)都由斜率累加器提供。為了補償振蕩器溫度特性的非線性性,斜率累加器提供的預(yù)置數(shù)也隨溫度相應(yīng)變化。計數(shù)器1的預(yù)置數(shù)也就是在給定溫度處使溫度寄存器寄存值增加1計數(shù)器所需要的計數(shù)個數(shù)。DS18B20部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計數(shù)器2停止計數(shù)后,比較器將計數(shù)器1中的計數(shù)剩余值轉(zhuǎn)換為溫度值后與0.25進行比較,若低于0.25,溫度寄存器的最低位就置0;若高于0.25

14、,最低位就置1;若高于0.75時,溫度寄存器的最低位就進位然后置0。這樣,經(jīng)過比較后所得的溫度寄存器的值就是最終讀取的溫度值了,其最后位代表0.5,四舍五入最大量化誤差為1/2LSB,即0.25。溫度寄存器中的溫度值以9位數(shù)據(jù)格式表示,最高位為符號位,其余8位以二進制補碼形式表示溫度值。測溫結(jié)束時,這9位數(shù)據(jù)轉(zhuǎn)存到暫存存儲器的前兩個字節(jié)中,符號位占用第一字節(jié),8位溫度數(shù)據(jù)占據(jù)第二字節(jié)。DS18B20測量溫度時使用特有的溫度測量技術(shù)。DS18B20部的低溫度系數(shù)振蕩器能產(chǎn)生穩(wěn)定的頻率信號;同樣的,高溫度系數(shù)振蕩器則將被測溫度轉(zhuǎn)換成頻率信號。當(dāng)計數(shù)門打開時,DS18B20進行計數(shù),計數(shù)門開通時間由

15、高溫度系數(shù)振蕩器決定。芯片部還有斜率累加器,可對頻率的非線性度加以補償。測量結(jié)果存入溫度寄存器中。一般情況下的溫度值應(yīng)該為9位,但因符號位擴展成高8位,所以最后以16位補碼形式讀出。DS18B20工作過程一般遵循以下協(xié)議:初始化ROM操作命令存儲器操作命令處理數(shù)據(jù) 初始化單總線上的所有處理均從初始化序列開始。初始化序列包括總線主機發(fā)出一復(fù)位脈沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制器知道DS1820 在總線上且已準(zhǔn)備好操作。 ROM操作命令一旦總線主機檢測到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長。這些命令列表如下:Read ROM(讀ROM)

16、33h此命令允許總線主機讀DS18B20的8位產(chǎn)品系列編碼,唯一的48位序列號,以與8位的CRC。此命令只能在總線上僅有一個DS18B20的情況下可以使用。如果總線上存在多于一個的從屬器件,那么當(dāng)所有從片企圖同時發(fā)送時將發(fā)生數(shù)據(jù)沖突的現(xiàn)象(漏極開路會產(chǎn)生線與的結(jié)果)。Match ROM( 符合ROM)55h此命令后繼以64位的ROM數(shù)據(jù)序列,允許總線主機對多點總線上特定的DS18B20尋址。只有與64位ROM序列嚴格相符的DS18B20才能對后繼的存貯器操作命令作出響應(yīng)。所有與64位ROM序列不符的從片將等待復(fù)位脈沖。此命令在總線上有單個或多個器件的情況下均可使用。Skip ROM( 跳過RO

17、M )CCh在單點總線系統(tǒng)中,此命令通過允許總線主機不提供64位ROM編碼而訪問存儲器操作來節(jié)省時間。如果在總線上存在多于一個的從屬器件而且在Skip ROM命令之后發(fā)出讀命令,那么由于多個從片同時發(fā)送數(shù)據(jù),會在總線上發(fā)生數(shù)據(jù)沖突(漏極開路下拉會產(chǎn)生線與的效果)。Search ROM( 搜索ROM)F0h當(dāng)系統(tǒng)開始工作時,總線主機可能不知道單線總線上的器件個數(shù)或者不知道其64位ROM編碼。搜索ROM命令允許總線控制器用排除法識別總線上的所有從機的64位編碼。Alarm Search(告警搜索)ECh此命令的流程與搜索ROM命令一樣。但是,僅在最近一次溫度測量出現(xiàn)告警的情況下,DS18B20才對

18、此命令作出響應(yīng)。告警的條件定義為溫度高于TH 或低于TL。只要DS18B20一上電,告警條件就保持在設(shè)置狀態(tài),直到另一次溫度測量顯示出非告警值或者改變TH或TL的設(shè)置,使得測量值再一次位于允許的圍之。貯存在EEPROM的觸發(fā)器值用于告警。 存儲器操作命令Write Scratchpad(寫暫存存儲器)4Eh這個命令向DS18B20的暫存器中寫入數(shù)據(jù),開始位置在地址2。接下來寫入的兩個字節(jié)將被存到暫存器中的地址位置2和3??梢栽谌魏螘r刻發(fā)出復(fù)位命令來中止寫入。Read Scratchpad(讀暫存存儲器)BEh這個命令讀取暫存器的容。讀取將從字節(jié)0開始,一直進行下去,直到第9(字節(jié)8,CRC)字

19、節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)出復(fù)位命令來中止讀取。Copy Scratchpad(復(fù)制暫存存儲器)48h這條命令把暫存器的容拷貝到DS18B20的E2存儲器里,即把溫度報警觸發(fā)字節(jié)存入非易失性存儲器里。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而DS18B20又正在忙于把暫存器拷貝到E2存儲器,DS18B20就會輸出一個“0”,如果拷貝結(jié)束的話,DS18B20 則輸出“1”。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動強上拉并最少保持10ms。Convert T(溫度變換)44h這條命令啟動一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS18B2

20、0保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而DS18B20又忙于做時間轉(zhuǎn)換的話,DS18B20將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動強上拉,并保持500ms。Recall E2(重新調(diào)整E2)B8h這條命令把貯存在E2中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯ζ?。這種重新調(diào)出的操作在對DS18B20上電時也自動發(fā)生,因此只要器件一上電,暫存存儲器就有了有效的數(shù)據(jù)。在這條命令發(fā)出之后,對于所發(fā)出的第一個讀數(shù)據(jù)時間片,器件會輸出溫度轉(zhuǎn)換忙的標(biāo)識:“0”=忙,“1”=準(zhǔn)備就緒。Read Power Supply(讀電源)

21、B4h對于在此命令發(fā)送至DS18B20之后所發(fā)出的第一讀數(shù)據(jù)的時間片,器件都會給出其電源方式的信號:“0”=寄生電源供電,“1”=外部電源供電。 處理數(shù)據(jù)DS18B20的高速暫存存儲器由9個字節(jié)組成,其分配如圖3所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。 DS18B20溫度數(shù)據(jù)表上表是DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于或等于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得

22、到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。溫度轉(zhuǎn)換計算方法舉例:例如當(dāng)DS18B20采集到+125的實際溫度后,輸出為07D0H,則:實際溫度=07D0H0.0625=20000.0625=1250C。例如當(dāng)DS18B20采集到-55的實際溫度后,輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號位不變,也不作為計算),則:實際溫度=370H0.0625=8800.0625=550C。(3)顯示模塊六、軟件設(shè)計系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換子程序、計算溫度子程序、顯示等等。1.主程序主要功能是完成DS18B2

23、0的初始化工作,并進行讀溫度,將溫度轉(zhuǎn)化成為壓縮BCD碼并在顯示器上顯示傳感器所測得的實際溫度。2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需要進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖2所示。3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辯率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖3所示。4計算溫度子程序計算溫度子程序?qū)AM中讀取值進行BCD碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其流程圖如圖4所示。開始DS18B20初始化讀溫度子程序讀出溫度格

24、式化,并轉(zhuǎn)為壓縮BCD碼顯示溫度圖1 主程序流程圖圖2讀出溫度子程序流程圖圖3 溫度轉(zhuǎn)換命令子程序流程圖圖4 計算溫度子程序流程圖完整程序如下:;溫度傳感器18B20采用器件默認的12位轉(zhuǎn)化,最大轉(zhuǎn)化時間要750毫秒;存分配聲明TEMPER_L EQU 31H ;用于保存讀出溫度的低字節(jié)TEMPER_H EQU 30H ;用于保存讀出溫度的高字節(jié)T_DF EQU 33H ;FORMAT后的小數(shù)部分(decimal fraction),半字節(jié)的溫度小數(shù)(存在低四位)T_INTEGER EQU 32H ;FORMAT后的整數(shù)部分(integer),將兩字節(jié)的溫度整合成1字節(jié)FLAG BIT 20H

25、 ;標(biāo)志位DAT BIT P1.4 ;DS18B20數(shù)據(jù)線;主函數(shù)開始 ORG 0000H AJMP MAIN ORG 0030HMAIN: CLR EA ;使用DS18B20一定要禁止中斷 MOV SP,#60H MOV T_DF,#00H ;賦初始溫度為30度 MOV T_INTEGER,#30HSTART: LCALL GET_TEMPER ;調(diào)用讀溫度子程序 LCALL T_FORMAT ;將讀出的2字節(jié)溫度格式化,并轉(zhuǎn)換為壓縮BCD碼 LCALL DISPLAY ;顯示溫度 AJMP START;DS18B20的溫度轉(zhuǎn)換子程序GET_TEMPER: LCALL Set_18B20 M

26、OV A,#0CCH ;跳過ROM匹配 LCALL WRITE_1820 MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820 LCALL DISPLAY ;用顯示溫度(持續(xù)1s左右)來等待AD轉(zhuǎn)換結(jié)束,12位的話要轉(zhuǎn)換750ms LCALL Set_18B20 ;準(zhǔn)備讀溫度前先初始化 MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;發(fā)出讀溫度命令 LCALL WRITE_1820 LCALL READ_1820 RET;DS18B20初始化程序Set_18B20: SETB DAT NOP CLR DAT MOV R

27、2,#250 ;主機發(fā)出延時500微秒的復(fù)位低脈沖 DJNZ R2,$ SETB DAT ;然后拉高數(shù)據(jù)線 MOV R2,#30 DJNZ R2,$ ;延時60us等待DS18B20回應(yīng) JNB DAT,INIT1 JMP Set_18B20 ;超時而沒有響應(yīng),重新初始化INIT1: MOV R2,#120 DJNZ R2,$ ;延時240us DAT,INIT2 ;數(shù)據(jù)變高,初始化成功 JMP Set_18B20INIT2: MOV R2,#240 DJNZ R2,$ RET;寫DS18B20的子程序(有具體的時序要求)WRITE_1820: MOV R2,#8 ;一共8位數(shù)據(jù)WR0: CL

28、R DAT MOV R3,#6 DJNZ R3,$ RRC A MOV DAT,C MOV R3,#20 DJNZ R3,$ SETB DAT NOP NOP DJNZ R2,WR0 SETB DAT RET;讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)READ_1820: MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出 MOV R1,#TEMPER_L ;低位存入31H(TEMPER_L)RE0: MOV R2,#8RE1: SETB DAT NOP NOP CLR DAT NOP NOP SETB DAT MOV R3,#4 DJNZ R3,$ MOV C

29、,DAT RRC A MOV R3,#30 DJNZ R3,$ DJNZ R2,RE1 MOV R1,A DEC R1 ;高位存入30H(TEMPER_H) DJNZ R4,RE0 RET;整合讀出的兩字節(jié)溫度(關(guān)于DS18B20讀出的2字節(jié)溫度格式請參考資料)T_FORMAT: MOV A,#0FH ANL A,TEMPER_L MOV T_DF,A ;獲得小數(shù)部分(4位) MOV A,TEMPER_L SWAP A MOV R0,A MOV A,TEMPER_H SWAP A XCHD A,R0 MOV T_INTEGER,A ;獲得整數(shù)部分(1字節(jié))TO_BCD: MOV A,T_INT

30、EGER MOV B,#10 DIV AB SWAP A ADD A,B MOV T_INTEGER,A ;整數(shù)部分壓縮BCD碼送T_INTEGER MOV A,T_DF MOV B,#10 MUL AB MOV B,#16 DIV AB MOV R2,A ;暫存R2 MOV A, B MOV B,#10 MUL AB MOV B,#16 DIV AB MOV B,A MOV A,R2 SWAP A ADD A,B MOV T_DF,A ;小數(shù)部分壓縮BCD碼送T_DF RET;顯示溫度子程序DISPLAY:MOV R1,#250DISP1: MOV A,T_INTEGER MOV R3,#0

31、1H MOV R4,#02H SETB FLAGDISP2: CPL FLAG MOV B,#10H DIV AB MOV R2,A ;高位送R2暫存 MOV DPTR,#3FFFH ;字位口 MOV A,R3 MOVX DPTR,A ;送字位 MOV A,R2 ;字型R2送A MOV DPTR,#TAB ;表首地址送DPTR MOVC A,A+DPTR ;查表 MOV DPTR,#5FFFH ;字型口 MOVX DPTR,A ;送字型 CALL D1MS ;延時 MOV A,#0FFH MOVX DPTR,A ;關(guān)閉字型顯示 MOV R2,B ;低位送R2暫存 MOV DPTR,#3FFFH ;字位口 MOV A,R4 MOVX DPTR,A ;送字位 MOV A,R2 ;字型R2送A MOV DPTR,#TAB ;表首地址送DPTR MOVC A,A+DPTR ;查表 JNB FLAG,D1 JMP D2D1: ANL A,#7FHD2: MOV DPTR,#5FFFH ;字型口 MOVX DPTR,A ;送字型 CALL D1MS ;延時 MOV A,#0FFH MOVX DPTR,A ;關(guān)閉字型顯示 M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論