基于單總線多點溫度采集系統(tǒng)設計與制作_第1頁
基于單總線多點溫度采集系統(tǒng)設計與制作_第2頁
基于單總線多點溫度采集系統(tǒng)設計與制作_第3頁
基于單總線多點溫度采集系統(tǒng)設計與制作_第4頁
基于單總線多點溫度采集系統(tǒng)設計與制作_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

論文編號: 華南師范大學增城學院本科畢業(yè)論文(設計)題 目:基于單總線多點溫度采集系統(tǒng)設計與制作多功能多點溫度采集設計與實現(xiàn) 姓 名:唐慶良學 號:系 別:計算機系專業(yè)班級:信息管理與信息系統(tǒng) 07信息指導教師:2011年04月20日學位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的學位論文,是本人在導師的指導下,獨立進行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品或成果。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本聲明的法律結(jié)果由本人承擔。論文作者簽名: 日期: 年 月 日學位論文版權(quán)使用授權(quán)書本學位論文作者完全了解學校有關(guān)保留、使用學位論文的規(guī)定,同意學校保留并向國家有關(guān)部門或機構(gòu)送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權(quán)華南師范大學增城學院可以將本學位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。本學位論文屬于1、保密,在_年解密后適用本授權(quán)書。2、不保密。(請在以上相應方框內(nèi)打“”)作者簽名:日期: 年 月 日指導老師簽名:日期: 年 月 基于單總線多點溫度采集系統(tǒng)設計與制作目錄摘 要IAbstractII1. 背景及研究意義11.1溫度傳感器的發(fā)展狀況11.2智能溫度傳感器發(fā)展的新趨勢11.2.1提高測溫精度和分辨力11.2.2增加測試功能21.2.3總線技術(shù)的標準化與規(guī)范化21.3選題背景和研究意義22. 方案論證比較與選擇32.1 引言32.2方案設計32.2.1設計方案一32.2.2 設計方案二32.2.2 設計方案三32.3 方案的比較與選擇43. 硬件設計53.1單片機應用系統(tǒng)53.1.1復位電路53.1.2時鐘電路63.1.3 最小應用系統(tǒng)電路63.2紅外遙控接收電路設計73.3溫度傳感器應用設計73.4 溫度顯示電路84. 軟件系統(tǒng)設計94.1系統(tǒng)軟件設計的一般步驟94.2 軟件實現(xiàn)思路94.2.1系統(tǒng)主程序流程圖104.3 DS18B20傳感器程序設計104.3.1 DS18B20產(chǎn)品特點104.3.2 DS18B20的內(nèi)部結(jié)構(gòu)114.3.3 DS18B20的4個主要數(shù)據(jù)部件114.3.4 DS18B20的指令集134.3.5 DS18B20讀取溫度方法144.3.6 DS18B20軟件驅(qū)動實現(xiàn)144.3.7 DS18B20編程注意事項184.4 DS18B20控制與顯示設計185. 調(diào)試與小結(jié)205.1 硬件電路測試小結(jié)205.2 軟件測試小結(jié)205.3 總結(jié)205.4展望21附圖22程序附錄23參考文獻28致謝29III基于單總線多點溫度采集系統(tǒng)設計與制作摘 要本課題主要研究基于STC89C52單片機與單總線DS18B20數(shù)字溫度傳感器的多點溫度測量系統(tǒng)。它以STC89C52單片機為主控制芯片,采用數(shù)字溫度傳感器DS18B20實現(xiàn)多路溫度的檢測,測量精度可以達到0.5。該系統(tǒng)采用了LED16x64點陣顯示模塊,該模塊用于提示當前的操作情況,用4位公陽極數(shù)碼管顯示溫度,利用兩個單片機實現(xiàn)雙機通信,一個用于控制溫度,一個用于控制點陣,還運用單片機與PC機通信技術(shù)實現(xiàn)對DS18B20的序列號讀??;通過紅外遙控器控制讀取某一點的溫度,實現(xiàn)無線通信。關(guān)鍵詞:溫度測量;單總線;溫度傳感器;單片機AbstractThis topic research based on single bus STC89C52 single-chip microcomputer and the digital temperature sensor DS18B20 multi-spot temperature measuring system. It mainly STC89C52 single-chip microcomputer control chip, using digital temperature sensor DS18B20 realize multiple temperature detection and measurement accuracy can reach 0.5 . The system USES LED16x64 dot matrix display module, this module used to indicate current operating conditions, with four male anode digital pipe display temperature, use two SCM realizing double machine communication, one for control temperature, one for control dot matrix, still using MCU and PC communications technologies to achieve the serial number of DS18B20 read; Through reading some infrared temperature control, wireless communications.Key words: Temperature measurement; Single bus; Temperature sensors; Microcontroller291. 背景及研究意義1.1溫度傳感器的發(fā)展狀況傳感器主要大體經(jīng)過了三個發(fā)展階段:第一階段、模擬集成溫度傳感器。該傳感器是采用硅半導體集成工藝制成,因此亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一(僅測量溫度)、測溫誤差小、價格低、響應速度快、傳輸距離遠、體積小、微功耗等,適合遠距離測溫、控溫,不需要進行非線性校準,外圍電路簡單。第二階段、智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀90年代中期問世的。它的特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,需配相應的微控制器(MCU);并且它是在硬件的基礎(chǔ)上通過軟件來實現(xiàn)測試功能的,其智能化程度也取決于軟件的開發(fā)水平。第三階段、數(shù)字溫度傳感器,進入21世紀后,溫度傳感器的發(fā)展趨勢正朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展。所以數(shù)字溫度傳感器得以更加廣泛的應用。數(shù)字溫度傳感器DS18B20是智能溫度傳感器一種,它將非電模擬量溫度值轉(zhuǎn)換為數(shù)字信號輸出僅需占用 1 位 I/O 端口,能夠直接讀取被測物體的溫度值。它體積小,電壓適用范圍寬 3 V5 V,用戶還可以通過編程實現(xiàn) 912 位的溫度讀數(shù),即具有可調(diào)的溫度分辨率,因此它的實用性和可靠性比同類產(chǎn)品更高。1.2智能溫度傳感器發(fā)展的新趨勢進入21世紀后,智能溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展。1.2.1提高測溫精度和分辨力在20世紀90年代中期最早推出的智能溫度傳感器,采用的是8位A/D轉(zhuǎn)換器,其測溫精度較低,分辨力只能達到1C。目前,國外已相繼推出多種高精度、高分辨力的智能溫度傳感器,所用的是912位A/D轉(zhuǎn)換器,分辨力一般可達0.50.0625C。由美國DALLAS半導體公司新研制的DS1624型高分辨力智能溫度傳感器,能輸出13位二進制數(shù)據(jù),其分辨力高達0.03125C,測溫精度為0.2C。為了提高多通道智能溫度傳感器的轉(zhuǎn)換速率,也有的芯片采用高速逐次逼近式A/D轉(zhuǎn)換器。以AD7817型5通道智能溫度傳感器為例,它對本地傳感器、每一路遠程傳感器的轉(zhuǎn)換時間分別僅為27us、9us。1.2.2增加測試功能新型智能溫度傳感器都具有多種工作模式可供選擇,主要包括單次轉(zhuǎn)換模式、連續(xù)轉(zhuǎn)換模式、待機模式,有的還增加了低溫極限擴展模式,操作非常簡便。對某些智能溫度傳感器而言,主機(外部微處理器或單片機)還可通過相應的寄存器來設定其A/D轉(zhuǎn)換速率(典型產(chǎn)品為MAX6654),分辨力及最大轉(zhuǎn)換時間(典型產(chǎn)品為DS1624)。1.2.3總線技術(shù)的標準化與規(guī)范化目前,智能溫度傳感器的總線技術(shù)也實現(xiàn)了標準化、規(guī)范化,所采用的總線主要有單線(1-Wire)總線、I2C總線、SMBUS總線和SPI總線。溫度傳感器作為從機可通過專用總線接口與主機進行通信。1.3選題背景和研究意義溫度的測量和控制在儲糧倉庫、智能樓宇空調(diào)控制及其它的工農(nóng)業(yè)生產(chǎn)和科學研究中應用廣泛。溫度檢測的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導體 PN 結(jié) 如AD590 之類的模擬傳感器經(jīng)信號取樣電路、放大電路和模數(shù)轉(zhuǎn)換電路處理,獲取表示溫度值的數(shù)字信號,再交由微處理器或DSP處理。被測溫度信號從敏感元件接收的非電模擬量開始,到轉(zhuǎn)換為微處理器可處理的數(shù)字信號之間,設計者須考慮的線路環(huán)節(jié)較多,相應測溫裝置中元器件數(shù)量難以下降,隨之影響產(chǎn)品的高可靠性及體積微縮化。這樣,由于各種因素會造成傳輸檢測系統(tǒng)較大的偏差;又因為檢測環(huán)境復雜、測量點多、信號傳輸距離遠及各種干擾的影響,會使檢測系統(tǒng)的穩(wěn)定性和可靠性下降 。本文介紹一種基于數(shù)字溫度傳感器DS18B20的主從分布式多路測溫系統(tǒng)、該系統(tǒng)以單片機為主機,數(shù)字溫度傳感器通過與單片機P3.7連接,系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,可應用于倉庫測溫、樓宇空調(diào)控制和生產(chǎn)過程監(jiān)控、酒窖等領(lǐng)域。2. 方案論證比較與選擇2.1 引言溫度測量的方案有很多種,可以采用傳統(tǒng)的分立式傳感器、模擬集成傳感器以及新興的智能型傳感器。對于控制系統(tǒng)可以采用計算機、單片機等。2.2方案設計2.2.1設計方案一采用模擬分立元件,如電容、電感或晶體管等非線形元件,實現(xiàn)多點溫度的測量及顯示,該方案設計電路簡單易懂,操作簡單,且價格便宜,但采用分立元件分散性大,不便于集成數(shù)字化,而且測量誤差大。2.2.2 設計方案二本方案采用STC89C52單片機為核心,通過溫度傳感器AD590采集溫度信號,經(jīng)信號放大器放大后,送到A/D轉(zhuǎn)換芯片,最終經(jīng)單片機檢測處理溫度信號。 圖2-1 方案二的框圖如圖2-1,采用該方案技術(shù)已經(jīng)成熟,AD轉(zhuǎn)換電路設計較煩瑣,而且使用AD590進行溫度檢測必須對冷端進行補償,以減小誤差。2.2.2 設計方案三本設計運用主從分布式思想,由一個單片機控制點陣實現(xiàn),另一個單片機實現(xiàn)多點溫度數(shù)據(jù)采集,組成兩級分布式多點溫度測量的巡回檢測系統(tǒng)。數(shù)字溫度傳感器采用DS18B20。DS18B20利用單總線的特點可以方便的實現(xiàn)多點溫度的測量,輕松的組建傳感器網(wǎng)絡,系統(tǒng)的抗干擾性好、設計靈活、方便,而且適合于在惡劣的環(huán)境下進行現(xiàn)場溫度測量。本系統(tǒng)可以應用在大型工業(yè)及民用常溫多點監(jiān)測場合。如糧食倉儲系統(tǒng)、樓宇自動化系統(tǒng)、溫控制生產(chǎn)線之溫度影像檢測、醫(yī)療與健診的溫度測試、空調(diào)系統(tǒng)的溫度檢測、石化、機械等。系統(tǒng)框圖如2-2與圖2-3: 圖2-2讀取DS18B20框圖 圖2.3系統(tǒng)控制框圖2.3 方案的比較與選擇基于數(shù)字式溫度計DS18B20的溫度測量儀的硬軟件開發(fā)過程是將DS18B20溫度信號直接轉(zhuǎn)換為數(shù)字信號,實現(xiàn)了與單片機的直接接口,從而省去了信號調(diào)理電路。該儀器電路簡單、功能可靠、測量效率高,很好地彌補了傳統(tǒng)溫度測量方法的不足。相對與方案1,在功能、性能、可操作性等方面都有較大的提升。相對與方案2,硬件電路簡單,易于操作,具有更高的性價比,更大的市場。所以我采用方案3完成本設計。3. 硬件設計本課題研究的多點測溫系統(tǒng)是以單片機和單總線數(shù)字溫度傳感器DS18B20為核心,充分利用單片機優(yōu)越的內(nèi)部和外部資源及數(shù)字溫度傳感器DS18B20的優(yōu)越性能構(gòu)成一個完備的測溫系統(tǒng),實現(xiàn)對溫度的多點測量。整個系統(tǒng)由單片機控制,能夠接收傳感器的溫度數(shù)據(jù)并顯示出來,可以從用遙控其輸入命令,系統(tǒng)根據(jù)命令,選擇對應的溫度傳感器,并由驅(qū)動電路驅(qū)動溫度顯示,利用LED點陣對你的操作給予提示。本課題設計了一種合理、可行的單片機監(jiān)控軟件,完成測量和顯示的任務。由于單片機具有強大的運算和控制功能,使得整個系統(tǒng)具有模塊化、硬件電路簡單以及操作方便等優(yōu)點。本課題的整個系統(tǒng)的電路是由單片機、顯示電路、紅外遙控接收、DS18B20驅(qū)動電路,串口通信等構(gòu)成。3.1單片機應用系統(tǒng) 在當今新科學技術(shù)飛速發(fā)展的年代里,單片機的應用已越來越受到人們的重視,它被廣泛的應用于家電、醫(yī)療、智能儀表、工業(yè)自動化等各個領(lǐng)域。單片機全稱單片微型計算機,是將計算機的基本部分微型化,使之集成在一塊芯片上的微機。目前市場上較為流行的單片機有Intel公司和Philip公司的8051系列單片機Motorola 公司的M 6800系列單片機。本系統(tǒng)使用宏晶公司的STC89C52進行系統(tǒng)控制。3.1.1復位電路無論哪種單片機,都會涉及到復位電路。如果復位電路不可靠,在工作中就有可能出現(xiàn)“死機”,“程序走飛”等現(xiàn)象。所以,一個單片機復位電路的好壞,直接影響到整個系統(tǒng)工作的可靠性。復位操作完成單片機片內(nèi)電路的初始化,使單片機從一種確定的狀態(tài)開始運行。本復位電路有上電自動復位與手動復位功能,由一個電解電容和一個按鍵組成,具體電路如圖3-1: 圖3-1 復位電路圖3.1.2時鐘電路89C52單片機的時鐘信號通常用內(nèi)部振蕩和外部振蕩方式。在引腳XTAL1和XTAX2外接晶體振蕩器,就夠成了內(nèi)部振蕩方式。由于單片機內(nèi)部有一個高增益反相放大器,當外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時鐘脈沖。晶振通常選用6MHZ、12MHZ或24MHZ。內(nèi)部振蕩器方式如下。如圖3.7,電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5-30PF。內(nèi)部振蕩方式所得的時鐘信號比較穩(wěn)定。外部振蕩方式是把已有的時鐘信號引入單片機內(nèi),這種方式適于用于用來使單片機的時鐘與外部信號保持一致。具體電路如下: 圖3-2 時鐘原理圖3.1.3 最小應用系統(tǒng)電路有了復位電路與時陣電路就可以構(gòu)成單片機的最小應用系統(tǒng)了,單片機的I/O在做輸入輸出用時需要接上拉電阻,但51單片機的P1、P2、P3口就已經(jīng)在內(nèi)部接了上拉電阻就,外部就不需要接,而當你需要用P0口時就必須得接上拉電阻才能用,具體情況如圖3-3:圖3.3 單片機最小系統(tǒng)3.2紅外遙控接收電路設計紅外遙控器是電子設備常見的輸入裝置,作為人們與電子設備交流的重要途徑,一旦出錯,將影響到電子設備的整體使用,所以接收電路雖然簡單,但接收電路的穩(wěn)定性、可靠性,應引起足夠的重視。本系統(tǒng)紅外輸入設置是用一個普通遙控器,而接收具體電路如圖3-4: 圖3-4 紅外接收電路3.3溫度傳感器應用設計DS18B20溫度傳感器的主要特點就是單總線,電路接法簡單,不用別的復雜的輔助電路只要一個10K的上拉電阻,一個I/O口就可以將多個18B20接在一條總線下,就實現(xiàn)多點溫度采集系統(tǒng)的功能了,一條總線上最多可以接2的64次平方個18B20,這里我們只用到了8溫度傳感器,電路簡單并節(jié)省資源,具體如圖3-5:圖3.5 DS18B20原理圖3.4 溫度顯示電路本系統(tǒng)的溫度顯示主要是用到四位共陽極數(shù)碼管,電路應用簡單方便,具體電路如下圖3-6:圖3-6數(shù)碼管顯示原理圖4. 軟件系統(tǒng)設計單片機應用軟件系統(tǒng)設計包括功能模塊劃分、程序流程確立、模塊接口設計以及程序代碼編寫。我們依據(jù)系統(tǒng)的功能要求,將整體軟件系統(tǒng)分割成若干個獨立的程序模塊。這些程序模塊可以是幾條語句的集合、功能函數(shù)或程序文件。隨后,根據(jù)各程序模塊的實現(xiàn)功能寫出流程,一般需要寫出具體的實現(xiàn)功能描述。程序代碼通常采用匯編語言或高級語言(C語言)編寫,本系統(tǒng)采用的是C語言。4.1系統(tǒng)軟件設計的一般步驟統(tǒng)進行軟件設計時,先要對本課題硬件有一個熟練的掌握,知道系統(tǒng)的組成,數(shù)據(jù)的傳輸,信號是如何被控制的,以及信號的顯示。然后進行軟件設計時,先搞清楚各個部分的子程序及他們的流程圖,然后進行C語言編程,最后將它們系統(tǒng)的編程。4.2 軟件實現(xiàn)思路系統(tǒng)軟件設計步驟主要包括系統(tǒng)程序和流程圖,根據(jù)整個系統(tǒng)的要求,完成溫度的測量與控制必須經(jīng)過以下幾個步驟:單片機接受傳感器的溫度信號,通過數(shù)碼管將其顯示出來,并向主機(另一個控制LED點陣的單片機)接收一個提示信號,實現(xiàn)讀取某一點的溫度。系統(tǒng)總框架圖如圖4-1: 圖4-1系統(tǒng)總框架圖4.2.1系統(tǒng)主程序流程圖圖4-2系統(tǒng)主程序流程圖4.3 DS18B20傳感器程序設計DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛多這樣的數(shù)字溫度傳感器,十分方便。4.3.1 DS18B20產(chǎn)品特點l 只要求一個端口即可實現(xiàn)通信。l 在DS18B20中的每個器件上都有獨一無二的序列號。l 實際應用中不需要外部任何元器件即可實現(xiàn)測溫。l 測量溫度范圍在55.C到125.C之間。l 數(shù)字溫度計的分辨率用戶可以從9位到12位選擇。l 內(nèi)部有溫度上、下限告警設置。TO92封裝的DS18B20的引腳排列見右圖,其引腳功能描述見表4-1: 引腳功能表4-1序號名稱引腳功能描述1GND地信號2DQ數(shù)字輸入輸出引腳,開漏單總線接口引腳,當使用寄生電源時,可向電源提供電源3VDD可選擇的VDD引腳,當工作于寄生電源時,該引腳必須接地4.3.2 DS18B20的內(nèi)部結(jié)構(gòu)DS18B20的內(nèi)部框圖下圖4-3所示。64位ROM存儲器件獨一無二的序列號。暫存器包含兩字節(jié)(0和1字節(jié))的溫度寄存器,用于存儲溫度傳感器的數(shù)字輸出。暫存器還提供一個字節(jié)的上線警報觸發(fā)(TH)和下線警報觸發(fā)(TL)寄存器(2和3字節(jié)),和一個字節(jié)的配置寄存器(4字節(jié)),使用者可以通過配置寄存器來設置溫度轉(zhuǎn)換的精度。暫存器的5、6和7字節(jié)器件內(nèi)部保留使用。第八字節(jié)含有循環(huán)冗余碼(CRC )。使用寄生電源時,DS18B20不需額外的供電電源;當總線為高電平時,功率由單總線上的上拉電阻通過DQ引腳提供;高電平總線信號同時也向內(nèi)部電容CPP充電,CPP在總線低電平時為器件供電。圖4-3 DS18B20的內(nèi)部框圖4.3.3 DS18B20的4個主要數(shù)據(jù)部件光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/LSB形式表達,其中S為符號位。這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH,-55的數(shù)字輸出為FC90H。表4-2 DS18B20溫度數(shù)據(jù)表TEMPERATUREDIGITAL OUTPUTDIGITAL OUTPUT+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20溫度傳感器的存儲器 DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。配置寄存器表4-3配置寄存器0R1R011111低五位一直都是1,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如下表所示:(DS18B20出廠時被設置為12位)表4-4 R1與R0確定傳感器分辨率設置表R1R0傳感器精度/bit轉(zhuǎn)換時間/ms00993.750110187.5101137511127504.3.4 DS18B20的指令集前面提及單總線器件的ROM命令,在主機檢測到應答脈沖后,就可以發(fā)出ROM命令。這些命令與各個DS18B20設備的唯一64位ROM代碼相關(guān)。允許主機在單總線上連接多個從機設備時,指定操作某個DS18B20設備。這些命令還允許主機能夠檢測到總線上有多少個從機設備,以及其設備類型或者有沒有設備處于報警狀態(tài)。從機設備可能支持5種ROM命令(實際情況與具體型號有關(guān)),每種命令長度為8位。主機在發(fā)出功能命令之前,必須發(fā)送合適的ROM命令。DS18B20的功能命令如表4-5: 表4-5DS18B20的功能命令指令協(xié)議功能讀ROM33H讀DS18B20中的編碼(即64位地址)符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROM編碼,訪問單總線上與該編碼相對應的DS18B20,使之做出響應,為下一步對該DS18B20的讀寫做準備搜索ROM0F0H用于確定掛接在同一總線上DS18B20的個數(shù)和識別64位ROM地址,為操作各器件作好準備跳過ROM0CCH忽略64位ROM地址,直接向DS18B20V 溫度轉(zhuǎn)換命令,適用于單個DS18B20工作報警搜索命令0ECH執(zhí)行后,只有溫度超過廟宇值上限或下限的片子才做出響應溫度轉(zhuǎn)換44H啟動DS18B20進行溫度轉(zhuǎn)換,轉(zhuǎn)換時間最長為500ms(典型為200ms),結(jié)果寫入到內(nèi)部9字節(jié)RAM中讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的第3、4字節(jié)寫上、下溫度數(shù)據(jù)命令,緊該溫度命令之后,傳達兩字節(jié)的數(shù)據(jù)復制暫存器48H將RAM中第3、4字內(nèi)容復制到E2PROM中重調(diào)E2PROM0B8H將E2PROM中內(nèi)容恢復到RAM中的第3、4字節(jié)讀供電方式0B4H讀DS18B20的供電模式,寄生供電時DS18B20發(fā)送“0”,外部供電時DS18B20發(fā)送“1”4.3.5 DS18B20讀取溫度方法DS18B20有兩種應用方法,一種是一條總線上只掛了一個DS18B20。另外一種是一條總線上掛有多個DS18B20,兩種應用的讀取溫度的方法大致一樣,只有一些指令發(fā)送不一樣而已,下面給出兩種讀取方法的步驟:(1)單點讀取法 復位 發(fā)出“跳過ROM指令”0xcc 發(fā)出“溫度轉(zhuǎn)換指令”0x44 判忙(忙時數(shù)據(jù)線上為0) 復位 發(fā)出“跳過ROM指令”0xcc 發(fā)出“讀暫存器指令”0xbe 讀取兩個字節(jié),分別是溫度值的低字節(jié)與高字節(jié) 復位,操作結(jié)束(2)多點讀取法 復位 發(fā)出“匹配64位ROM指令”0x55 發(fā)出64位ROM碼 發(fā)出“溫度轉(zhuǎn)換指令”0x44 判忙(忙時數(shù)據(jù)線上為0) 復位 發(fā)出64位ROM碼 發(fā)出“讀暫存器指令”0xbe 讀取兩個字節(jié),分別是溫度值的低字節(jié)與高字節(jié) 復位,操作結(jié)束4.3.6 DS18B20軟件驅(qū)動實現(xiàn)DS18B20在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求,只有嚴格遵守通訊協(xié)議才能保證數(shù)據(jù)傳輸?shù)恼_性和完整性。所有時序均以主機為Master,單總線器件為Slave,每次數(shù)據(jù)的傳輸均從主機啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),則在寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收,數(shù)據(jù)和命令的傳輸都是低位在先。本課題的溫度測量與讀取軟件流程如圖4-4: 圖4-4 溫度測量程序流圖 DS18B20的復位時序 圖4-5 DS18B20復位時序主要程序如下:void ds1820rst()/ds1820復位* unsigned char x=0;DQ = 1; /DQ復位delay_18B20(4); /延時DQ = 0; /DQ拉低delay_18B20(100); /精確延時大于480usDQ = 1; /拉高delay_18B20(40); DS18B20的讀時序 圖4-6 DS18B20讀時序DS18B20的讀時序是主機先把單總線拉低,在之后的l5s內(nèi)必須釋放單總線,以便將數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20完成一個讀時序至少需要60s。讀時序主要子函數(shù)如下: unsigned char ds1820rd()/讀數(shù)據(jù) unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; /給脈沖信號 dat=1; DQ = 1; /給脈沖信號 if(DQ) dat|=0x80; delay_18B20(10); return(dat); DS18B20的寫時序圖4-7 DS18B20寫0時序與寫1時序主要程序如下:void ds1820wr(uchar wdata)/寫數(shù)據(jù)unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; 單總線上讀取單個DS18B20溫度DS18B20復位后,就可以編程控制讀到其內(nèi)部RAM所采集到的溫度值(通過P3.7),并且讀取數(shù)據(jù)時低位在前,高位在后。由于我們是在一天總線上掛了多個DS18B20,所以在對那個傳感器進行讀溫度時,必須先向單總線上寫DS18B20的序列號,才能完成讀溫度操作,讀出數(shù)據(jù)后,還需判斷讀到的溫度是正值還是負值,當溫度值為正值時,直接將二進制數(shù)轉(zhuǎn)換為十進制溫度值;當溫度值為負值時先將二進制補碼變?yōu)樵a,再轉(zhuǎn)換為十進制溫度值。向DS18B20寫序列號程序:void changds18b20_1(uchar pds18bnum88,uchar aa) uchar i; ds1820rst();delay(1); ds1820wr(0x55); delay(1); for(i=0;i8;i+) ds1820wr(pds18bnumaai); 讀取DS18B20溫度并轉(zhuǎn)換程序段:read_temp1()/讀取溫度值并轉(zhuǎn)換uchar a,b;ds1820rst(); changds18b20_1(ds18b20num,countnum-1);ds1820wr(0x44);/啟動溫度轉(zhuǎn)換ds1820rst(); changds18b20_1(ds18b20num,countnum-1);ds1820wr(0xbe);/讀取溫度a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a; if(tvalue32)/檢測引導碼bitnum=0; irdatabitnum=irtime; irtime=0; bitnum+; if(bitnum=33) bitnum=0; irrecok=1;startflag=0; else startflag=1;irtime=0; (2)顯示程序:顯示程序主要是將讀取到的溫度將其在數(shù)碼管上顯示出來,主要程序如下: void disp_temper(uint temper)/溫度值顯示 uchar temper_ge,temper_shi,temper_bai;temper_ge=temper%10;temper_shi=temper%100/10;temper_bai=temper/100;if(tflag=1)D4=0;P0=0xbf;delay(5);D4=1;D3=0;P0=tabtemper_bai;delay(5);D3=1;D2=0;P0=tabtemper_shi+10;delay(5);D2=1;D1=0;P0=tabtemper_ge;delay(5);D1=1;(3)主函數(shù):主函數(shù)是一個程序執(zhí)行的開始,主要是控制總個程序的運行的開始,主要程序代碼如下:void main()uint temper1; it0send();ds1820rst(); delay(1); ds1820wr(0xcc);/跳過讀序列號 ds1820wr(0x44);/啟動溫度轉(zhuǎn)換delay(200); while(1)temper1=read_temp1(); disp_temper(temper1);5. 調(diào)試與小結(jié)5.1 硬件電路測試小結(jié) 本課題通過分析對比各種不同的溫度傳感器,選定DS18B20,這種單總線數(shù)字溫度傳感器的通信方式比較獨特,軟件編寫要求的比較新穎,特點突出。用其構(gòu)建的系統(tǒng)有很多優(yōu)點:硬件連線簡單,省去了使用模擬傳感器要進行放大、A/D轉(zhuǎn)換等工作,由于它的級聯(lián)功能,一條總線可掛接多個傳感器測量不同位置的溫度,根據(jù)DS18B20唯一的序號識別不同傳感器在各自位置的溫度。硬件電路的簡單是以軟件的復雜為代價的,所以在程序編寫和調(diào)試的過程中稍微粗心就會出現(xiàn)錯誤,包括時間延時不夠,設置參數(shù)的類型有誤,按鍵子程序放置位置不妥等錯誤。需要注意的是, 在系統(tǒng)安裝及工作之前應將主機逐個與DS1820 掛接,以讀出其序列號。另外,由于DS1820 單線通信功能是分時完成的,遵循嚴格的時隙概念,因此, 系統(tǒng)對DS1820 和各種操作必須按協(xié)議進行,即:初始化DS1820 (發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,每一個自帶地址,大大減少了系統(tǒng)的電纜數(shù),提高了系統(tǒng)的穩(wěn)定性和抗干擾性。5.2 軟件測試小結(jié)本設計的軟件程序用是的C語言編程,它的可讀性非常強,容易理解,擺脫了難度的機器語言(匯編語言)跟進時代的發(fā)展腳步,這也是本次設計的一大優(yōu)越點之一。程序在設計當中遇到了很困難,有時候是數(shù)據(jù)設置有問題。由于DS18B20采用的是單總線技術(shù),所以在對它復位、寫指令、讀數(shù)據(jù)時對時間的要求控制是非常嚴格的,為了調(diào)試出準確的時間,我花了很多時,經(jīng)過不斷差資料,最后終于調(diào)出我想要的結(jié)果。5.3 總結(jié)經(jīng)過幾個月的不斷學習和努力,在老師的諄諄教導下,在其他老師及同學們的熱心幫助與指導下,基于單片機的單總線多點溫度測控系統(tǒng)的畢業(yè)設計即將結(jié)束,基本完成了老師所規(guī)定的各項工作任務。通過這一次畢業(yè)設計,我學了不少的知識,發(fā)現(xiàn)自己的知識還很欠缺,還有很多知識沒有掌握.通過這次設計我明白了學習是個不斷積累的過程,在生活和工作中應當不斷的積累,才能提高自己。學會了怎樣查閱資料和利用工具書,以及熟練地使用KEIL開發(fā)工具。通過這次畢業(yè)設計,我更加深刻地認識到只有將書本與具體的實踐相結(jié)合,才會有真正的收獲,才能鞏固自己的所學,認識到自己的不足。5.4展望采用單總線技術(shù)比用傳統(tǒng)的方案具有較高的性能價格比。而且,可以看出該技術(shù)具有以下特點:適用于低速測控場合,測控對象越多越顯示其優(yōu)越性;硬件施工、維修方便;抗干擾性能好,可靠性高;軟件設計規(guī)范,系統(tǒng)簡明直觀,易于掌握。因此,積極推廣單總線技術(shù)的應用會有較好的經(jīng)濟效益和社會效益。單總線技術(shù)以其線路簡單、硬件開銷少、成本低廉、軟件設計簡單方便而有著無可比擬的應用前景。基于單總線技術(shù)能較好地解決傳統(tǒng)識別器普遍存在的攜帶不便、易損壞、易受腐饋、易受電磁干擾等不足,可應用于高度安全的門禁、身份識別等領(lǐng)域。其通信可靠簡單,很容易實現(xiàn)。由于單片機構(gòu)成的應用系統(tǒng)可靠性高。系統(tǒng)配置規(guī)范控制功能具有預想性,變動控制方案容易。具有較高的性價比。因此單總線技術(shù)有著廣闊的應用前景,是值得關(guān)注的一個發(fā)展領(lǐng)域。附圖程序附錄#include #define uchar unsigned char #define uint unsigned int sbit DQ=P37;sbit D4=P27;sbit D3=P26;sbit D2=P25;sbit D1=P24; sbit key1=P33; sbit key2=P34;uint tvalue;/溫度值 uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; uchar countnum;uchar tflag,flagdat,t,hh1,ds18b20_wei;/溫度正負標志uchar tt,kk;uchar irtime,startflag,bitnum,irrecok,irprook,findir,ir_id;uchar code tabir42=0,1,0,3,0,4,0,6;uchar irdata33;uchar ircode4;uchar disp8;uchar code ds18b20num88=0x28,0x38,0x0e,0x3b,0x02,0x00,0x00,0x63, 0x28,0x5b,0x2e,0xc7,0x02,0x00,0x00,0x62, 0x28,0x50,0x39,0xc7,0x02,0x00,0x00,0xb7, 0x28,0x24,0x3e,0xc7,0x02,0x00,0x00,0xa2, 0x28,0x82,0x47,0xc7,0x02,0x00,0x00,0xd2, 0x28,0x99,0x4a,0xc7,0x02,0x00,0x00,0x9d, 0x28,0x3f,0x4d,0xc7,0x02,0x00,0x00,0x22, 0x28,0x73,0xf3,0x3a,0x02,0x00,0x00,0x2b ; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*溫度傳感器程序*/void delay_18B20(uint i)/延時1微秒 while(i-);void ds1820rst()/ds1820復位* uchar x=0;DQ = 1; /DQ復位delay_18B20(4); /延時DQ = 0; /DQ拉低delay_18B20(100); /精確延時大于480usDQ = 1; /拉高delay_18B20(40); uchar ds1820rd()/讀數(shù)據(jù) uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; /給脈沖信號 dat=1; DQ = 1; /給脈沖信號 if(DQ) dat|=0x80; delay_18B20(10); return(dat)

溫馨提示

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

評論

0/150

提交評論