DS18B20溫度傳感器課程設(shè)計(jì)_第1頁
DS18B20溫度傳感器課程設(shè)計(jì)_第2頁
DS18B20溫度傳感器課程設(shè)計(jì)_第3頁
DS18B20溫度傳感器課程設(shè)計(jì)_第4頁
DS18B20溫度傳感器課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要隨著社會(huì)的進(jìn)步和工業(yè)技術(shù)的發(fā)展,溫度因素在社會(huì)生活各個(gè)方面已不容忽視。由于許多產(chǎn)品對溫度范圍要求嚴(yán)格,而目前市場上普遍存在的溫度檢測儀器大都是單點(diǎn)測量,同時(shí)有溫度信息傳遞不及時(shí)、精度不夠的缺點(diǎn),不利于工業(yè)控制者根據(jù)溫度變化及時(shí)做出決定。在這樣的形式下,開發(fā)一種能夠同時(shí)測量多點(diǎn),并且實(shí)時(shí)性高、精度高,能夠綜合處理多點(diǎn)溫度信息的測量系統(tǒng)就很有必要。在單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù)條件下,我們可以基于89S51單片機(jī),利用液晶顯示器件以及DS18B20溫度傳感器等器件,通過溫度傳感器在單片機(jī)下的硬件連接,軟件編程即可設(shè)計(jì)DS18B20溫度傳感器系

2、統(tǒng)。該系統(tǒng)可以方便的實(shí)現(xiàn)實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20與AT89C51結(jié)合實(shí)現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。關(guān)鍵詞: 單片機(jī)AT89C51、DS18B20溫度傳感器、液晶顯示LCD1602二、內(nèi)容課程設(shè)計(jì)題目 基于DS18B20的溫度傳感器課題的背景在人類的生活環(huán)境中,溫度扮演著極其重要的角色,都無時(shí)無刻不

3、在與溫度打交道。自18世紀(jì)工業(yè)革命以來,工業(yè)發(fā)展與是否掌握溫度有著緊密的聯(lián)系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎%80的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進(jìn)了溫度傳感器的發(fā)展。1.1傳感器三個(gè)發(fā)展階段:一是模擬集成溫度傳感器。該傳感器是采用硅半導(dǎo)體集成工藝制成,因此亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一(僅測量溫度)、測溫誤差小、價(jià)格低、響應(yīng)速度快、傳輸距離遠(yuǎn)、體積小、微功耗等特點(diǎn),適合遠(yuǎn)距離測溫、控溫,不需要進(jìn)行非線性校準(zhǔn),且外圍電路簡單。它是目前在國內(nèi)外應(yīng)用最為普遍的一種集成傳感器,典型產(chǎn)品有AD590、AD592、TMP

4、17、LM135等。二是模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關(guān)、可編程溫度控制器,典型產(chǎn)品有LM56、AD22105和MAX6509。某些增強(qiáng)型集成溫度控制器(例如TC652/653)中還包含了A/D轉(zhuǎn)換器以及固化好的程序,這與智能溫度傳感器有某些相似之處。但它自成系統(tǒng),工作時(shí)并不受微處理器的控制,這是二者的主要區(qū)別。三是智能溫度傳感器。智能溫度傳感器內(nèi)部都包含溫度傳感器、A/D轉(zhuǎn)換器、信號(hào)處理器、存儲(chǔ)器(或寄存器)和接口電路。有的產(chǎn)品還帶多路選擇器、中央控制器(CPU)、隨機(jī)存取存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)。智能溫度傳感器的特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適

5、配各種微控制器(MCU);并且它是在硬件的基礎(chǔ)上通過軟件來實(shí)現(xiàn)測試功能的,當(dāng)然,其智能化程度也取決于軟件的開發(fā)水平。1.2溫度傳感器的發(fā)展趨勢進(jìn)入21世紀(jì)后,溫度傳感器正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展。1.3傳感器在溫控系統(tǒng)中的應(yīng)用目前市場主要存在單點(diǎn)和多點(diǎn)兩種溫度測量儀表。對于單點(diǎn)溫測儀表,主要采用傳統(tǒng)的模擬集成溫度傳感器,其中又以熱電阻、熱電偶等傳感器的測量精度高,測量范圍大,而得到了普遍的應(yīng)用。此種產(chǎn)品測溫范圍大都在-200800之間,分辨率12位,最小分辨溫度在0.0010.01之間。自帶LED顯示模

