基于ds18b20的數(shù)字溫度計(jì)設(shè)計(jì)_第1頁
基于ds18b20的數(shù)字溫度計(jì)設(shè)計(jì)_第2頁
基于ds18b20的數(shù)字溫度計(jì)設(shè)計(jì)_第3頁
基于ds18b20的數(shù)字溫度計(jì)設(shè)計(jì)_第4頁
基于ds18b20的數(shù)字溫度計(jì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄(一)設(shè)計(jì)內(nèi)容及要求2(二)系統(tǒng)的硬件選擇及設(shè)計(jì)32.1核心處理器的設(shè)計(jì)31、AT89C51引腳圖32、AT89C51引腳功能介紹32.2溫度采集電路的設(shè)計(jì)51、單線技術(shù)52、DS18B20的簡介63、DS18B20內(nèi)部結(jié)構(gòu)84、DS18B20測溫原理115、溫度采集電路122.3溫度顯示電路的設(shè)計(jì)131、LED數(shù)碼管的操作132、溫度顯示電路13(三)系統(tǒng)的軟件設(shè)計(jì)153.1概述153.2 DS18B20的單線協(xié)議和命令15(1)初始化15(2)ROM操作命令15(3)內(nèi)存操作命令163.3溫度采集程序流程圖的設(shè)計(jì)183.4溫度顯示程序流程圖的設(shè)計(jì)19(四) 結(jié)論19(五)匯編代碼20(

2、六)參考文獻(xiàn)27基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)摘 要:在本設(shè)計(jì)中選用AT89C51型單片機(jī)作為主控制器件,采用DS18B20數(shù)字溫度傳感器作為測溫元件,通過兩位共陰極LED數(shù)碼顯示管并行傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示。本設(shè)計(jì)的內(nèi)容主要分為兩部分,一是對系統(tǒng)硬件部分的設(shè)計(jì),包括溫度采集電路和顯示電路;二是對系統(tǒng)軟件部分的設(shè)計(jì),應(yīng)用匯編語言實(shí)現(xiàn)溫度的采集與顯示。通過DS18B20直接讀取被測溫度值,送入單片機(jī)進(jìn)行數(shù)據(jù)處理,之后進(jìn)行輸出顯示,最終完成了數(shù)字溫度計(jì)的總體設(shè)計(jì)。其系統(tǒng)構(gòu)成簡單,信號采集效果好,數(shù)據(jù)處理速度快,便于實(shí)際檢測使用。關(guān)鍵詞:單片機(jī)AT89C51;溫度傳感器DS18B20;LED數(shù)碼

3、管;數(shù)字溫度計(jì)(一)設(shè)計(jì)內(nèi)容及要求本設(shè)計(jì)主要介紹了用單片機(jī)和數(shù)字溫度傳感器DS18B20相結(jié)合的方法來實(shí)現(xiàn)溫度的采集,以單片機(jī)AT89C51芯片為核心,輔以溫度傳感器DS18B20和LED數(shù)碼管及必要的外圍電路,構(gòu)成了一個多功能單片機(jī)數(shù)字溫度計(jì)。本次設(shè)計(jì)的主要思路是利用51系列單片機(jī),數(shù)字溫度傳感器DS18B20和LED數(shù)碼顯示器,構(gòu)成實(shí)現(xiàn)溫度檢測與顯示的單片機(jī)控制系統(tǒng),即數(shù)字溫度計(jì)。通過對單片機(jī)編寫相應(yīng)的程序,達(dá)到能夠?qū)崟r檢測周圍溫度的目的。通過對本課題的設(shè)計(jì)能夠熟悉數(shù)字溫度計(jì)的工作原理及過程,了解各功能器件(單片機(jī)、DS18B20、LED)的基本原理與應(yīng)用,掌握各部分電路的硬件連線與程序編

