




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. . . . 基于單片機(jī)數(shù)字溫度計(jì)的設(shè)計(jì)摘要:本文綜述了數(shù)字溫度計(jì)的設(shè)計(jì)與制作過程,介紹了設(shè)計(jì)制作一個(gè)完整的數(shù)字溫度計(jì)需要做的準(zhǔn)備與制作過程,通過一段時(shí)間的努力制作,從剛開始透徹理解題目要求與所要設(shè)計(jì)的產(chǎn)品的各項(xiàng)性能功能,然后覺得利用單片機(jī)作為控制核,其次主要的就是溫度傳感器DS18B20,與其他重要部分電路的配合下設(shè)計(jì)出一套完整的硬件系統(tǒng),與它的靈魂軟件系統(tǒng)。得到了一種基于單片機(jī)控制的數(shù)字溫度計(jì)。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,該設(shè)計(jì)控制器使用單片機(jī)AT89S51,測(cè)溫傳感器使用DS18B20,用4位共陽極LED數(shù)碼管以
2、串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì), DS18B20,AT89S51目錄前言4第一章 系統(tǒng)方案設(shè)計(jì)51.1溫度測(cè)量系統(tǒng)功能描述51.2系統(tǒng)設(shè)計(jì)性能指標(biāo)51.3 DS18B20工作原理61.3.1性能特點(diǎn)61.3.2 外部結(jié)構(gòu)61.3.3 部結(jié)構(gòu)71.3.4 DS18B20測(cè)溫原理91.4 AT89C51簡(jiǎn)介101.5 顯示部分11第二章 系統(tǒng)硬件電路設(shè)計(jì)152.1 DS18B20溫度傳感器的連接152.2 單片機(jī)端口連接15第三章 系統(tǒng)軟件設(shè)計(jì)173.1 主程序173.2 讀出溫度子程序183.3 溫度轉(zhuǎn)換命令子程序193.4 計(jì)算溫度子程序203
3、.5 顯示數(shù)據(jù)刷新子程序20第四章 系統(tǒng)調(diào)試與仿真354.1 系統(tǒng)程序調(diào)試354.2 系統(tǒng)軟硬件仿真35第五章 總 結(jié)39參考文獻(xiàn)40前言在一些溫度測(cè)量系統(tǒng)電路中,廣泛采用的是通過熱電偶、熱電阻或PN結(jié)測(cè)溫電路經(jīng)過相應(yīng)的信號(hào)調(diào)理電路,轉(zhuǎn)換成AD轉(zhuǎn)換器能接收的模擬量,再經(jīng)過采樣保持電路進(jìn)行AD轉(zhuǎn)換,最終送入單片機(jī)與其相應(yīng)的外圍電路,完成監(jiān)控。但是由于傳統(tǒng)的信號(hào)調(diào)理電路實(shí)現(xiàn)復(fù)雜、易受干擾、不易控制且精度不高。本溫度測(cè)量?jī)x采用單片機(jī)結(jié)合DS18B20智能溫度傳感器控制系統(tǒng)設(shè)計(jì),因此,本系統(tǒng)用一種新型的可編程溫度傳感器(DS18B20),不需復(fù)雜的信號(hào)調(diào)理電路和AD轉(zhuǎn)換電路能直接與單片機(jī)完成數(shù)據(jù)采集和
4、處理,實(shí)現(xiàn)方便、精度高,可根據(jù)不同需要用于各種場(chǎng)合。第一章 系統(tǒng)方案設(shè)計(jì)1.1溫度測(cè)量系統(tǒng)功能描述采用8051單片機(jī)和溫度傳感器DS18B20設(shè)計(jì)一種數(shù)字溫度計(jì),測(cè)溫圍為-55到128,由按鍵設(shè)定溫度報(bào)警上下限值TH和TL,采用點(diǎn)字符液晶模塊作為數(shù)字溫度計(jì)的顯示部分,分兩行顯示,第一行顯示工作狀態(tài),正常時(shí)顯示“DS18B20 OK”,不正常時(shí)顯示“DS18B20 ERROR”;第二行顯示實(shí)測(cè)溫度值和狀態(tài)符號(hào),“>H”表示實(shí)測(cè)溫度值大于溫度報(bào)警值TH,“<L”表示實(shí)測(cè)溫度小于溫度報(bào)警值TL,“!”表示實(shí)測(cè)溫度位于設(shè)定的溫度圍之。當(dāng)實(shí)測(cè)溫度超過設(shè)定溫度限制圍時(shí),發(fā)出聲光報(bào)警信號(hào)。1.2
5、系統(tǒng)設(shè)計(jì)性能指標(biāo)測(cè)溫圍為-55-125,誤差在+1以。DS18B20最高分辨率可達(dá)0.0625,所以系統(tǒng)誤差指標(biāo)可以限制在+1以。按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器,測(cè)溫電路和顯示電路。溫度測(cè)量?jī)x總體電路結(jié)構(gòu)框圖如圖1.1所示。圖1. 1 溫度測(cè)量?jī)x電路結(jié)構(gòu)框圖本溫度測(cè)量?jī)x設(shè)計(jì)采用美國(guó)DALLAS半導(dǎo)體公司的智能型傳感器DS18B20作為檢測(cè)元件,測(cè)溫圍限制在-55125。DS18B20可以直接讀出被測(cè)量溫度值,而且采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。系統(tǒng)硬件電路由單片機(jī)AT89C51、字符液晶顯示器LM016L和1k×8的排
6、阻構(gòu)成。單片機(jī)實(shí)現(xiàn)對(duì)LCD命令和顯示數(shù)據(jù)的讀寫控制功能。1.3 DS18B20工作原理一、性能特點(diǎn)DS18B20溫度傳感器與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)912位的 數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:a.獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;b.多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;c.不需要外部器件d.可通過數(shù)據(jù)線供電,電壓圍為3.05.5V;e.零待機(jī)功耗;f.溫度以912位數(shù)字量讀出;g.用戶可定義的非易失性溫度報(bào)警設(shè)置;h.報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度的器件;i.負(fù)電壓特性,電源極
7、性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,只是不能正常工作;二、外部結(jié)構(gòu)DS18B20采用3腳PR-35封裝或8腳SOIC封裝。引腳排列與說明如圖1.2與表1.1所示。圖1.2 DS18B20引腳排列表1.1 詳細(xì)引腳說明三、部結(jié)構(gòu)部結(jié)構(gòu)框圖如圖1.3所示。圖1.3 DS18B20部結(jié)構(gòu)框圖高速暫存RAM的結(jié)構(gòu)為9字節(jié)的存儲(chǔ)器,第5字節(jié)為配置寄存器,其容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,該字節(jié)的定義如圖1.4所示,其中,低5位一直為1;TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,在DS18B20出廠時(shí),該位被設(shè)置為0,用戶不要去改動(dòng);R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用來設(shè)置分辨
8、率,其定義方法見表1.2。表1.2 DS18B20分辨率的定義和規(guī)定R1R0分辨率/位溫度最大轉(zhuǎn)換時(shí)間/ms00993.750110187.510113751112750TMR1R011111圖1.4 配置寄存器位定義四 DS18B20測(cè)溫原理DS18B20測(cè)溫原理圖如圖1.5所示圖1.5 DS18B20測(cè)溫原理圖DS18B20是這樣測(cè)溫的:用一個(gè)高溫系數(shù)的振蕩器確定一個(gè)門周期,部計(jì)數(shù)器在 這個(gè)門周期對(duì)一個(gè)低溫度系數(shù)的振蕩器的脈沖進(jìn)行計(jì)數(shù)來得到溫度值。計(jì)數(shù)器被預(yù)置到對(duì)應(yīng)與-55的一個(gè)值。如果計(jì)數(shù)器在門周期結(jié)束前到達(dá)0,則溫度寄存器(同樣被預(yù)置到-55)的值增加,表明所測(cè)溫度大于-55。同時(shí),計(jì)
9、數(shù)器被復(fù)位到一個(gè)值,這個(gè)值由斜坡式累加器電路確定,斜坡式累加器電路用來補(bǔ)償感溫振蕩器的拋物線特性。然后計(jì)數(shù)器又開始計(jì)數(shù)直到0,如果門周期仍未結(jié)束,將重復(fù)這一過程。斜坡式累加器用來補(bǔ)償感溫振蕩器的非線性,以期在測(cè)溫時(shí)獲得比較高的分辨力。這是通過改變計(jì)數(shù)器對(duì)溫度每增加一度所需計(jì)數(shù)的值來實(shí)現(xiàn)的。因此,要想獲得所需的分辨力,必須同時(shí)知道在給定溫度下計(jì)數(shù)器的值和每一度的計(jì)算值。DS18B20部對(duì)此計(jì)算的結(jié)果可提供0.5的分辨力。溫度以16bit帶符號(hào)位擴(kuò)展的二進(jìn)制補(bǔ)碼形式讀出,DS18B20溫度與表示值如表1.3所示。表1.3 DS18B20溫度與表示值對(duì)應(yīng)表溫度測(cè)量?jī)x系統(tǒng)控制器使用單片機(jī)AT89C51
10、,用三位共陰LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。1.4 AT89C51簡(jiǎn)介AT89C51是1種低功耗、高性能的片含有4KB閃爍可編程、可擦除只讀存儲(chǔ)器(Flash Programmable and Erasable Read Only Memory)的8位CMOS單片機(jī),并且與MCS-51系列單片機(jī)引腳和指令系統(tǒng)完全兼容。芯片上的FPEROM允許在線編程或采用通用的編程器對(duì)其重復(fù)編程,而且性能價(jià)格比高。所以本控制系統(tǒng)選用它作為我們的控制器。一、 AT89C51的性能與片閃爍存儲(chǔ)器1. AT89C51的主要性能包括:(1) 與MCS-51微控制器系列產(chǎn)品兼容。(2) 片有4KB可在線重復(fù)編程的
11、閃爍存儲(chǔ)器(Flash Memory)。(3) 存儲(chǔ)器可循環(huán)寫入/擦除1萬次。(4) 存儲(chǔ)器數(shù)據(jù)保存時(shí)間為10年(5) 寬工作電壓圍:Vcc可為+2.7V-+6V.(6) 全靜態(tài)工作:可從0Hz16MHz.(7) 程序存儲(chǔ)器具有3級(jí)加密保護(hù)。(8) 空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲(chǔ)器容。2. 片閃爍存儲(chǔ)器(Flash Memory)由于E2PROM具有在線改寫,并在掉電后仍能保存數(shù)據(jù)的特點(diǎn),可為我們的特殊應(yīng)用提供便利。但是,擦除和寫入對(duì)于要有數(shù)據(jù)高速吞吐的應(yīng)用還顯得時(shí)間過長(zhǎng),這是E2PROM的主要缺陷。表產(chǎn)1.4列出了幾種典型E2PROM芯片的主要性能數(shù)據(jù)。表1.4 幾種典型E2PROM芯
12、片的主性能型號(hào)性能參數(shù)28162816A28172817A2864A取數(shù)時(shí)間/ms250200/250250200/250250擦/寫電壓/V2152155字節(jié)擦除時(shí)間/ms109-15101010寫入時(shí)間/ms109-15101010由表1.4可見,所列各種芯片的字節(jié)擦除時(shí)間和寫入時(shí)間基本上均為10ms,這樣長(zhǎng)的時(shí)間對(duì)于許多實(shí)際應(yīng)用是不能接受的。因此,將存儲(chǔ)器集成到單片機(jī)芯片,設(shè)法縮短此類存儲(chǔ)器的擦除和寫入時(shí)間是1個(gè)首要的問題。片閃爍存儲(chǔ)器(Flash Memory)的概念就是在這種背景下提出來的。目前,美國(guó)ATMEL公司生產(chǎn)的帶有片閃爍存儲(chǔ)器的AT89C51/89C52/89C55單片機(jī),
13、由于價(jià)格便宜,且與MCS-51系列兼容,受到了我國(guó)廣大工程技術(shù)人員的歡迎,使用該系列單片機(jī),省去了外擴(kuò)存儲(chǔ)器的工作,只需了解片閃爍存儲(chǔ)器的特性以與如何對(duì)其編程即可。二、 片閃爍存儲(chǔ)器的編程AT89C51的I/O口P0、P1、P2和P3除具有與MCS-51一樣的一些性能和用途外,在FPEROM編程時(shí),P0口還可接收代碼字節(jié),但在程序校驗(yàn)時(shí)要外加上拉負(fù)載電阻。在FPEROM編程和程序校驗(yàn)期間,P1口接收低地址字節(jié),P2口接收高地址位和一些控制信號(hào),P3口也接收FPEROM編程和校驗(yàn)用的控制信號(hào)。此時(shí),ALE/引腳是編程脈沖輸入()端。 對(duì)AT89C51片的閃爍存儲(chǔ)器編程,只需在市場(chǎng)上購買相應(yīng)的編程
14、器,按照編程器的說明進(jìn)行操作。如想對(duì)寫入的容加密,只需按照編程器的菜單,選擇加密功能選項(xiàng)即可。1.5 顯示部分在電子系統(tǒng)設(shè)計(jì)中,一般都需要有顯示器的存在。作為當(dāng)前主流的顯示器件,液晶顯示器(LCD)的應(yīng)用越來越廣泛。從顯示容量上劃分,LCD可分為兩種類型,一種是“AlphaNumericLCDs”,只能顯示字符和數(shù)字;另一種是“GraphicalLCDs”,既能顯示字符和數(shù)字,還能顯示圖形。漢字顯示需要后一種點(diǎn)陣圖形式LCD。液晶顯示器是由液晶顯示屏與控制器兩部分組成的,不同的液晶顯示器所對(duì)應(yīng)的控制器不盡一樣,了解LCD控制器的控制功能是設(shè)計(jì)液晶顯示的關(guān)鍵3一、液晶模塊簡(jiǎn)介 LM016L的結(jié)構(gòu)
15、與功能 LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于部模式,不響應(yīng)外部操作指令和接
16、受數(shù)據(jù),DDTAM用來存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼, CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對(duì)應(yīng)關(guān)系,可以查看參考文獻(xiàn)(30)中的表4. CGRAM是為用戶編寫特殊字符留用的,它的容量?jī)H64字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM但愿,LM016L 液晶模塊的引腳功能如下表所示:引腳說明引腳說明引腳說明引腳說明1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背
17、光電源線 VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,其中:引腳符號(hào)功能說明1 VSS 一般接地2 VDD 接電源(+5V)3 V0 液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。4 RS RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5 R/W R/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6 E E(或EN)端為使能(enable)端,下降沿使能。7 DB0 底4位三態(tài)、雙向數(shù)據(jù)總線 0位(最低位)8 DB1 底4
18、位三態(tài)、雙向數(shù)據(jù)總線 1位9 DB2 底4位三態(tài)、雙向數(shù)據(jù)總線 2位10 DB3 底4位三態(tài)、雙向數(shù)據(jù)總線 3位11 DB4 高4位三態(tài)、雙向數(shù)據(jù)總線 4位12 DB5 高4位三態(tài)、雙向數(shù)據(jù)總線 5位13 DB6 高4位三態(tài)、雙向數(shù)據(jù)總線 6位14 DB7 高4位三態(tài)、雙向數(shù)據(jù)總線 7位(最高位)(也是busy flang)15 BLA 背光電源正極16 BLK 背光寄存器選擇控制表RS R/W 操作說明0 0 寫入指令寄存器(清除屏等)0 1 都busy flag(DB7),以與讀取位址計(jì)數(shù)器(DB0DB6)值1 0 寫入數(shù)據(jù)寄存器(顯示各字型等)1 1 從數(shù)據(jù)寄存器讀取數(shù)二、 LM016L
19、的工作原理LM016L是16×2數(shù)碼液晶顯示器,每行可顯示16個(gè)字符,共2行。LM016L的控制器為HD44780,與液晶屏集成在一起。HD44780有3個(gè)存儲(chǔ)器,分別是字符存儲(chǔ)器CGROM、顯示數(shù)據(jù)存儲(chǔ)器DDRAM和字符產(chǎn)生器CGRAM。在LM016L的CGROM中,共有192個(gè)可供顯示的字符和數(shù)字,其中5×7(寬×高)字符150個(gè),5×10(寬×高)字符42個(gè)。LM016L分行顯示時(shí),只能顯示5×7字體的字符,想要顯示5×10字符,只能單行顯示。如果要顯示除CGROM中192個(gè)字符以外的其它字符,可以自定義最多8個(gè)特殊字
20、符寫入CGRAM中以供顯示調(diào)用。DDRAM與液晶顯示屏上的位置是映射關(guān)系,只要把CGROM或CGRAM中的字符成功寫入對(duì)應(yīng)的DDRAM地址,便可在LCD上顯示出相應(yīng)的字符。單行顯示時(shí),DDRAM的顯示地址自左至右分別為80H87H,C1HC7H;雙行顯示時(shí),顯示地址首行自左至右為80H8FH,第2行自左至右為C0HCFH。HD44780的控制端有3個(gè),分別是RS、RW和E。RS=0時(shí),配合讀寫控制端RW實(shí)現(xiàn)命令讀寫;RS=1時(shí),配合讀寫控制端RW實(shí)現(xiàn)顯示數(shù)據(jù)的讀寫。RW是LCD的讀寫控制端,RW=0為寫有效;RW=1為讀有效。E為L(zhǎng)CD的使能信號(hào),每次讀寫都需要產(chǎn)生一個(gè)寬450ns周期為100
21、0ns的脈沖信號(hào)5,6。HD44780的寫時(shí)序如圖2所示。從圖2中可以看出,每次讀寫數(shù)據(jù)時(shí),先使RS和RW有效,然后E(圖中為EN)脈沖信號(hào)有效,E脈沖信號(hào)應(yīng)先為高電平后為低電平。最后通過D0D7送出命令或數(shù)據(jù),也可以把送出命令或數(shù)據(jù)放在第一步。HD44780的控制命令共有11條,主要用來控制光標(biāo)的顯示方式、單行或雙行顯示方式、4線或8線數(shù)據(jù)傳輸方式、存儲(chǔ)器地址指針增減方等,可以根據(jù)不同的設(shè)計(jì)需求選用不同的命令形式4第二章系統(tǒng)硬件電路設(shè)計(jì)2.1 DS18B20溫度傳感器的連接測(cè)溫儀電路設(shè)計(jì)原理圖如圖2.12.3所示,控制器使用單片機(jī)AT89C51,溫度傳感器使用DS18B20,用字符液晶顯示器
22、LM016L和1k×8的排阻構(gòu)成。DS18B20溫度傳感器提供9位(二進(jìn)制)溫度讀數(shù)。信息經(jīng)過單線接口送入DSB1820或從DS18B20送出,因此從單片機(jī)到DS18B20僅需一條線(和地線)。DS18B20的電源可以由數(shù)據(jù)線本身提供而不需要外部電源。如圖2.1所示。89C51對(duì)DS18B20的數(shù)字量輸出讀入,即讀P2.5端口。如圖2.1所示。圖2.1 測(cè)溫儀電路設(shè)計(jì)原理圖(左)2.2 單片機(jī)端口連接P0口作數(shù)據(jù)口,與LM016L的D0D7相接,在P0口與D0D7數(shù)據(jù)線之間分別接8個(gè)上拉電阻,以確保電路能夠正常顯示。AT89C51的P2口作為L(zhǎng)CD的控制線,P2.0P2.2分別接LM
23、016L的RS、RW和E端;LM016L的其它3個(gè)控制端VDD和VSS、VEE分別接電源和地。系統(tǒng)硬件電路組成如圖1所示89C51對(duì)讀入的數(shù)據(jù)處理后先輸出到P0端口,然后鎖存器74LS373將P0口的輸出字?jǐn)?shù)據(jù)進(jìn)行鎖存。鎖存命令由89C51單片機(jī)發(fā)出,鎖存地址為7FFFH。如圖2.2所示。圖2.2測(cè)溫儀電路設(shè)計(jì)原理圖 第三章系統(tǒng)軟件設(shè)計(jì)本控制系統(tǒng)軟件設(shè)計(jì)基于軟件工程5模塊化思想,將它分割成若干子模塊,每個(gè)模塊完成不同的功能,采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解,模塊化使得軟件容易測(cè)試和調(diào)試,易于擴(kuò)展,有利于提高軟件的可靠性,減少系統(tǒng)開發(fā)的工作量。把一些具有獨(dú)立功能的模
24、塊編成子程序,以便主程序調(diào)用,本控制系統(tǒng)模塊子程序包括:鍵值讀入子程序、顯示子程序、T0中斷控制子程序、外部中斷0子程序。本系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和顯示數(shù)據(jù)刷新子程序等。3.1 主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量溫度值。溫度測(cè)量每1s進(jìn)行一次。主程序流程圖如圖3.1所示。圖3.1 主程序流程圖3.2 讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。讀出溫度子程序流程圖如圖3.2所示圖3.2 讀出溫度子程序流程圖3.3 溫度轉(zhuǎn)換命令子
25、程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms.在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖3.3所示。圖3.3 溫度轉(zhuǎn)換命令子程序流程圖3.4 計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定。計(jì)算溫度子程序的流程圖如圖3.4所示。圖3.4 計(jì)算溫度子程序的流程圖3.5 顯示數(shù)據(jù)刷新子程序顯示刷新子程序主要是對(duì)顯示緩沖區(qū)中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為0時(shí),將符號(hào)顯示位移入下一位。顯示數(shù)據(jù)刷新子程序流程圖如圖3.5所示。圖3.5顯示數(shù)據(jù)刷新子程序流程圖3.
26、6 程序清單TEMPHC EQU 29H ;正、負(fù)溫度值標(biāo)記 TEMPLC EQU 2AH TEMPFC EQU 2BH K1 EQU P1.4 ;查詢按鍵 K2 EQU P1.5 ;設(shè)置/調(diào)整鍵 K3 EQU P1.6 ;調(diào)整鍵 K4 EQU P1.7 ;確定鍵 BEEP EQU P3.7 ;蜂鳴器 RELAY EQU P1.3 ;指示燈 LCD_X EQU 2FH ;LCD 字符顯示位置 LCD_RS EQU P2.0 ;LCD 寄存器選擇信號(hào) LCD_RW EQU P2.1 ;LCD 讀寫信號(hào) LCD_EN EQU P2.2 ;LCD 允許信號(hào) FLAG1 EQU 20H.0 ;DS18
27、B20是否存在標(biāo)志 KEY_UD EQU 20H.1 ;設(shè)定按鍵的增、減標(biāo)志 DQ EQU P3.3 ;DS18B20數(shù)據(jù)信號(hào) ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#60H MOV A,#00H MOV R0,#20H ;將20H2FH 單元清零MOV R1,#10HCLEAR: MOV R0,AINC R0 DJNZ R1,CLEAR LCALL SET_LCD LCALL RE_18B20 START: LCALL RST ;調(diào)用18B20復(fù)位子程序 JNB FLAG1,START1 ;DS1820不存在 LCALL MENU_OK;DS18
28、20存在,調(diào)用顯示正確信息子程序 MOVTEMP_TH,#055H;設(shè)置TH初值85度 MOVTEMP_TL,#019H;設(shè)置TL初值25度 LCALL RE_18B20A;調(diào)用暫存器操作子程序 LCALL WRITE_E2 ;寫入DS18B20 LCALL TEMP_BJ ;顯示溫度標(biāo)記 JMP START2START1: LCALL MENU_ERROR;調(diào)用顯示出錯(cuò)信息子程序 LCALL TEMP_BJ ;顯示溫度標(biāo)記 SJMP $START2: LCALL RST;調(diào)用DS18B20復(fù)位子程序 JNB FLAG1,START1 ;DS18B20不存在 MOV A,#0CCH ;跳過RO
29、M匹配命令 LCALL WRITE MOV A,#44H ;溫度轉(zhuǎn)換命令 LCALL WRITE LCALL RST MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#0BEH ;讀溫度命令 LCALL WRITE LCALL READ;調(diào)用DS18B20數(shù)據(jù)讀取操作子程序 LCALL CONVTEMP;調(diào)用溫度數(shù)據(jù)BCD 碼處理子程序 LCALL DISPBCD;調(diào)用溫度數(shù)據(jù)顯示子程序 LCALL CONV;調(diào)用LCD顯示處理子程序 LCALL TEMP_COMP;調(diào)用實(shí)測(cè)溫度值與設(shè)定溫度值比較子程序 LCALL PROC_KEY ;調(diào)用鍵掃描子程序 SJMP
30、START2;循環(huán);* 鍵掃描子程序 *PROC_KEY: K1,PROC_K1 LCALL BEEP_BL JNB K1,$ MOV DPTR,#M_ALAX1 MOV A,#1 LCALL LCD_PRINT LCALL LOOK_ALARM K3,$ LCALL BEEP_BL JMP PROC_K2PROC_K1: K2,PROC_END LCALL BEEP_BL JNB K2,$ MOV DPTR,#RST_A1 MOV A,#1 LCALL LCD_PRINT LCALL SET_ALARM LCALL RE_18B20 ;將設(shè)定的TH,TL值寫入DS18B20 LCALL WR
31、ITE_E2PROC_K2: LCALL MENU_OK LCALL TEMP_BJPROC_END:RET;* 設(shè)定溫度報(bào)警值 TH、TL *SET_ALARM:LCALL LOOK_ALARMAS0: K1,AS00 LCALL BEEP_BL JNB K1,$ CPL 20H.1 ;UP/DOWN 標(biāo)記AS00: 20H.1,ASZ01 ;20H.1=1,增加 JMP ASJ01 ;20H.1=0,減小ASZ01: K2,ASZ02 ;TH值調(diào)整(增加) LCALL BEEP_BL INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,ASZ011 MOV TEMP
32、_TH,#0ASZ011: LCALL LOOK_ALARM MOV R5,#10 LCALL DELAY JMP ASZ01ASZ02: K3,ASZ03 ;TL值調(diào)整(增加) LCALL BEEP_BL INC TEMP_TL MOV A,TEMP_TL CJNE A,#99,ASZ021 MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARM MOV R5,#10 LCALL DELAY JMP ASZ02ASZ03: K4,AS0 ;確定調(diào)整 LCALL BEEP_BL JNB K4,$ RETASJ01: K2,ASJ02 ;TH值調(diào)整(減少) LCALL
33、BEEP_BL DEC TEMP_TH MOV A,TEMP_TH CJNE A,#0FFH,ASJ011 JMP ASJ022ASJ011: LCALL LOOK_ALARM MOV R5,#10 LCALL DELAY JMP AS0ASJ02: K3,ASJ03 ;TL值調(diào)整(減少) LCALL BEEP_BL DEC TEMP_TL MOV A,TEMP_TL CJNE A,#0FFH,ASJ021 JMP ASJ022ASJ021: LCALL LOOK_ALARM ; MOV R5,#10 LCALL DELAY JMP AS0ASJ022: CPL 20H.1 JMP ASZ01
34、ASJ03: JMP ASZ03 RETRST_A1: DB " SET ALERT CODE " ,0;*實(shí)測(cè)溫度值與設(shè)定溫度值比較子程序 *TEMP_COMP:MOV A,TEMP_TH SUBB A,TEMP_ZH ;減數(shù)>被減數(shù),則 JC CHULI1 ;借位標(biāo)志位C=1,轉(zhuǎn) MOVA,TEMPFC CJNEA,#0BH,COMP SJMPCHULI2COMP: MOV A,TEMP_ZH SUBB A,TEMP_TL ;減數(shù)>被減數(shù),則 JC CHULI2 ;借位標(biāo)志位C=1,轉(zhuǎn) MOV DPTR,#BJ5 LCALL TEMP_BJ3 CLR REL
35、AY ;點(diǎn)亮指示燈 RET CHULI1: MOV DPTR,#BJ3 LCALL TEMP_BJ3 SETB RELAY ;熄滅指示燈 LCALL BEEP_BL;蜂鳴器響 RET CHULI2: MOV DPTR,#BJ4 LCALL TEMP_BJ3 SETB RELAY ;熄滅指示燈 LCALL BEEP_BL;蜂鳴器響 RET;-TEMP_BJ3: MOV A,#0CEH LCALL WCOM MOV R1,#0 MOV R0,#2BBJJ3: MOV A,R1 MOVC A,A+DPTR LCALL WDATA INC R1 DJNZ R0,BBJJ3RETBJ3: DB &quo
36、t;>H"BJ4: DB "<L"BJ5: DB " !" ;* 顯示溫度標(biāo)記子程序 *TEMP_BJ: MOV A,#0CBH LCALL WCOM MOV DPTR,#BJ1 ;指針指到顯示消息 MOV R1,#0MOV R0,#2BBJJ1: MOV A,R1MOVC A,A+DPTR LCALL WDATAINC R1 DJNZ R0,BBJJ1 RETBJ1: DB 00H,"C"* 顯示正確信息子程序 *MENU_OK: MOV DPTR,#M_OK1 ;指針指到顯示消息 MOV A,#1 ;顯示在第
37、一行 LCALL LCD_PRINT MOV DPTR,#M_OK2 ;指針指到顯示消息 MOV A,#2 ;顯示在第一行 LCALL LCD_PRINTRETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;* 顯示出錯(cuò)信息子程序 *MENU_ERROR:MOV DPTR,#M_ERROR1 ;指針指到顯示消息 MOV A,#1 ;顯示在第一行 LCALL LCD_PRINT MOV DPTR,#M_ERROR2 ;指針指到顯示消息1 MOV A,#2 ;顯示在第一行 LCALL LCD_PRINT RET
38、M_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: - ",0;*DS18B20復(fù)位子程序 *RST: SETB DQ NOP CLR DQ MOV R0,#6BH ;主機(jī)發(fā)出延時(shí)復(fù)位低脈沖 MOV R1,#04HTSR1: DJNZ R0,$ MOV R0,#6BH DJNZ R1,TSR1 SETB DQ ;拉高數(shù)據(jù)線 NOP NOP NOP MOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回應(yīng) DJNZ R0,TSR2 JMP TSR4 ; 延時(shí)TSR3: SETB
39、 FLAG1 ; 置1標(biāo)志位,表示DS1820存在 JMP TSR5TSR4: CLR FLAG1 ; 清0標(biāo)志位,表示DS1820不存在JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 時(shí)序要求延時(shí)一段時(shí)間TSR7: SETB DQ RET;* DS18B20暫存器操作子程序 *RE_18B20: FLAG1,RE_18B20A RETRE_18B20A:LCALL RST MOV A,#0CCH ;跳過ROM匹配 LCALL WRITEWR_SCRAPD: MOV A,#4EH ;寫暫器 LCALL WRITE MOV A,TEMP_TH ;TH(報(bào)警
40、上限) LCALL WRITE MOV A,TEMP_TL ;TL(報(bào)警下限) LCALL WRITEMOV A,#7FH ;12位精度 LCALL WRITE RET;* 復(fù)制暫存器子程序 *WRITE_E2:LCALL RST MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#48H ;把暫存器里的溫度報(bào)警值拷貝到EEROM LCALL WRITE RET;* 重讀EEROM子程序 *READ_E2:LCALL RST MOV A,#0CCH ;跳過ROM匹配 LCALL WRITE MOV A,#0B8H ;把EEROM里的溫度報(bào)警值拷貝回暫存器 LCALL
41、 WRITE RET;* 將自定義字符寫入LCD的CGRAM中 *STORE_DATA: MOV A,#40H LCALL WCOM MOV R2,#08HMOV DPTR,#D_DATA MOV R3,#00HS_DATA: MOV A,R3 MOVC A,A+DPTR LCALL WDATA ;寫入數(shù)據(jù) INC R3 DJNZ R2,S_DATA RETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;* DS18B20數(shù)據(jù)寫入操作子程序 *WRITE: MOV R2,#8 ;一共8位數(shù)據(jù) CLR CWR1: CLR DQ ;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài) MOV R3,#07 DJNZ R3,$ ;總線復(fù)位保持16微妙以上 RRC A ;把一個(gè)字節(jié)DATA 分成8個(gè)BIT環(huán)移給C MOV DQ,C ;寫入一位 MOV R3,#3CH DJNZ R3,$ ;等待100微妙 SETB DQ ;重新釋放總線 NOP DJNZ R2,WR1 ;寫入下一位 SETB DQ RET;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用線纜購買合同范本
- 關(guān)于施工安全合同范本
- 承辦論壇合同范本
- 主播和合同范本
- 光伏ppp模式合同范本
- 助理聘用合同范本
- 醫(yī)院電力安裝合同范本
- 勞資補(bǔ)償合同范本
- 住宅大樓租房合同范本
- 醫(yī)院簡(jiǎn)短采購合同范例
- 兩位數(shù)除以一位數(shù)(有余數(shù))計(jì)算題200道
- 唐多令蘆葉滿汀洲
- 《小兒計(jì)劃免疫》課件
- 林下經(jīng)濟(jì)產(chǎn)業(yè)現(xiàn)狀及發(fā)展重點(diǎn)分析
- 地推推廣合作協(xié)議書
- 玄武巖纖維簡(jiǎn)介演示
- 決策氣象服務(wù)流程
- 開展戶外探險(xiǎn)與戶外活動(dòng)課件
- 無人機(jī)法律法規(guī)與安全飛行 第2版 課件 第4章 無人機(jī)法規(guī)與安全
- 施工會(huì)議紀(jì)要15篇
- 電力變壓器安裝技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論