6、塊,顯示4位到16位不等。有的儀表還具有存儲(chǔ)功能,可存儲(chǔ)幾百到幾千組數(shù)據(jù)。該類儀表可很好的滿足單個(gè)用戶單點(diǎn)測量的需要。多點(diǎn)溫度測量儀表,相對與單點(diǎn)的測量精度有一定的差距,雖然實(shí)現(xiàn)了多路溫度的測控,但價(jià)格昂貴。 針對目前市場的現(xiàn)狀,本設(shè)計(jì)提出了一種可滿足要求、可擴(kuò)展的并且性價(jià)比高的單片機(jī)多路測溫系統(tǒng)。2、課程設(shè)計(jì)目的通過基于MCS-51系列單片機(jī)AT89C51和DS18B20溫度傳感器檢測溫度,熟悉芯片的使用,溫度傳感器的功能,數(shù)碼顯示管的使用,匯編語言的設(shè)計(jì);并且把我們這一年所學(xué)的數(shù)字和模擬電子技術(shù)、檢測技術(shù)、單片機(jī)應(yīng)用等知識(shí),通過理論聯(lián)系實(shí)際,從題目分析、電路設(shè)計(jì)調(diào)試、程序編制調(diào)試到傳感器的

7、選定等這一完整的實(shí)驗(yàn)過程,培養(yǎng)了學(xué)生正確的設(shè)計(jì)思想,使學(xué)生充分發(fā)揮主觀能動(dòng)性,去獨(dú)立解決實(shí)際問題,以達(dá)到提升學(xué)生的綜合能力、動(dòng)手能力、文獻(xiàn)資料查閱能力的作用,為畢業(yè)設(shè)計(jì)和以后工作打下一個(gè)良好的基礎(chǔ)。 3、設(shè)計(jì)任務(wù)和要求 以MCS-51系列單片機(jī)為核心器件,組成一個(gè)數(shù)字溫度計(jì),采用數(shù)字溫度傳感器DS18B20為檢測器件,進(jìn)行單點(diǎn)溫度檢測,檢測精度為0.5攝氏度。溫度顯示采用LCD1602顯示,兩位整數(shù),一位小數(shù)。4、正文 (一)、方案選擇與論證 根據(jù)設(shè)計(jì)任務(wù)的總體要求,本系統(tǒng)可以劃分為以下幾個(gè)基本模塊,針對各個(gè)模塊的功能要求,分別有以下一些不同的設(shè)計(jì)方案:(1)、溫度傳感模塊方案一:采用熱敏電阻

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

9、傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89C51構(gòu)成的溫度裝置,它直接輸出溫度的數(shù)字信號(hào)到微控制器。每只DS18B20具有一個(gè)獨(dú)有的不可修改的64位序列號(hào),根據(jù)序列號(hào)可訪問不同的器件。這樣一條總線上可掛接多個(gè)DS18B20傳感器,實(shí)現(xiàn)多點(diǎn)溫度測量,輕松的組建傳感網(wǎng)絡(luò)。 綜上分析,我們選用第二種方案。溫度傳感模塊仿真圖(2)、顯示模塊 方案一:采用8位段數(shù)碼管,將單片機(jī)得到的數(shù)據(jù)通過數(shù)碼管顯示出來。該方案簡單易行,但所需的元件較多,且不容易進(jìn)行操作,可讀性差,一旦設(shè)定后很難再加入其他的功能,顯示格式受限制,且大耗電量大,不宜用電池給系統(tǒng)供電。 方案二:采用液晶顯示器件,液晶顯示平穩(wěn)、省電