4、寫,最終完成對數(shù)字溫度計(jì)的總體設(shè)計(jì)。其具體的要求如下:1、根據(jù)設(shè)計(jì)要求,選用AT89C51單片機(jī)為核心器件;2、溫度檢測器件采用DS18B20數(shù)字式溫度傳感器,利用單總線式連接方式與單片機(jī)的P2.2引腳相連;3、顯示電路采用兩位LED數(shù)碼管以串口并行輸出方式動態(tài)顯示。(二)系統(tǒng)的硬件選擇及設(shè)計(jì)2.1核心處理器的設(shè)計(jì)1、AT89C51引腳圖芯片AT89C51的引腳排列和邏輯符號如圖2.1 所示。圖2.1 AT89C51單片機(jī)引腳圖2、AT89C51引腳功能介紹單片機(jī)芯片AT89C51為40引腳雙列直插式封裝。本設(shè)計(jì)使用的其各個引腳功能介紹如下:(1) VCC:供電電壓;(2) GND:接地;(3

5、) P0口:一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。本設(shè)計(jì)中使用P0作為兩個共陰極LED數(shù)碼管的位選和段選輸出控制口,其中用到74HC573作為輸出鎖存,將段選和位選分開控制,由P2.7,P2.8開啟。電路圖如下:(4) P1口:一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口被拉為低電平時將輸出電流。本設(shè)計(jì)中只用到P1.0管腳,當(dāng)所測量溫度超過預(yù)設(shè)報(bào)警溫度時點(diǎn)亮LED燈,其中用到74HC573作為輸出鎖存,由2.5開啟該鎖存器。電路圖如下:(5) P2口:一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。本設(shè)

6、計(jì)中使用P2.2管腳和DS18B20的管腳相連作為通信總線,AT89C51和DS18B20都能對該線電平拉高和拉低操作來進(jìn)行通信,當(dāng)電平為高時總線傳輸“”,當(dāng)電平為低時總線傳輸“”;P2.7,P2.8開啟數(shù)碼管的位選和段選的P0口的鎖存;2.5開啟報(bào)警LED燈的P1口的鎖存。(6) RST:復(fù)位輸入端。當(dāng)振蕩器復(fù)位時,要保持RST腳兩個機(jī)器周期的高電平時間。2.2溫度采集電路的設(shè)計(jì)1、單線技術(shù)該技術(shù)采用單根信號線,即可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸時是雙向的,因而這種單線技術(shù)具有線路簡單,硬件開銷少,成本低廉。便于擴(kuò)展的優(yōu)點(diǎn)。單線技術(shù)適用以單主機(jī)系統(tǒng),單主機(jī)能夠控制一個或多個從機(jī)設(shè)備。主

7、機(jī)可以是微控制器,從機(jī)可以是單線器件,它們之間的數(shù)據(jù)交換,控制都由這根線完成。主機(jī)或從機(jī)通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能夠釋放線,而讓其它設(shè)備使用。單線通常要求外接一個約5k的上拉電阻,這樣,當(dāng)該線閑置時,器件狀態(tài)為高電平。主機(jī)和從機(jī)之間的通信主要分為3個步驟:初始化單線器件,識別單線器件和單線數(shù)據(jù)傳輸。由于只有一根線通信,所以它們必須是嚴(yán)格的主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時,從機(jī)才能應(yīng)答,主機(jī)訪問每個單線器件都必須嚴(yán)格遵循單線命令序列,從機(jī)遵守上述三個步驟的順序。如果命令序列混亂,單線器件將不會響應(yīng)主機(jī)。所有的單線器件都有遵循嚴(yán)格的協(xié)議,以保證數(shù)據(jù)的完整性。單線

8、協(xié)議有復(fù)位脈沖,其他均由主機(jī)發(fā)起,并且所有命令和數(shù)據(jù)都是字節(jié)的低位在前。2、DS18B20的簡介DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的”一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟(jì)。溫度測量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報(bào)警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20

9、通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20 的性能特點(diǎn)如下:獨(dú)特的單線接口方式,DS18B20在與微處理器連接時僅需要一條總線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊;DS18B20支持多點(diǎn)組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫;DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電; 測溫范圍-55125,在-10+85時

10、精度為±0.5; 零待機(jī)功耗;可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實(shí)現(xiàn)高精度測溫;在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快; 用戶可定義報(bào)警設(shè)置; 報(bào)警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯能力; 負(fù)電壓特性,電源極性接反時,溫度計(jì)不會因發(fā)熱而燒毀,但不能正常工作以上特點(diǎn)使DS18B20非常適用與多點(diǎn)、遠(yuǎn)距離溫

11、度檢測系統(tǒng)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖2.4所示。其中,DQ 為數(shù)據(jù)輸入/輸出引腳,也可用作開漏單總線接口引腳,當(dāng)被用在寄生電源工作方式下,可以向器件提供電源;GND為地信號;VDD為可選擇的電源引腳,當(dāng)工作于寄生電源時,此引腳必須接地。其電路圖2.5所示。圖2.4 外部封裝形式圖2.5 傳感器電路圖3、DS18B20內(nèi)部結(jié)構(gòu)圖2.6為DS1820的內(nèi)部結(jié)構(gòu)框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM)

12、,用于存儲用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等七部分。圖2.6 DS18B20內(nèi)部結(jié)構(gòu)框圖DS18B20采用3腳PR35封裝或8腳SOIC封裝。(1)64 bit閃速ROM的結(jié)構(gòu)如下:8bit 校驗(yàn)CRC48bit 序列號8bit 工廠代碼(10H)MSB LSBMSB LSBMSB LSB開始的8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48 位,最后8位是前面56 位的CRC 檢驗(yàn)碼,這也是多個DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。主機(jī)操作ROM的命令有五種,在軟件設(shè)

13、計(jì)時會提到。(2)高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器結(jié)構(gòu)如圖2.7所示。圖2.7 高速暫存RAM結(jié)構(gòu)圖其中,前2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。暫存存儲器的第5個字節(jié)是配置寄存器,可以通過相應(yīng)的寫命令進(jìn)行配置,其內(nèi)容如下:0R1R0111111MSB LSB其中R0和R1是溫度值分辨率位,可按表2.3進(jìn)行配置。表2.3溫度值分辨率配置表R1R0分辨率最大轉(zhuǎn)換時間(ms)009位93.75ms(tconv/8)

14、0110位183.50ms(tconv/4)1011位375ms(tconv/2)1112位750ms(tconv)當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前、高位在后,數(shù)據(jù)格式以0.0625/LSB形式表示。溫度值格式如下:低232221202-12-22-32-4高SSSSS262524MSB LSB這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測

15、到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。格式中,S表示位。對應(yīng)的溫度計(jì)算:當(dāng)符號位S=0時,表示測得的溫度植為正值,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,表示測得的溫度植為負(fù)值,先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH,-55的數(shù)字輸出為FC90H。DS18B20溫度傳感器主要用于對溫度進(jìn)行測量,數(shù)據(jù)可用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,并以0.0625/LSB形式表示。表2.4是部分溫度值

16、對應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。表2.4 部分溫度的二進(jìn)制數(shù)表示溫度數(shù)字輸出(二進(jìn)制)數(shù)字輸出(16進(jìn)制)+12500000111 1101000007D0H+8500000101 010100000550H+25.062500000001 100100010191H+10.12500000000 1010001000A2H+0.500000000 000010000008H000000000 000000000000H-0.511111111 11111000FFF8H-10.12511111111 01011110FFE5H-25.062511111110 01101111FF6FH-55111

17、11100 10010000FC90H4、DS18B20測溫原理DS18B20的測溫原理如圖2.8所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測量.計(jì)數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55所對應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55所對應(yīng)的一個基數(shù)值。圖2.8 DS18B20測溫原理圖減法

18、計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖3.8中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時間概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作

19、必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。5、 溫度采集電路設(shè)計(jì)的溫度采集電路如圖2.9所示。圖2.9 溫度采集電路圖2.3溫度顯示電路的設(shè)計(jì)1、LED數(shù)碼管的操作LED數(shù)碼管的基本組成是半導(dǎo)體發(fā)光二極管,它是將若干個發(fā)光二極管,按照一定的筆段組合起來構(gòu)成的一個整體。LED數(shù)碼管能顯示09十個數(shù)字及部份英文字母。常見的八段LED數(shù)碼管結(jié)構(gòu)如圖2.10所示。圖2.10 數(shù)碼管的內(nèi)部結(jié)構(gòu)它由8個發(fā)光二極管組成,其中7個長條形的發(fā)光二極管排列成”日”字形,另一個發(fā)光二極管在整個數(shù)碼管的右下角,用來顯示小數(shù)點(diǎn)。本設(shè)計(jì)采用共陰極LED數(shù)碼管,