10、、美觀,更容易實(shí)現(xiàn)題目要求,對后續(xù)的園藝通兼容性高,只需將軟件作修改即可,可操作性強(qiáng),也易于讀數(shù),采用RT1602兩行十六個(gè)字符的顯示,能同時(shí)顯示其它的信息如日期、時(shí)間、星期、溫度。 綜上分析,我們采用了第二個(gè)方案顯示模塊仿真圖三、系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn) (1)、系統(tǒng)的總體設(shè)計(jì)方案 采用AT89S52單片機(jī)作為控制核心對溫度傳感器DS18B20控制,讀取溫度信號(hào)并進(jìn)行計(jì)算處理,并送到液晶顯示器LCD1602顯示。 按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器、測溫電路和顯示電路。數(shù)字溫度計(jì)總體電路結(jié)構(gòu)框圖如圖下所示。 (2)、硬件電路設(shè)計(jì)a、單片機(jī)控制模塊 該模塊由AT89C51單片

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

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

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

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

15、過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度值,這就是DS18B20的測溫原理。 另外,由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。 DS18B20工作過程一般遵循以下協(xié)議:初始化ROM操作命令存儲(chǔ)器操作命令處理數(shù)據(jù) 初始化 單總線上的所有處理均從初始化序列開始。初始化序列包括總線主機(jī)發(fā)出一復(fù)位脈沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制器知道DS

16、1820 在總線上且已準(zhǔn)備好操作。 ROM操作命令 一旦總線主機(jī)檢測到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長。這些命令如下: Read ROM(讀ROM)33h 此命令允許總線主機(jī)讀DS18B20的8位產(chǎn)品系列編碼,唯一的48位序列號(hào),以及8位的CRC。此命令只能在總線上僅有一個(gè)DS18B20的情況下可以使用。如果總線上存在多于一個(gè)的從屬器件,那么當(dāng)所有從片企圖同時(shí)發(fā)送時(shí)將發(fā)生數(shù)據(jù)沖突的現(xiàn)象(漏極開路會(huì)產(chǎn)生線與的結(jié)果)。 Match ROM( 符合ROM)55h 此命令后繼以64位的ROM數(shù)據(jù)序列,允許總線主機(jī)對多點(diǎn)總線上特定的DS1尋址。只有與64位

17、ROM序列嚴(yán)格相符的DS18B20才能對后繼的存貯器操作命令作出響應(yīng)。所有與64位ROM序列不符的從片將等待復(fù)位脈沖。此命令在總線上有單個(gè)或多個(gè)器件的情況下均可使用。 Skip ROM( 跳過ROM )CCh 在單點(diǎn)總線系統(tǒng)中,此命令通過允許總線主機(jī)不提供64位ROM編碼而訪問存儲(chǔ)器操作來節(jié)省時(shí)間。如果在總線上存在多于一個(gè)的從屬器件而且在Skip ROM命令之后發(fā)出讀命令,那么由于多個(gè)從片同時(shí)發(fā)送數(shù)據(jù),會(huì)在總線上發(fā)生數(shù)據(jù)沖突(漏極開路下拉會(huì)產(chǎn)生線與的效果)。 Search ROM( 搜索ROM)F0h 當(dāng)系統(tǒng)開始工作時(shí),總線主機(jī)可能不知道單線總線上的器件個(gè)數(shù)或者不知道其64位ROM編碼。搜索R

18、OM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64位編碼。 Alarm Search(告警搜索)ECh 此命令的流程與搜索ROM命令相同。但是,僅在最近一次溫度測量出現(xiàn)告警的情況下,DS18B20才對此命令作出響應(yīng)。告警的條件定義為溫度高于TH 或低于TL。只要DS18B20一上電,告警條件就保持在設(shè)置狀態(tài),直到另一次溫度測量顯示出非告警值或者改變TH或TL的設(shè)置,使得測量值再一次位于允許的范圍之內(nèi)。貯存在EEPROM內(nèi)的觸發(fā)器值用于告警。 存儲(chǔ)器操作命令 Write Scratchpad(寫暫存存儲(chǔ)器)4Eh 這個(gè)命令向DS18B20的暫存器中寫入數(shù)據(jù),開始位置在地址2。接下來寫入的兩