20、8個發(fā)光二極管的陰極都連在一起的。加到各筆段對應(yīng)發(fā)光二極管陽極上的代碼不同,則就能控制LED數(shù)碼管顯示不同的字符和數(shù)字,這個代碼稱為段碼。通常將這個段碼用單片機(jī)系統(tǒng)中的一個字節(jié)進(jìn)行存儲,正好這個字節(jié)中的8個二進(jìn)制位(D7、D6、D5、D4、D3、D2、D1、D0),依次對應(yīng)LED數(shù)碼管的8個筆段dp、g、f、e、d、c、b、a。此外,選用多個數(shù)碼管還要注意位選問題,即先將某個數(shù)碼管點(diǎn)亮,再賦予相應(yīng)段碼;再點(diǎn)亮另一個數(shù)碼管,賦予新的段碼。2、溫度顯示電路顯示電路采用兩個共陰極LED數(shù)碼管顯示所測溫度的十位和各位,從P0口并行輸出溫度段碼和位選碼,通過兩個74HC57鎖存分開控制位選和段選,P2.

21、7和P2.8控制鎖存器的開啟。其具體電路圖如圖2.11所示。圖2.11 顯示電路 由于數(shù)碼管余輝效應(yīng)和人眼的視覺延遲,當(dāng)數(shù)碼管每秒點(diǎn)亮50次時,就會出現(xiàn)靜止顯示的溫度值。(三)系統(tǒng)的軟件設(shè)計(jì)3.1概述軟件設(shè)計(jì)關(guān)鍵在于DS18B20的使用。DS18B20屬于單線式器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議,來對讀寫數(shù)據(jù)提出嚴(yán)格的時序要求,而AT89C51單片機(jī)并不支持單線傳輸,因此必須采用軟件的方法來模擬單線的協(xié)議時序。3.2DS18B20的單線協(xié)議和命令DS18B20有嚴(yán)格的通信協(xié)議來保證各為數(shù)據(jù)傳輸?shù)恼_性和完整性。主機(jī)操作單線器件DS18B20必須遵循下面的順序。(1)初

22、始化單線總線上的所有操作都是從初始化開始的。過程如下:1、請求主機(jī)通過拉低單線480us以上,產(chǎn)生復(fù)位脈沖,然后釋放該線,進(jìn)入Rx接收模式。主機(jī)釋放總線時,會產(chǎn)生一個上升沿脈沖。DQ : 1 -> 0(480us+) -> 1  2、響應(yīng)DS18B20檢測到該上升沿后,延時1560us,通過拉低總線60240us來產(chǎn)生應(yīng)答脈沖。DQ: 1(1560us) -> 0(60240us)3、接收響應(yīng)主機(jī)接收到從機(jī)的應(yīng)答脈沖后,說明有單線器件在線。至此,初始化完成。DQ: 0(2)ROM操作命令當(dāng)主機(jī)檢測到應(yīng)答脈沖,便可發(fā)起ROM操作命令。共有5類ROM操作命令,如表3.1

23、所示。表3.1 ROM操作命令指令類型命令字節(jié)功能說明Read Rom讀ROM33H讀取激光ROM中的64位,只能用于總線上單個DS18B20器件情況,多掛時會發(fā)生數(shù)據(jù)沖突;Match Rom匹配ROM55H此命令后跟64位ROM序列號,尋址多掛總線上的對應(yīng)DS18B20,只有序列號完全匹配的DS18B20才能響應(yīng)后面的內(nèi)存操作命令,其他不匹配的將等待復(fù)位脈沖,可用于單掛或多掛兩種情況;Skip Rom跳過ROMCCH可無須提供64位ROM序列號即可運(yùn)行內(nèi)存操作命令,只能用于單掛;Search Rom搜索ROMF0H通過一個排除法過程,識別出總線上所有器件的ROM序列號;AlarmSearch

24、報(bào)警搜索ECH命令流程與Search Rom相同,但DS18B20只有最近的一次溫度測量時滿足了報(bào)警觸發(fā)條件的,才會響應(yīng)此命令。(3)內(nèi)存操作命令在成功執(zhí)行ROM操作命令后,才可使用內(nèi)存操作命令。共有6種內(nèi)存操作命令,如表3.2所示。表3.2 內(nèi)存操作命令指令類型命令字節(jié)功能說明Write Scratchpad寫暫存器4EH寫暫存器中地址2地址4的3個字節(jié)(TH,TL和配置寄存器)在發(fā)起復(fù)位脈沖之前,3個字節(jié)都必須要寫;Read Scratchpad讀暫存器BEH讀取暫存器內(nèi)容,從字節(jié)0一直到字節(jié)8,共9個字節(jié),主機(jī)可隨時發(fā)起復(fù)位脈沖,停止此操作,通常我們只需讀前5個字節(jié);Copy Scrat

25、chpad復(fù)制暫存器48H將暫存器中的內(nèi)容復(fù)制進(jìn)EERAM,以便將溫度告警觸發(fā)字節(jié)存入非易失內(nèi)存,如果此命令后主機(jī)產(chǎn)生讀時隙,那么只要器件還在進(jìn)行復(fù)制都會輸出0,復(fù)制完成后輸出1;Convert T 溫度轉(zhuǎn)換44H開始溫度轉(zhuǎn)換操作,若在此命令后主機(jī)產(chǎn)生時隙,那么只要器件還在進(jìn)行溫度轉(zhuǎn)換就會輸出0,轉(zhuǎn)換完成后輸出1;Recall E2 重調(diào)E2暫存器B8H將存儲在EERAM中的溫度告警觸發(fā)值和配置寄存器值重新拷貝到暫存器中,此操作在DS18B20加電時自動產(chǎn)生;Read Power Supply讀供電方式B4H主機(jī)發(fā)起此命令后每個讀數(shù)時隙內(nèi),DS18B20會發(fā)信號通知它的供電

26、方式:0寄生電源,1外部供電。3.3溫度采集程序流程圖的設(shè)計(jì)開始初始化DS18B20應(yīng)答脈沖?發(fā)起Skip Rom命令發(fā)起Convert T 命令延時1s,等待溫度轉(zhuǎn)換完成初始化DS18B20應(yīng)答脈沖?發(fā)起Read Scratchapad命令讀取第1,2字節(jié)即為溫度數(shù)值NoNo圖3.4 溫度采集流程3.4溫度顯示程序流程圖的設(shè)計(jì)開始點(diǎn)亮所有數(shù)碼管選中LED1顯符號延遲選中LED2顯十位延遲選LED3顯個位延遲選LED4顯小數(shù)結(jié)束圖3.5 LED顯示流程圖(四) 結(jié)論本設(shè)計(jì)介紹了基于DS18B20的數(shù)字溫度計(jì)的工作原理及實(shí)現(xiàn)過程,我在這幾天的時間內(nèi)閱讀了有關(guān)數(shù)字溫度計(jì)原理及設(shè)計(jì)的相關(guān)資料,根據(jù)系

27、統(tǒng)所需的電路原理圖設(shè)計(jì)了實(shí)現(xiàn)采集與顯示功能的軟件程序,完成了基于DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)。設(shè)計(jì)中采用最常用的單片機(jī)AT89C51作為主控模塊,單總線數(shù)字溫度傳感器DS18B20用來測量溫度,溫度數(shù)據(jù)采用數(shù)碼管LED顯示。本設(shè)計(jì)的特點(diǎn)是構(gòu)成系統(tǒng)的硬件器件少,操作簡單,數(shù)據(jù)處理功能強(qiáng)。通過這次課程設(shè)計(jì)使我學(xué)習(xí)到了很多的東西,不僅加深了對專業(yè)知識的理解,而且更好地把理論知識與實(shí)踐相結(jié)合,提高了自身的動手能力和實(shí)踐水平,增強(qiáng)了學(xué)習(xí)單片機(jī)系統(tǒng)開發(fā)與設(shè)計(jì)的興趣。由于本人的知識有限,在本設(shè)計(jì)中不可避免存在一些不足之處,我會在以后的學(xué)習(xí)生活中不斷加以完善。相信本次設(shè)計(jì)的經(jīng)歷一定會在我今后的學(xué)習(xí)生活中產(chǎn)

28、生巨大的推動作用。(五)匯編代碼ORG 0000H TEMPER_H EQU 21H;用于保存讀出溫度的高8位 TEMPER_L EQU 20H;用于保存讀出溫度的低8位 TEMPER EQU 30H;用于保存讀出溫度的字節(jié) TEMPER_SET EQU 31H;設(shè)定溫度比較值,測量溫度小于該值,開LED燈 FLAG1 EQU 38H;是否檢測到DS18B20標(biāo)志位 FLAG2 EQU 39H;是否完成溫度測量標(biāo)志位MAIN:START0: LCALL GET_TEMPER WAIT: JB FLAG2,START1 AJMP WAITSTART1: MOV 28H,A MOV 29H,B C