19、個(gè)字節(jié)將被存到暫存器中的地址位置2和3。可以在任何時(shí)刻發(fā)出復(fù)位命令來中止寫入。 Read Scratchpad(讀暫存存儲(chǔ)器)BEh 這個(gè)命令讀取暫存器的內(nèi)容。讀取將從字節(jié)0開始,一直進(jìn)行下去,直到第9(字節(jié)8,CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時(shí)間發(fā)出復(fù)位命令來中止讀取。 Copy Scratchpad(復(fù)制暫存存儲(chǔ)器)48h 這條命令把暫存器的內(nèi)容拷貝到DS18B20的E2存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又正在忙于把暫存器拷貝到E2存儲(chǔ)器,DS18B20就會(huì)輸出一個(gè)“0”,如果拷貝結(jié)束的

20、話,DS18B20 則輸出“1”。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動(dòng)強(qiáng)上拉并最少保持10ms。 Convert T(溫度變換)44h 這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于做時(shí)間轉(zhuǎn)換的話,DS18B20將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動(dòng)強(qiáng)上拉,并保持500ms。 Recall E2(重新調(diào)整E2)B8h 這條命令把貯存在E2中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯?chǔ)器。這種重新調(diào)出的操作在

21、對DS18B20上電時(shí)也自動(dòng)發(fā)生,因此只要器件一上電,暫存存儲(chǔ)器內(nèi)就有了有效的數(shù)據(jù)。在這條命令發(fā)出之后,對于所發(fā)出的第一個(gè)讀數(shù)據(jù)時(shí)間片,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí):“0”=忙,“1”=準(zhǔn)備就緒。 Read Power Supply(讀電源)B4h 對于在此命令發(fā)送至DS18B20之后所發(fā)出的第一讀數(shù)據(jù)的時(shí)間片,器件都會(huì)給出其電源方式的信號(hào):“0”=寄生電源供電,“1”=外部電源供電。 處理數(shù)據(jù) DS18B20的高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如圖3所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位

22、在前,高位在后。 DS18B20溫度數(shù)據(jù)表 上表是DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測得的溫度大于或等于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。 溫度轉(zhuǎn)換計(jì)算方法舉例: 例如當(dāng)DS18B20采集到+125的實(shí)際溫度后,輸出為07D0H,則: 實(shí)際溫度=07D0H0.0625=20000.0625=1250C。 例如當(dāng)DS18B20采集到-55的實(shí)際溫度后,輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反

23、加1得370H(符號(hào)位不變,也不作為計(jì)算),則: 實(shí)際溫度=370H0.0625=8800.0625=550C。 2、顯示模塊LCD1602資料(這里主要介紹下指令說明及時(shí)序) 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表10-14所示:序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地

24、址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表10-14:控制命令表1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表

25、示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序表如下:讀狀態(tài)輸入RS=L,R

26、/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無表10-15:基本操作時(shí)序表讀寫操作時(shí)序如圖10-55和10-56所示:圖10-55 讀操作時(shí)序圖10-56 寫操作時(shí)序四、軟件設(shè)計(jì)系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換子程序、計(jì)算溫度子程序、顯示等等。 1、 主程序主要功能是完成DS18B20的初始化工作,并進(jìn)行讀溫度,將溫度轉(zhuǎn)化成為壓縮BCD碼 并在顯示器上顯示傳感器所測得的實(shí)際溫度。2、 讀出溫度子程序讀出溫

27、度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需要進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如下圖所示。3、 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辯率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。流程圖圖如下4、計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定。流程圖如下:五、完整程序如下:#include #include typedef unsigned char uint8;#define uint unsigned int#define uchar u

28、nsigned charsbit DQ = P33; / 定義DQ引腳為P3.3uchar code Bw10= 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;/百位編碼uchar code Xsw16=0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x34,0x35,0x36,0x36,0x37,0x38,0x38,0x39,0x39;/小數(shù)位編碼sbit RS = P20 ;sbit RW = P21 ;sbit EN = P22 ;sbit BUSY = P07;uchar wendu;uchar temp_g