29、LR FLAG2START2: MOV R2,28H MOV R3,29H LCALL DISPLAY;調(diào)用數(shù)碼管顯示子程序 AJMP START0; *DS18B20應(yīng)用入口子程序*GET_TEMPER: LCALL INIT_1820; JB FLAG1,TSS2 ;檢測到設(shè)備,標(biāo)志位置1,跳至TSS2 RET ; 判斷DS1820是否存在,不存在則返回; *DS18B20初始化子程序*INIT_1820: SETB P2.2;先拉高總線 NOP CLR P2.2;拉低總線等待設(shè)備回應(yīng) MOV R1,#3;主機(jī)發(fā)出延時537微秒的復(fù)位低脈沖TSR1: MOV R0,#107 DJNZ R0

30、,$ DJNZ R1,TSR1 ;延時107*3個時鐘 SETB P2.2;然后再拉高數(shù)據(jù)線,等待設(shè)備回應(yīng) NOP NOP NOP MOV R0,#25H;等待設(shè)備回應(yīng)延時TSR2: JNB P2.2,TSR3;若總線為低,有回應(yīng),跳至TSR3,否則等待 DJNZ R0,TSR2 LJMP TSR4 ; 延時后還是沒收到回應(yīng),跳至TSR4TSR3: SETB FLAG1 ; 置標(biāo)志位,表示DS1820存在 LJMP TSR5TSR4: CLR FLAG1 ; 清標(biāo)志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#117 ;檢測到設(shè)備TSR6: DJNZ R0,TSR6

31、 ;時序要求延時一段時間TSR7: SETB P3.5 ;未檢測到設(shè)備,拉高總線RET*初始化完畢檢測到設(shè)備,溫度測控主程序*TSS2: MOV A,#0CCH ; 跳過ROM匹配,通過總線0011_0011寫值 LCALL WRITE_1820 MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令,通過總線0010_0010寫值 LCALL WRITE_1820 LCALL INIT_1820;準(zhǔn)備讀溫度前先復(fù)位 MOV A,#0CCH ; 跳過ROM匹配,通過總線0011_0011寫值 LCALL WRITE_1820 MOV A,#0BEH ; 發(fā)出讀溫度命令,通過總線0111_1101寫值 LC

32、ALL WRITE_1820 LCALL READ_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36H,此時A的值為0111_1100,7CH LCALL CHECK SETB FLAG2 RET;*寫DS18B20的子程序(有具體的時序要求)*WRITE_1820: MOV R2,#8;一共8位數(shù)據(jù),循環(huán)右移,C的值賦給總線 CLR CWR1: CLR P2.2 ;拉低總線 MOV R3,#6 DJNZ R3,$ RRC A ;帶上進(jìn)位C循環(huán)右移,A=0CCH(跳過ROM匹配),A=44H(溫度轉(zhuǎn)換),;A=0BEH(讀溫度請求) MOV P2.2,C ;右循環(huán)將控制字從低位依次通過C賦給總

33、線 MOV R3,#23 DJNZ R3,$ SETB P2.2;重新老高總線 NOP DJNZ R2,WR1 ;循環(huán),將8位控制字通過總線寫給設(shè)備 SETB P2.2;拉高總線RET; *讀DS18B20的程序,從DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)*READ_18200: MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出 MOV R1,#20H ; 先低位存入20H(TEMPER_L),后高位存入21H(TEMPER_H)RE00: MOV R2,#8;數(shù)據(jù)一共有8位RE01: CLR C SETB P2.2 NOP NOP CLR P2.2 NOP NOP NOP SETB P2.2 ;總線先控制為1->0->1 MOV R3,#9RE10: DJNZ R3,RE10; R3的值先等待9時鐘 MOV C,P2.2;將總線值讀到C里,通過總線將8位數(shù)據(jù)通過C傳送到A里 MOV R3,#23RE20: DJNZ R3,RE20;R3的值后等待23時鐘 RRC A ;A和C右循環(huán)8次,總線將8位數(shù)據(jù)通過C傳送到A里 DJ

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論