29、,temp_d;unsigned char code word1=Temperature:;void delay(uint xms)uint i,j;for(i=xms;i0;-i)for(j=110;j0;-j);void Delayus(int t) /在11.059MHz的晶振條件下調(diào)用本函數(shù)需要24s ,然后每次計(jì)數(shù)需16s int s; for (s=0; st;s+); 等待繁忙標(biāo)志void wait(void)P0 = 0xFF;doRS = 0;RW = 1;EN = 0;EN = 1;while (BUSY = 1);EN = 0; 寫數(shù)據(jù)void w_dat(uint8 d

30、at)wait();EN = 0;P0 = dat;RS = 1;RW = 0;EN = 1;EN = 0; 寫命令void w_cmd(uint8 cmd)wait();EN = 0;P0 = cmd;RS = 0;RW = 0;EN = 1;EN = 0;發(fā)送字符串到LCDvoid w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start);while (*p != 0)w_dat(*p+); 初始化1602void Init_LCD1602(void)w_cmd(0x38); / 16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口w_cmd(0x0c)

31、; / 顯示器開、光標(biāo)開、光標(biāo)允許閃爍w_cmd(0x06); / 文字不動(dòng),光標(biāo)自動(dòng)右移w_cmd(0x01); / 清屏uchar Reset()/完成單總線的復(fù)位操作。 uchar d; DQ = 0; / 將 DQ 線拉低 Delayus(29); / 保持 480s .復(fù)位時(shí)間為480s,因此延時(shí)時(shí)間為(480-24)/16 = 28.5,取29s。 DQ = 1; / DQ返回高電平 Delayus(3); / 等待存在脈沖.經(jīng)過70s之后檢測存在脈沖,因此延時(shí)時(shí)間為(70-24)/16 = 2.875,取3s。 d = DQ; / 獲得存在信號(hào) Delayus(25); / 等待

32、時(shí)間隙結(jié)束 return(d); / 返回存在信號(hào),0 = 器件存在, 1 = 無器件void write_bit(uchar bitval)/向單總線寫入1位值:bitval DQ = 0; / 將DQ 拉低開始寫時(shí)間隙 if(bitval=1) DQ =1; / 如果寫1,DQ 返回高電平 Delayus(5);/ 在時(shí)間隙內(nèi)保持電平值, DQ = 1; / Delayus函數(shù)每次循環(huán)延時(shí)16s,因此Delayus(5)=5*16+24=104svoid ds18write_byte(char val)/向單總線寫入一個(gè)字節(jié)值:val uchar i; uchar temp; for (i

33、=0; ii; temp &= 0x01; write_bit(temp); Delayus(5);uchar read_bit()/從單總線上讀取一位信號(hào),所需延時(shí)時(shí)間為15s,因此無法調(diào)用前面定義 /的Delayus()函數(shù),而采用一個(gè)for()循環(huán)來實(shí)現(xiàn)延時(shí)。 uchar i; DQ = 0; /將DQ 拉低開始讀時(shí)間隙 DQ = 1; / 然后返回高電平 for (i=0; i3; i+); / 延時(shí)15s return(DQ); / 返回 DQ 線上的電平值uchar ds18read_byte()/從單總線讀取一個(gè)字節(jié)的值 uchar i; uchar value = 0; for

34、 (i=0;i8;i+) / 讀取字節(jié),每次讀取一個(gè)字節(jié) if(read_bit() value|=0x01i; / 然后將其左移 Delayus(6); return(value);int Readtemperature()/如果單總線節(jié)點(diǎn)上只有一個(gè)器件則可以直接掉用本函數(shù)。如果節(jié)點(diǎn)上有多個(gè)器 /件,為了避免數(shù)據(jù)沖突,應(yīng)使用Match ROM函數(shù)來選中特定器件。 uchar temp_d,temp_g,k,get2,temp; Reset(); ds18write_byte(0xcc); / 跳過 ROM ds18write_byte(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 Delayus(5); Reset(); ds18write_byte(0xcc); / 跳過 ROM ds18write_byte(0xbe); /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論