溫度傳感器設計方案_第1頁
溫度傳感器設計方案_第2頁
溫度傳感器設計方案_第3頁
溫度傳感器設計方案_第4頁
溫度傳感器設計方案_第5頁
免費預覽已結束,剩余71頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

溫度傳感器設計方案第一章 緒論本課題研究的背景和意義及發(fā)展趨勢在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事,無時不刻不在與溫度打著交道。自 18世紀工業(yè)革命以來, 工業(yè)發(fā)展與是否能掌握溫度有著密切的聯系。 在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等行業(yè),可以說幾乎 80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。傳感器主要大體經過了三個發(fā)展階段: 模擬集成溫度傳感器。 該傳感器是采用硅半導體集成工藝制成, 因此亦稱硅傳感器或單片集成溫度傳感器。 此種傳感器具有功能單一 (僅測量溫度 )、測溫誤差小、 價格低、響應速度快、 傳輸距離遠、體積小、微功耗等,適合遠距離測溫、控溫,不需要進行非線性校準,外圍電路簡單。它是目前在國外應用最為普遍的一種集成傳感器,典型產品有 AD590、AD592TMP17LM135等;模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關、可編程溫度控制器,典型產品有 LM56AD2210用口MAX6509某些增強型集成溫度控制器(例如TC652/653)中還包含了A/D轉換器以及固化好的程序,這與智能溫度傳感器有某些相似之處。但它自成系統(tǒng), 工作時并不受微處理器的控制,這是二者的主要區(qū)別;智能溫度傳感器。能溫度傳感器 (亦稱數字溫度傳感器)是在20世紀90年代中期問世的。它是微電子技術、計算機技術和自動測試技術(ATE)的結晶。智能溫度傳感器部都包含溫度傳感器、 A/D轉換器、信號處理器、存儲器 (或寄存器 )和接口電路。有的產品還帶多路選擇器、中央控制器(CPU)、隨機存取存儲器(RAM和只讀存儲器(ROM)智能溫度傳感器的特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎上通過軟件來實現測試功能的, 其智能化程度也取決于軟件的開發(fā)水溫度傳感器的研究意義:本課題研究的重要意義在于生產過程中隨著科技的不斷發(fā)展, 現代社會對各種信息參數的準確度和精確度的要求都有了幾何級的增長, 而如何準確而又迅速的獲得這些參數, 就需要受制于現代信息基礎的發(fā)展水平。 在三大信息信息采集(即傳感器技術) 、信息傳輸(通信技術)和信息處理(計算機技術)中,傳感器屬于信息技術的前沿尖端產品, 尤其是數字溫度傳感器技術, 在我國各領域已經應用的非常廣泛可以說是滲透到社會的每一個領域, 與人民的生活和環(huán)境的溫度息息相關。溫度是一個和人們生活環(huán)境有著密切關系的物理量, 也是一種在生產、 科研、生活中需要測量和控制的重要物理量, 是國際單位制七個基本量之一。 其測量控制一般產用各式各樣形態(tài)的溫度傳感器。 [3]在傳統(tǒng)的溫度測量系統(tǒng)設計中,往往采用模擬技術進行設計, 這樣就不可避免地遇到諸如引線誤差補償、 多點測量中的切換誤差和信號調理電路的誤差等問題; 而其中某一環(huán)節(jié)處理不當, 就可能造成整個系統(tǒng)性能的下降。 隨著現代科學技術的飛速發(fā)展, 特別是大規(guī)模集成電路設計技術的發(fā)展, 微型化、集成化、數字化正成為傳感器發(fā)展的一個重要方向。美國Dallas半導體公司推出的數字溫度傳感器DS18B20具有獨特的單總線接口,僅需要占用一個通用I/O端口即可完成與微處理器的通信;在-10?+85C溫度圍具有0.5c精度;用戶可編程設定9?12位的分辨率。以上特性使得DS18B20t常適用于構建高精度、多點溫度測量系統(tǒng)。溫度傳感器的發(fā)展趨勢:進入21世紀后,溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性及安全性、 開發(fā)虛擬傳感器和網絡傳感器、 研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展。傳感器在溫度測控系統(tǒng)中的應用。目前市場主要存在單點和多點兩種溫度測量儀表。 對于單點溫測儀表, 主要采用傳統(tǒng)的模擬集成溫度傳感器, 其中又以熱電阻、 熱電偶等傳感器的測量精度高,測量圍大, 而得到了普遍的應用。 此種產品測溫圍大都在 -200℃~800℃之間,分辨率12位,最小分辨溫度在0.001?0.01之間。自帶LED顯示模塊,顯示4位到16位不等。有的儀表還具有存儲功能,可存儲幾百到幾千組數據。該類儀表可很好的滿足單個用戶單點測量的需要。 多點溫度測量儀表, 相對與單點的測量精度有一定的差距,雖然實現了多路溫度的測控,但價格昂貴。針對目前市場的現狀, 本課題提出了一種可滿足要求、 可擴展的并且性價比高的單片機多路測溫系統(tǒng)。本課題的任務和系統(tǒng)設計目標課題的主要任務是用 80C51設計一個多溫度檢測系統(tǒng), 整個系統(tǒng)由單片機控制,要能夠接收傳感器的數據并顯示出來, 可以從軟件設計輸入命令, 系統(tǒng)根據命令,選擇對應的傳感器, 并由驅動電路驅動溫度顯示。 根據該課題首先要解決的問題是對相關軟硬件的熟悉和了解, 并學習相關知識。 然后對該檢測系統(tǒng)需要的模塊(包括單片機主控制器,四點溫度檢測, A/D轉換電路的實現,數碼顯示電路,蜂鳴器電路,等)進行分析,最后用Proteus與KEIL連接并仿真,最終進行調試運行。開發(fā)工具:Proteus仿真軟件,KEIL編程軟件。系統(tǒng)總體設計思想是以單片機為控制核心 ,整個系統(tǒng)硬件部分包括多個溫度檢測部分、 控制執(zhí)行部分、 顯示及鍵盤系統(tǒng)及最小系統(tǒng)基本電路。系統(tǒng)利用單片機獲得多個溫度傳感器數據并與系統(tǒng)設計值進行比較 ,根據比較結果分別控制執(zhí)行系統(tǒng)。然后再進行 Proteus仿真。本課題研究容(1)利用單片機,確定系統(tǒng)的總體設計方案,包括其功能設計;設計原則;組成與工作原理;(2)對單片機的應用作進一步的了解,對于溫度控制要有更進一步的認識。進行智能傳感器的硬件電路設計;包括硬件電路構成及測量原理;溫度傳感器的選擇;單片機的選擇;輸入輸出通道設計;(4)本系統(tǒng)采用層次化、模塊化設計,整個系統(tǒng)由數據采集系統(tǒng)、單片機控制系統(tǒng)、計算機監(jiān)控系統(tǒng)組成。進行了調試和仿真,包括硬件仿真和軟件仿真,完成數據的采集和處理。

第二章方案論證比較與選擇引言溫度測量的方案有很多種,可以采用傳統(tǒng)的分立式傳感器、模擬集成傳感器以及新興的智能型傳感器。對于控制系統(tǒng)可以采用單片機等。方案設計設計方案一采用模擬式分立元件,如電容、電感或晶體管等非線形元件,進行A/D轉換后,就可以用單片機進行數據的處理,實現多個點溫度的測量以及顯示, 該方案設計電路簡單易懂,操作簡單,且價格便宜,但采用分立元件分散性大,不便于集成數字化,而且測量誤差大。設計方案二本方案采用80C51單片機為核心,通過溫度傳感器AD590R集溫度信號,經信號放大器放大后,送到A/D轉換芯片,最終經單片機檢測處理溫度信號單 LED>片< >顯示機圖2.1方案二的框圖如圖2.1,采用該方案技術已經成熟, A/D轉換電路設計較煩瑣,而且使用AD590進行溫度檢測必須對冷端進行補償,以減小誤差。2.2.3設計方案三本方案采用 80C51作為該系統(tǒng)的單片機。 系統(tǒng)整體硬件電路包括 :電源電路,復位電路,晶振電路,傳感器電路,溫度顯示電路,上下限報警電路等。報警電路可以在被測溫度不在上下限圍時,發(fā)出報警鳴叫聲音。當 DSl8B20采集到多個溫度信號后,進行電信號轉換送至 80C51中處理,同時將溫度送到顯示數碼管顯示,單片機根據初始化設置的溫度上下限進行判斷處理, 即如果溫度大于所設的最高溫度和小于所設定的最低溫度就啟動報警裝置。整個系統(tǒng)由單片機控制, 要能夠接收傳感器的數據并顯示出來, 可以從鍵盤輸入命令,系統(tǒng)根據命令,選擇對應的傳感器,并由驅動電路驅動溫度顯示。并與預先設定值進行比較,然后由單片機輸出信號去控制報警電路DS18B20PJ用單總線的特點可以方便的實現多點溫度的測量,輕松的組建傳感器網絡,系統(tǒng)的抗干擾性好、設計靈活、方便,而且適合于在惡劣的環(huán)境下進行現場溫度測量。系統(tǒng)框圖如下:

圖2.2方案三的系統(tǒng)框圖方案的比較與選擇基于數字式溫度計DS18B20勺溫度測量儀的硬軟件開發(fā)過程,DS18B20等溫度信號直接轉換為數字信號,實現了與單片機的直接接口,從而省去了信號調理電路。該儀器電路簡單、功能可靠、測量效率高,很好地彌補了傳統(tǒng)溫度測量方法的不足。 相對與方案 1,在功能、性能、可操作性等方面都有較大的提升。相對與方案 2,硬件電路簡單,易于操作,具有更高的性價比,更大的市場。所以我采用方案 3完成本設計。方案的闡述與論證方案三以DS18B2的傳感器、80C51^片機為控制核心組成多點溫度測試系統(tǒng),該系統(tǒng)包括電源電路,復位電路,時鐘電路,傳感器電路,鍵盤與溫度顯示電路,上下限報警電路, 驅動電路等組成部。采用美國 Dallas半導體公司推出的數字溫度傳感器DS18B20屬于新一代適配微處理器的智能溫度傳感器。它具有獨特的單總線接口,僅需要占用一個通用 I/0端口即可完成與微處理器的通信。全部傳感元件及轉換電路集成在形如一只三極管的集要求通過簡單的編程實現9?12位的數字值讀數方式。其可以分別93.75m手口750m交成9位和12位的數字量,最大分辨率為0.0625C,而且從DS18B2嵌出或寫入DS18B2的信息僅需要一根口線(單線接口)讀寫。它有如下的性能特點:獨特的單線接口, 既可通過串行口線, 也可通過其它 I/O口線與微機接口,無需變換其它電路,直接輸出被測溫度值;多點能力使分布式溫度檢測應用得以簡化;不需要外部元件;既可用數據線供電,也可采用外部電源供電;不需備份電源;6)測量圍為-55?+125C,固有測溫分辨率為0.5c;7)通過編程可實現9?12位的數字讀數方式;用戶可定義非易失性的溫度告警設置;警告搜索命令能識別和尋址溫度在編定的極限之外的器件 (溫度警告情況);10)應用圍包括恒溫控制、工業(yè)系統(tǒng)、消費類產品、溫度計或任何熱敏系統(tǒng)。以上特性使得DS18B20上常適用于構建高精度、多點溫度測量系統(tǒng)根據DS18B20Z上的特點我選用方案三來實現本課題。第三章 硬件設計本課題研究的多點測溫系統(tǒng)是以單片機和單總線數字溫度傳感器 DS18B20為核心,充分利用單片機優(yōu)越的部和外部資源及數字溫度傳感器 DS18B20勺優(yōu)越性能構成一個完備的測溫系統(tǒng), 實現對溫度的多點測量。 整個系統(tǒng)由單片機控制,能夠接收傳感器的溫度數據并顯示出來,可以從鍵盤輸入命令,系統(tǒng)根據命令,選擇對應的溫度傳感器,并由驅動電路驅動溫度顯示。本課題設計了一種合理、可行的單片機監(jiān)控軟件, 完成測量和顯示的任務。 由于單片機具有強大的運算和控制功能,使得整個系統(tǒng)具有模塊化、硬件電路簡單以及操作方便等優(yōu)點。本課題的整個系統(tǒng)主要是由單片機、 顯示電路、 鍵盤電路、 驅動電路等構成。溫度傳感器溫度傳感器選用細則現代傳感器在原理與結構上千差萬別, 如何根據具體的測量目的、 測量對象以及測量環(huán)境合理地選用傳感器, 是在進行某個量的測量時首先要解決的題。 當傳感器確定之后, 與之相配套的測量方法和測量設備也就可以確定了。 測量結果的成敗,在很大程度上取決于傳感器的選用是否合理。根據測量對象與測量環(huán)境確定傳感器的類型要進行—個具體的測量工作, 首先要考慮采用何種原理的傳感器, 這需要分析多方面的因素之后才能確定。 因為,即使是測量同一物理量, 也有多種原理的傳感器可供選用, 哪一種原理的傳感器更為合適,則需要根據被測量的特點和傳感器的使用條件考慮以下一些具體問題:量程的大?。?被測位置對傳感器體積的要求; 測量方式為接觸式還是非接觸式;信號的引出方法,有線或是非接觸測量;傳感器的來源,國產還是進口,價格能否承受,還是自行研制。 2)靈敏度的選擇通常,在傳感器的線性圍,希望傳感器的靈敏度越高越好。 因為只有靈敏度高時,與被測量變化對應的輸出信號的值才比較大,有利于信號處理。 但要注意的是,傳感器的靈敏度高, 與被測量無關的外界噪聲也容易混入, 也會被放大系統(tǒng)放大,影響測量精度。因此,要求傳感器本身應具有較高的信噪比,盡員減少從外界引入的串擾信號3)頻率響應特性傳感器的頻率響應特性決定了被測量的頻率圍, 必須在允許頻率圍保持不失真的測量條件,實際上傳感器的響應總有—定延遲,希望延遲時間越短越好。傳感器的頻率響應高,可測的信號頻率圍就寬,而由于受到結構特性的影響,機械系統(tǒng)的慣性較大,因有頻率低的傳感器可測信號的頻率較低。4)線性圍傳感器的線形圍是指輸出與輸入成正比的圍。以理論上講,在此圍,靈敏度保持定值。傳感器的線性圍越寬,則其量程越大, 并且能保證一定的測量精度。在選擇傳感器時,當傳感器的種類確定以后首先要看其量程是否滿足要求。但實際上,任何傳感器都不能保證絕對的線性, 其線性度也是相對的。 當所要求測量精度比較低時, 在一定的圍, 可將非線性誤差較小的傳感器近似看作線性的,這會給測量帶來極大的方便。穩(wěn)定性傳感器使用一段時間后, 其性能保持不變化的能力稱為穩(wěn)定性。 影響傳感器長期穩(wěn)定性的因素除傳感器本身結構外,主要是傳感器的使用環(huán)境。因此, 要使傳感器具有良好的穩(wěn)定性, 傳感器必須要有較強的環(huán)境適應能力。 在選擇傳感器之前,應對其使用環(huán)境進行調查, 并根據具體的使用環(huán)境選擇合適的傳感器, 或采取適當的措施,減小環(huán)境的影響。精度精度是傳感器的一個重要的性能指標, 它是關系到整個測量系統(tǒng)測量精度的一個重要環(huán)節(jié)。傳感器的精度越高,其價格越昂貴,因此,傳感器的精度只要滿足整個測量系統(tǒng)的精度要求就可以, 不必選得過高。 這樣就可以在滿足同一測量目的的諸多傳感器中選擇比較便宜和簡單的傳感器。如果測量目的是定性分析的, 選用重復精度高的傳感器即可, 不宜選用絕對量值精度高的;如果是為了定量分析, 必須獲得精確的測量值, 就需選用精度等級能滿足要求的傳感器。對某些特殊使用場合, 無法選到合適的傳感器, 則需自行設計制造傳感器。自制傳感器的性能應滿足使用要求。3.1.2溫度傳感器 DS18B20DS18B2型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器。全部傳感元件及轉換電路集成在形如一只三極管的集成電路。 與傳統(tǒng)的熱敏電阻相比, 它能夠直接讀出被測溫度, 并且可根據實際要求通過簡單的編程實現9?12位的數字值讀數方式。其可以分別93.75m手口750m交成9位和12位的數字量,最大分辨率為0.0625C,而且從DS18B201出或寫入DS18B2的信息僅需要一根口線 (單線接口 )讀寫。.DS18B2的性能特點單線數字化智能集成溫度的傳感器,其特點是:①DSI8B2M將被測溫度直接轉換成計算機能識別的數字信號輸出,溫度值不需要經電橋電路先獲取電壓模擬量,再經信號放大和A/D轉換成數字信號,解決了傳統(tǒng)溫度傳感器存在的因參數不一致性,在更換傳感器時會因放大器零漂而必須對電路進行重新調試的問題,使用方便.②DS18B2能提供9到12位溫度讀數,精度高,且其信息傳輸只需1根信號線,與計算機接口十分簡便,讀寫及溫度變換的功率來自于數據線而不需額外的電源.

③每一個DS18B2都有一個惟一的序列號,這就允許多個DS18B2硅接到同一總線上.尤其適合于多點溫度檢測系統(tǒng).④負壓特性:當電源極性接反時,DS18B201然不能正常工作,但不會因發(fā)熱而燒毀正是由于具有以上特點,DS18B20E解決各種誤差、可靠性和實現系統(tǒng)優(yōu)化等方面與傳統(tǒng)各種溫度傳感器相比, 有無可比擬的優(yōu)越性,因而廣泛應用于過程控制、環(huán)境控制、建筑物、過程控制、環(huán)境控制、建筑物、圖3.1DS18B20外部形狀及管腳圖⑵.DS18B201單片機的典型接口設計DS18B2測溫系統(tǒng)具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點。DS18B2叫單片機的硬件連接有兩種方法:一是VC援外部電源,GN接地,I/0與單片機的I/0線相連;二是用寄生電源供電,此時,~UD甘口GN接地,I/0接單片機I/0。無論是哪種供電方式,I/0口線都要接4.7kQ左右的上拉電阻。圖4給出了DSl8B2(0t微處理器的典型連接。①DS18B2CW生電源供電方式:如下面圖3.2(a)所示,在寄生電源供電方式下,DS18B2彌單線信號線上汲取能量:在信號線DQt于高電平期間把能量儲存在部電容里, 在信號線處于低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。獨特的寄生電源方式有三個好處:1)進行遠距離測溫時,無需本地電源2)可以在沒有常規(guī)電源的條件下讀取 ROM3)電路更加簡潔,僅用一根 I/O口實現測溫要想使DS18B2進行精確的溫度轉換,I/O線必須保證在溫度轉換期間提供足夠的能量,由于每個DS18B2猊溫度轉換期間工作電流達到1mA當幾個溫度傳感器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉換溫度或溫度誤差極大。因此,該電路只適應于單一溫度傳感器測溫情況下使用, 不適宜采用電池供電系統(tǒng)中。并且工作電源VCC、須保證在5V,當電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。②DS18B2CW生電源強上拉供電方式:改進的寄生電源供電方式如下面圖3.2(b)所示,為了使DS18B2m動態(tài)轉換周期中獲得足夠的電流供應,當進行溫度轉換或拷貝到 E2存儲器操作時,用MOSFETI/O線直接拉到VCC就可提供足夠的電流,在發(fā)出任何涉及到拷貝到E2存儲器或啟動溫度轉換的指令后,必須在最多 10小把I/O線轉換到強上拉狀態(tài)。在強上拉方式下可以解決電流供應不走的問題, 因此也適合于多點測溫應用,缺點就是要多占用一根 I/O口線進行強上拉切換。④DS18B20的外部電源供電方式:如下面圖3.2(c)所示,在外部電源供電方式下,DS18B2CT作電源由VDDH腳接入,其VD端用3?5.5Vt源供電,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度,同時在總線上理論可以掛接任意多個 DS18B20

傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下, DS18B2的GNDI腳不能懸空,否則不能轉換溫度,讀取的溫度總是85cVCC4.7KDS1852C一門7(a)DS18B201生電源供電方式(c)DS18B20卜部電源供電方式11FroVCC4.7KDS1852C一門7(a)DS18B201生電源供電方式(c)DS18B20卜部電源供電方式11Fro(b)DS18B20 溫度轉換期間的強上拉供電(寄生電源方式)圖3.2DS18B20與微處理器的典型連接圖DS18B20的部結構:圖3.3為DS18B20的部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROMI線接口、存放中間數據的高速暫存器(含便箋式RAM)用于存儲用戶設定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分。64位光刻ROM的排列是:開始8位是產品類型標號,接著的48

位是該DS18B201身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼。光刻R0M的作用是使每一個DS18B20B各不相同,這可實現一根總線上掛接多個DS18B20的目的。暫存存儲器包含了8個連續(xù)字節(jié),前2個字節(jié)是測得的溫度信息,第1個字節(jié)的容是溫度的低8位,第2個字節(jié)是溫度的高8位。第3個和第4個字節(jié)是THTL的易失性拷貝,第5個字節(jié)是結構寄存器的易失性拷貝,這3個字節(jié)的容在每一次上電復位時被刷新。第6、7、8個字節(jié)用于部計算。第9個字節(jié)是冗余檢驗字節(jié).圖3.3DS18B20的部結構DS18B20的測溫原理:DS1820M溫原理如下圖所示。圖中低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。小,用于產生固定頻率的脈沖信號送給計數器1。圖3.4DS18B20測溫原理高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55C所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到計數器2計數到0時,DS18B20M量溫度原理停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。

在正常測溫情況下,DS18B20的測溫分辨力為0.5C,可采用下述方法獲得高分辨率的溫度測量結果:首先用DS18B20提供的讀暫存器指令(BEH)讀出以0.5C為分辨率的溫度測量結果,然后切去測量結果中的最低有效位(LSB),得到所測實際溫度的整數部分TZ,然后再用BEH指令取計數器1的計數剩余值CS和每度計數值CD考慮到DS18B2測量溫度的整數部分以0.25C、0.75C為進位界限的關系,實際溫度TS可用下式計算:TS=(TZ—0.25C)+(CD—CS)/CD(5)告警信號:DS18B20完成溫度轉換后,就把測得的溫度值與THTL作比較。若T>TH或T<TL,則將該器件的告警標志置位,并對主機發(fā)出的告警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行告警搜索。一旦某測溫點越限, 主機利用告警搜索命令即可識別正在告警的器件,并讀出其序號,而不必考慮非告警器件。CRC的產生:在64位ROM的最高有效字節(jié)中存有循環(huán)冗余校驗碼(CRC)。主機根據ROM勺前56位來計算CRC值,并和存入DS18B20中的CRC值作比較,以判斷主機收到的ROMR據是否正確。CRC的函數表達式為:CRC=X+X5+X4+1。止匕外,DS18B20尚需依上式為暫存器中的數據來產生一個8位CRC送給主機,以確保暫存器數據傳送無誤。在本課題中采用四個數字式溫度傳感器DS18B201單片機89C5處接如下圖圖3.5 DS18B2多點溫度測量連接電路圖圖3.5 DS18B2多點溫度測量連接電路圖DS1820使用中注意事項DS18B2CS然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題:①較小的硬件開銷需要相對復雜的軟件進行補償,由于DS18B20W微處理器間采用串行數據傳送,因此,在對DS18B20S行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。②在DS18B20勺有關資料中均未提及單總線上所掛DS18B2O量問題,容易使人誤認為可以掛任意多個DS18B20在實際應用中并非如此。當單總線上所掛DS18B20a過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統(tǒng)設計時要加以注意。③連接DS18B20勺總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數據將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m當采用每米絞合次數更多的雙絞線帶屏蔽電纜時, 正常通訊距離進一步加長。 這種情況主要是由總線分布電容使信號波形產生畸變造成的。因此,在用DS18B2M行長距離測溫系統(tǒng)設計時要充分考慮總線分布電容和阻抗匹配問題。④在DS18B20H溫程序設計中,向DS18B2CK出溫度轉換命令后,程序總要等待DS18B20勺返回信號,一旦某個DS18B2戢觸不好或斷線,當程序讀該DS18B20寸,將沒有返回信號,程序進入死循環(huán)。這一點在進行 DS18B208件連接和軟件設計時也要給予一定的重視。單片機系統(tǒng)設計在當今新科學技術飛速發(fā)展的年代里, 單片機的應用已越來越受到人們的重視,它被廣泛的應用于家電、醫(yī)療、智能儀表、工業(yè)自動化等各個領域。單片機全稱單片微型計算機, 是將計算機的基本部分微型化, 使之集成在一塊芯片上的微機。目前市場上較為流行的單片機有 Intel公司和Philip公司的8051系列單片機.Motorola公司的M6800系列單片機。Intel公司的MCS9陳列單片機以及Microchip公司的PIC系列單片機。片含有CPUROMRAM并行I/O口、串行I/O口、定時/計數器、A/D、D/A、中斷控制、系統(tǒng)時鐘及系統(tǒng)總線等。本課題是利用Intel的80C51控制整個系統(tǒng)。80C51單片機包含下列幾個部件:1個8位CPU1個片震蕩器及時鐘電路、4KBROM?序存儲器、128BRAMR據存儲器、可尋址64KB外部數據存儲器和64KB外部程序存儲器的控制電路、32條可編程的 I/O線、2個16位的定時/計數器、 1個可編程全雙工串行接口、 5個中斷源、2個優(yōu)先級嵌套中斷結構。本課題運用Intel公司的80C51進行系統(tǒng)控制,運用到了復位電路,時鐘電路,串口, I/O口。復位電路:無論哪種單片機,都會涉及到復位電路。如果復位電路不可靠,在工作中就有可能出現“死機” ,“程序走飛”等現象。所以,一個單片機復位電路的好壞, 直接影響到整個系統(tǒng)工作的可靠性。 復位操作完成單片機片電路的初始化,使單片機從一種確定的狀態(tài)開始運行。當80C51i1片機的復位引腳RSTB現5m劭上的高電平時,單片機就完成了復位操作,如果 RST寺續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài), 而無法執(zhí)行程序, 因此要求單片機復位后能脫離復位狀態(tài)。復位操作通常有上電和開關復位。 上電復位要求接通電源后, 自動實現復位操作。開關復位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關操作使單片機復位。常用的上電復位且開關復位電路如圖 3.6所示,上電后,由于電容充電,使RST寺續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST寺續(xù)一段時間的高電平,從而實現上電且開關復位的操作。單片機的復位操作使單片機進入初始化過程,其中包括是程序計數器 PC=0000H,P0-P3=FFHSP=07H其他寄存器處于零,程序從0000Hft址單元開始執(zhí)行,單片機復位后不改變片RAM:中的容。圖3.6.復位電路時鐘電路:80C5憚片機的時鐘信號通常用部振蕩和外部振蕩方式。在引腳XTAL評口XTAX外接晶體振蕩器,就夠成了部振蕩方式。由于單片機部有一個高增益反相放大器,當外接晶振后,就構成了自激振蕩器并產生振蕩時鐘脈沖。 晶振通常選用6MHZ12MHz24MHz部振蕩器方式如下。如圖3.7,電容器C1、C2B穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5-30PF。部振蕩方式所得的時鐘信號比較穩(wěn)定。外部振蕩方式是把已有的時鐘信號引入單片機,這種方式適于用于用來使單片機的時鐘與外部信號保持一致。3.7時鐘電路按鍵及顯示電路設計本課題要將傳感器的溫度信號和鍵盤輸入的控制信號都顯示出來, 利用單片機80C51傳輸控制信號。鍵盤在單片機應用系統(tǒng)中能實現向單片機輸人數據、 傳送命令等功能, 是人工干預單片機的主要手段 ,鍵盤實質上是一組按鍵開關集合 ,通常選用機械彈性開關,它們利用了機械觸點的合、斷作用。鍵的閉合與否,反映在輸出電壓上就是呈現低電平還是高電平, 通過對電平高低狀態(tài)的檢測, 便可確認是否有按鍵按下。為了確保CPU對一次按鍵動作只確認一次, 那就必須消除抖動的影響,這樣才能使鍵盤在單片機系統(tǒng)中使用得更加穩(wěn)定。 常用的鍵盤接口分為獨立式按鍵接口和矩陣式鍵盤接口。在本系統(tǒng)中, 按鍵主要是用來設置溫度的上下限, 對其上限加和下限減操作,以達到所要求的溫度值。 因此采用獨立式鍵盤來完成這一功能。該溫控系統(tǒng)主要包括:時鐘模塊、復位模塊、報警模塊、鍵盤模塊、溫度采集模塊、 液晶顯示模塊以及溫度控制模塊等。 其中時鐘模塊和復位模塊是啟動芯片80C51不可或缺的。溫度采集模塊只是采用DS18B20通過P1.0口對其初始化、讀操作和寫操作,控制DS18B2廓集數據并轉換后的數據傳到單片機里進行處理。液晶顯示模塊是選用LCM1602來顯示實時溫度和所設定的溫度上下限值,其中數據命令選擇端RS接P3.7,讀寫選擇端R/W接P3.6,使能信號E接P3.5,而引腳VEE接在可變電阻器上,通過調整其電阻值來調節(jié)液晶顯示器對比度。鍵盤模塊是S0復位、按鈕S1、S2、S3和S4組成,其中S1是設定溫度上下限的確認按鍵,而 S2、S3分別是對溫度上下限設定值進行“加一” 、“減一”操作。報警模塊則是由三極管驅動蜂鳴器報警。該系統(tǒng)中可以用DS18B2冰存儲設置溫度上下限的值。該系統(tǒng)硬件電路的主要原理圖見圖 1所示:W——U1-1_33P17FlFiIP15Pi4F1J3F12Fl-1P1J0EAALEIPSEMROTP3.T/R0P3F/WRP35ZT1P3-4/DP3J/WT1Pi2*TDF3.1JT7DF三P2.7W15P?.BZA1dP2.拿A13P24Al2P2.3/A11因3的P2.1陶PQ.7-PAD7PO.B'AraPO.§'AMLCD1LmoiolRP1RFSPACKB-圖3.8顯示電路圖及按鍵控制報警電路設計為了實現四點溫度檢測報警系統(tǒng),本課題采用80C5憚片機作為主控制器,采用掃描的方式對四點DS18B2媼度傳感器獲取對應該位置的溫度值,經處理后可以立即發(fā)送到單片機,如只要四點溫度有一個不在設定的圍,給出報警信號。系統(tǒng)總體硬件電路如圖3.11所示。

圖3.9 圖3.9 溫度報警電路/□SOUNDER<TEXT>第四章 軟件設計軟件開發(fā)工具的選擇要使單片機系統(tǒng)按照人的意圖辦事, 需設法讓人與計算機對話, 并聽從人的指揮。程序設計語言是實現人機交換信息的最基本工具,可分為機器語言、 匯編語言和高級語言。機器語言用二進制編碼表示每一條指令,是計算機能直接識別和執(zhí)行的語言。用機器語言編寫的程序成為機器語言程序或者指令程序(機器碼程序) 。因為機器只能識別和執(zhí)行這種機器碼程序, 所以又稱它為目標程序。 用機器語言編寫程序不易記憶、不易查錯、不易修改。為了克服機器語言的上述缺點, 可采用有一定含義的符號, 即指令助記符來表示,一般都采用某些有關的英文單詞的縮寫。 這樣就出現了另一種程序語言—匯編語言。匯編語言是用助記符、 符號和數字等來表示指令的程序語言, 容易理解和記憶,它與機器語言指令是一一對應的。匯編語言不像高級語言(如 BASIC)那樣通用型強,而是屬于某種計算機所獨有, 與計算機的部硬件結構密切相關。 用匯編語言編寫的程序稱為匯編語言程序。以上兩種語言都是低級語言。 盡管匯編語言有不少優(yōu)點, 但它仍存在著機器語言的某些缺陷:與CPU勺硬件結構密切相關,不同的CPE匯編語言是不同的。這使得匯編語言程序不能移植, 使用不便;其次,要使用匯編語言進行程序設計必須了解所使用CP映件的結構與性能,對程序設計人員有較高的要求。為此,又出現了對單片機進行編程的高級語言,如PL\M,C等。KEILC51是美國KEILSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。KEILC51軟件提供豐富的庫函數和功能強大的集成開發(fā)調試工具,全Window界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KEILC51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現高級語言的優(yōu)勢。經以上分析綜合得知,本課題采用CS言進行編程。系統(tǒng)軟件設計的一般原則在單片機應用開發(fā)中代碼使用效率、 單片機的抗干擾性以及軟件可靠性是實際工程設計的重點。單片機應用軟件系統(tǒng)設計包括功能模塊劃分、 程序流程確立、 模塊接口設計以及程序代碼編寫。 我們依據系統(tǒng)的功能要求, 將整體軟件系統(tǒng)分割成若干個獨立的程序模塊。 這些程序模塊可以是幾條語句的集合、功能函數或程序文件。隨后,根據個程序模塊的實現功能寫出流程,一般需要寫出具體的實現功能描述。程序代碼通常采用匯編語言或高級語言( C語言)編寫。本課題采用C語言編程,在此必須注意以下問題:1)提高程序代碼效率必須熟悉當前使用的C語言編譯器,試驗每條C語言編譯以后對應的匯編語言的語句行數,這樣就可以很明確的知道代碼效率。2)減少程序錯誤我們在編寫程序時,要注重考慮如下方面。[1]物理參數 [2]資源參數 [3]應用參數 [4]過程參數(3)單片機的抗干擾性防止干擾最有效的方法是去除干擾源、 隔離干擾路徑。 單片機干擾最常見的現象就是復位,導致程序運行異常。設計系統(tǒng)是一般需要添加一個“看門狗”監(jiān)控模塊,在系統(tǒng)出現不可逆轉的干擾時, 監(jiān)控模塊將重啟系統(tǒng), 并從斷點處繼續(xù)執(zhí)行。(4)系統(tǒng)的可靠性要測試單片機軟件功能的完善性。上電、掉電測試。系統(tǒng)耗損測試。系統(tǒng)軟件設計的一般步驟系統(tǒng)進行軟件設計時, 先要對本課題硬件有一個熟練的掌握, 知道系統(tǒng)的組成,數據的傳輸, 信號是如何被控制的, 以及信號的顯示。 然后進行軟件設計時,先搞清楚各個部分的子程序及他們的流程圖,然后進行C語言編程,最后將它們系統(tǒng)的編程軟件實現系統(tǒng)軟件設計主要包括系統(tǒng)程序和流程圖, 根據整個系統(tǒng)的要求, 完成溫度的測量與控制必須經過以下幾個步驟:單片機接受傳感器的溫度信號,并通過LCD液晶顯示器顯示出來,單片機掃描按鍵,接受控制信號,并將溫度上下限設定值顯示出來,若溫度不在圍則發(fā)出報警。系統(tǒng)主程序流程圖首先要對系統(tǒng)的各個模塊初始化,先執(zhí)行測溫子程序,獲取外界的溫度值送單片機進行處理,調用相應的顯示子程序, 對獲取的溫度顯示。 然后單片機對按鍵所連接的引腳進行巡回檢測,若果為低電平,說明有鍵被按下, 執(zhí)行相應的按鍵功能,對溫度上下限的設定值進行調整并顯示在 LCD夜晶顯示器。若檢測到返回鍵為低電平,則回到原來的測溫狀態(tài),此時的報警上下限的設定值已經修改,系統(tǒng)根據此設定值和主程序,判斷是否需要調用報警子程序和蜂鳴器響起子程序。開始測溫子程序系統(tǒng)初始化溫度顯示子程序顯示調整溫度報警子程序顯示溫度上下限蜂鳴器響起子程序圖4.1系統(tǒng)主程序流程圖傳感器程序設計DS18B20?程簡介每一片單總線芯片部都有一個全球惟一的 64位編碼,在多路測溫時就是通過匹配每個芯片的ROMS碼(ID),來搜尋該路的溫度。DS18B20r9個可擦寫的部寄存器,稱為便箋式RAM所有的串行通訊,讀寫每一個bit位數據都必須嚴格遵守器件的時序邏輯來編程,同時還必須遵守總線命令序列,對單總線的 DS18B20芯片來說,訪問每個器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM^T令;最后就是執(zhí)行功能命令(ROMfiT令和功能命令后面以表格形式給出 )。如果出現序列混亂,則單總線器件不會響應主機。當然,搜索ROM命令和報警搜索命令,在執(zhí)行兩者中任何一條命令之后,要返回初始化?;趩慰偩€上的所有傳輸過程都是以初始化開始的, 初始化過程由主機發(fā)出的復位脈沖和從機響應的應答脈沖組成。 應答脈沖使主機知道, 總線上有從機設備,且準備就緒。每次訪問任何單總線器件, 必須嚴格遵守這個命令序列 ;如果出現序列混亂,則單總線器件不會響應主機。但是這個準則對于搜索ROMT令和報警搜索命令例外,在執(zhí)行兩者中任何一條命令之后, 主機不能執(zhí)行其后的功能命令, 必須返回至第一步。在主機發(fā)出ROMT令,以訪問某個指定的DS18B20接著就可以發(fā)出DS18B20£持的某個功能命令。這些命令允許主機寫人或讀出DS18B20W存器,啟動溫度轉換以及判斷從機的供電方式。(2)軟件實現前面提及單總線器件的ROMT令,在主機檢測到應答脈沖后,就可以發(fā)出ROM命令。這些命令與各個從機設備的唯一64位ROMfc碼相關。允許主機在單總線上連接多個從機設備時, 指定操作某個從機設備。 這些命令還允許主機能夠檢測到總線上有多少個從機設備, 以及其設備類型或者有沒有設備處于報警狀態(tài)。 從機設備可能支持5種ROMT令(實際情況與具體型號有關),每種命令長度為8位。主機在發(fā)出功能命令之前,必須發(fā)送合適的ROMr令。①搜索ROM[F0h]當系統(tǒng)初始上電時,主機必須找出總線上所有從機設備的RO膿碼,這樣主機就能夠判斷出從機的數目和類型。主機通過重復執(zhí)行搜索ROMf環(huán)(搜索ROMr令跟隨著位數據交換 )以找出總線上所有的從機設備。如果總線只有一個從機設備,則可以采用讀ROMr令來替代搜索ROMr令。在每次執(zhí)行完搜索ROMf環(huán)后,主機必須返回至命令序列的第一步 (初始化 )。②讀ROM[33h](僅適合于單節(jié)點)該命令僅適用于總線上只有一個從機設備。它允許主機直接讀出從機的 64位RO優(yōu)碼,而無須執(zhí)行搜索ROMt程。如果該命令用于多節(jié)點,系統(tǒng)則必然發(fā)生數據沖突,因為每個從機設備都會響應該命令。③匹配ROM[55h]匹配ROMr令跟隨64位ROM;碼,從而允許主機訪問多節(jié)點系統(tǒng)中某個指定的從機設備。僅當從機完全匹配64位ROM;碼時,才會響應主機隨后發(fā)出的功能命令。其它設備將處于等待復位脈沖狀態(tài)。④跳越ROM[CCh]僅適合于單節(jié)點)主機能夠采用該命令同時訪問總線上的所有從機設備,而無須發(fā)出任何 ROM代碼信息。例如,主機通過在發(fā)出跳越ROMT令后跟隨轉換溫度命令[44h],就可以同時命令總線上所有的DS18B2肝始轉換溫度,這樣大大節(jié)省了主機的時間。值得注意的是,如果跳越ROMT令跟隨的是讀暫存器[BEh]的命令(包括其它讀操作命令),則該命令只能應用于單節(jié)點系統(tǒng),否則將由于多個節(jié)點都響應該命令而引起數據沖突。⑤報警搜索「ECh](僅少數1一Wire器件支持)除那些設置了報警標志的從機響應外,該命令的工作方式完全等同于搜索ROMT令。該命令允許主機設備判斷那些從機設備發(fā)生了報警(如最近的測量溫度過高或過低等)。同搜索ROMr令一樣,在完成報警搜索循環(huán)后,主機必須返回至命令序列的第一步。DS18B2施一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求,只有嚴格遵守通訊協(xié)議才能保證數據傳輸的正確性和完整性。 所有時序均以主機為Master,單總線器件為Slave,每次數據的傳輸均從主機啟動寫時序開始,如果要求單總線器件回送數據,則在寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。①DS18B20勺復位時序VDD主機接收所需肚短時間七機發(fā)出整位脈沖序?發(fā)出應答肽中SO叫VDD主機接收所需肚短時間七機發(fā)出整位脈沖序?發(fā)出應答肽中SO叫他貓3最大值;颯四圖4.2DS18B20復位時序〃該函數返回為0,表示有DS1820否則沒有bitreset(void){biterr;DQ=0; //在數據線上產生600us的低電平delay15(40);DQ=1; 〃數據線拉高delay15(4); // 延時60userr=DQ; //讀取數據線狀態(tài),err=0:復位成功delay15(18); // err=1: 復位失敗return(err);}②DS18B20勺讀時序圖4.3DS18B20讀時序DS18B2的讀時序分讀0時序和讀1時序兩個過程。讀時序是主機先把單總線拉低,在之后的15s必須釋放單總線,以便將數據傳輸到單總線上。 DS18B20完成一個讀時序至少需要60sounsignedcharread_bit(void){unsignedchari;DQ=0; // 將DQ拉低開始讀時間隙_nop_();_nop_();DQ=1; 〃thenreturnhighfor(i=0;i<3;i++); //延時15仙s

return(DQ);//返回DQ線上的電平值}ucharrdbyte(void)//{uchari;return(DQ);//返回DQ線上的電平值}ucharrdbyte(void)//{uchari;dat=0;for(i=8;i>0;i--){dat=dat>>1;DQ=0; //_nop_();DQ=1;delay15(1); //dat7=DQ;delay15(4); //}

return(dat);}③DS18B20的寫時序。從總線上讀取一個字節(jié)//讀出數據初值為0//循環(huán)讀8位(先低位,后高位)//讀出數據先右移一位產生1us的負脈沖//數據總線拉高//讀取數據延時,為讀下一位做準備圖4.4DS18B20寫0時序與寫1時序DS18B2的寫時序也分為寫0時序和寫1時序兩個過程。寫0時序和寫1時序的要求不同,寫0時,單總線要被拉低至少60s,保證DS18B2能夠在15-45s之間正確采樣I/O總線上的“0”電平。寫1時,單總線被拉低,在之后的15s必須釋放單總線

voidwrite_bit(charbitval){DQ=0; //將DQ拉低開始寫時間隙_nop_();_nop_();if(bitval==1)DQ=1; //如果寫1,DQ返回高電平delay(8); //在時間隙保持電平值,DQ=1; //Delay 函數每次循環(huán)延時13仙s,因止匕delay(8)=105(is}voidwrbyte(uchard)//{uchari;}voidwrbyte(uchard)//{uchari;dat=d;for(i=8;i>0;i--){DQ=0;

delay15(1);DQ=dat0;dat=dat>>1;delay15(1);DQ=1;向總線寫入一個字節(jié)//循環(huán)寫 8位(先低位,后高位)//產生15us的負脈沖//將當前數據位送數據線//將下一位要寫入的數據移到最低位//延時15us//數據線拉高,為寫入下一位做準備}DS18B2艇位后,就可以編程控制讀到其部RA蜥采集到白溫度值(通過P0.7),并且讀取數據時低位在前,高位在后。 讀出數據后, 需判斷對應的溫度是正值還是負值,當溫度值為正值時,直接將二進制數轉換為十進制溫度值 ;當溫度值為負值時先將二進制補碼變?yōu)樵a,再轉換為十進制溫度值。本課題的溫度測量與讀取軟件流程:開始延時圖4.5溫度測量程序流圖DS18B20U程注意事項(1)溫度換時間設置為750ms寸,靈敏度會大大提高,在需要較高精度要求下建議使用,而且回復性很好 ;Dsl8B20的讀寫時序須經仔細調整,在反復的調試中找出合適的延時時間 ;(3)在程序等待DS18B20:出的存在信號時,最好設置一個有限的等待時間,否則一旦有溫度傳感器損壞時,程序將進人無限等待的死循環(huán)中顯示程序設計根據系統(tǒng)的要求, 單片機不僅要能接收到溫度信號, 還要將溫度信號顯示出來,使系統(tǒng)一目了然。液晶顯示模塊與數碼管相比,顯得更為專業(yè)、漂亮。液晶顯示屏以其功耗低、體積小、顯示容豐富、超薄輕巧、使用方便等諸多優(yōu)點,在儀器儀表、電子設備、 家用電器等低功耗應用系統(tǒng)中得到越來越廣泛的應用。 液品模塊分為字符型和點陣型兩類:字符型顯示模塊通常只能顯示ASCII碼表中的數字、字母等符號;點陣型顯示模塊除了可以顯示ASCII字符,還能顯示漢字、繪制圖形。(一)引腳功能RT1602液晶模塊帶標準字庫,部的字符發(fā)生存儲器(CGRQME經存儲了192個5X7點陣字符,可顯示2行X16列共32個點陣字符,其外觀及引腳排列如圖6-8所示,其引腳功能說明如下:VSS電源地VDD5V正電源V0:為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生陰影,使用時可以通過一個10K的電位器調整對比度。RS寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。R/W讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。E:使能控制信號,當該引腳由高電平跳變成低電平時, 液晶模塊執(zhí)行命令。RS=0R/W=1E=1時,讀取液晶模塊的狀態(tài)字。RS=0R/W=0E=1,向液晶模塊寫入命令字。RS=1R/W=1E=1時,從液晶模塊讀取數據。RS=1R/W=0E=1時,向液晶模塊寫入數據。DB3DB78位雙向數據線。BLA背光源正極。BLK背光源負極。讀時序寫時序

讀時序寫時序(二)顯示模塊的指令功能RT1602夜晶模塊部的控制器共有11條控制指令,單片機對液晶模塊的控制都是通過指令編程來實現的,指令的格式如表 6-3所示,現分別說明如下1、清屏:指令碼01H,清屏后,光標返回到地址00Ho2、光標返回光標返回到地址 00H。3、光標和顯示模式設置I/D光標移動方向,高電平右移,低電平左移。S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效4、顯示開 /關控制D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示C:控制光標的開與關,高電平表示有光標,低電平表示無光標低電平不閃爍。顯示模塊的指令集B:低電平不閃爍。顯示模塊的指令集表4.8RT1602指令RSR/WD7D6D5D4D3D2D1D0清屏光標返回置輸入模式I/D顯示開/關控制光標或字符移位S/CR/L置功能DL置數據存儲器地顯示數據存儲器地址(ADD)指令RSR/WD7D6D5D4D3D2D1D0清屏光標返回置輸入模式I/D顯示開/關控制光標或字符移位S/CR/L置功能DL置數據存儲器地顯示數據存儲器地址(ADD)讀忙標志或地址BF計數器地址( AC)寫數據要寫的數據寫數據讀出的數據讀數據讀出的數據5、光標或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標。R/L:移動方向,高電平右移,低電平左移。6、置功能

DL高電平時為4位總線,低電平時為8位總線。N:低電平時為單行顯示,高電平時雙行顯示。F:低電平時顯示5X7的點陣字符,高電平時顯示5X10的點陣字符7、置數據存儲器地址:如圖4.9所示,液晶屏幕上的每個字符位置與部數據存儲器( DDRAM之間為了將字符顯示到屏幕指定位置,必須用該命令設置液晶模塊的數據存儲器地址。例如:為了能在第二行第二列(數據存儲器地址為 41H)顯示字符,必須首先置數據存儲器地址為41H,相應的命令字為10000000B+01000001B=11000001B(C1H。8、讀忙標志和光標地址:BF為BF:BF為低電平表示不忙。AC為當前計數器地址9、寫數據:RT1602液晶模塊部的字符發(fā)生存儲器(CGROM)經存儲了160個不同的點陣字符圖形, 包括阿拉伯數字、 英文字母的大小寫、 常用的符號、 和日文假名等,每一個字符都有一個固定的代碼, 一般為該字符的 ASCII碼,只要執(zhí)行寫數據指令,寫入該字符的代碼,就可在屏屏幕上顯示該字符。為了使程序清晰易讀, 將對命令口、 數據口的寫操作及等待操作完成設計成函數,每次寫入指令碼或數據后必須等待忙標志 BF為0后才返回;由于每次寫入數據后, 模塊的地址寄存器會自動指向下個單元, 因此無需在每個字符輸出前都設置數據存儲器地址, 比如在顯示字符串 str1前,只要用“l(fā)cd_cmd(0x80);”語句設置一次即可,將strl的第一個字符'W寫入模塊地址為00H的單元,即顯示在第一行的第一個字符位置, 后續(xù)的其它字符就無需再設置地址了, 程序清單如下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDP0//P0口作為總線端口sbitRS=P3A7;// 數據/命令寄存器選擇控制端sbitRW=P3A6;// 讀寫控制端sbitE=P3A5;//使能控制端sbitRDY=LCDA7;//就緒線BF,低電平有效voidlcd_cmd(ucharcmd)//向液晶屏發(fā)送指令{LCD=cmd;RS=0; //選擇命令寄存器RW=0; //執(zhí)行寫數據操作E=1;_nop_(); //延時}}}}E=0; //使能信號有效while(1){LCD=0xff;//總線變高RS=0; // 選擇命令寄存器RW=1; // 讀操作E=0; // 使能信號有效_nop_();//延時E=1; // 撤消使能信號if(RDY==0)break;//如果就緒,返回}}voidlcd_dat(uchardat)//向液晶屏寫入數據{LCD=dat;// 顯示數據送總線RS=1; // 選擇數據寄存器RW=0; // 執(zhí)行寫數據操作E=1;_nop_();E=0; //使能信號有效while(1){LCD=0xff;// 總線變高RS=0;// 選擇命令寄存器RW=1;// 讀操作E=0; // 使能信號有效_nop_();// 延時E=1; // 撤消使能信號if(RDY==0)break;//如果就緒,返回dat=LCD;}}voidinit_lcd(void)//初始化液晶屏lcd_cmd(0x01);//清屏幕lcd_cmd(0x3c);//設置雙行顯示 ,5X10點陣lcd_cmd(0x0C);//開顯示,關閉光標voiddisp_str(ucharx,uchary,uchar*p)//在x行、y列顯示字符串 pif(x==0)//voidinit_lcd(void)//初始化液晶屏lcd_cmd(0x01);//清屏幕lcd_cmd(0x3c);//設置雙行顯示 ,5X10點陣lcd_cmd(0x0C);//開顯示,關閉光標voiddisp_str(ucharx,uchary,uchar*p)//在x行、y列顯示字符串 pif(x==0)//如果在第一行顯示lcd_cmd(0x80+y);//設置寫入地址else//如果在第二行顯示lcd_cmd(0xc0+y);//設置寫入地址while(*p)//將字符依次發(fā)送到液晶屏lcd_dat(*p++);鍵盤程序設計單片機將傳感器的溫度信號顯示以后, 要開始按鍵處理, 單片機根據按鍵將溫度上下限設定值信號顯示出來或者是執(zhí)行其他相應的功能。鍵盤電路雖然簡單,但鍵盤的穩(wěn)定性、可靠性,應引起足夠的重視。所以,當檢測到有鍵按下或釋放時,應通過軟件延時 20-30ms左右,避開觸點抖動的影響。去抖時間既不能太短也不能太長:如果時間太短,無法起到去抖作用;如果時間太長,超過了鍵按下的持續(xù)時間,則會判不到按鍵。 軟件去抖時間不宜太短也不宜太長, 定為20ms。為確定是否有鍵按下,CPUfe通過并行輸出口使所有的行線為低電平, 然后通過并行輸入口讀入列信號,若為全“ 1”,則沒有鍵按下,若有一個為“ 0”,則表示有一個鍵已按下。若有一個為“ 0”,則表示有一個鍵已按下。為消去按下時的抖動現象,程序延遲20mSt再判斷具體是哪一個鍵按下先將第一行置為低電平,然后讀入列信號,若有一個為“ 0”,則按下的鍵在此行;若為全“ 1”,則按下的鍵不在此行,再將下一行置為低電平,并測試列信號。根據本課題的系統(tǒng)要求,鍵盤主要是用來設置溫度的上下限, 因此采用獨立式鍵盤來完成這一功能。通過設置四個按鍵來控制溫度上下限的顯示和調整,程序清單如下所示:while(1){ inti,t;if(S2==0){debouncer();term_H=(0<term_H&&term_H<100)?++term_H:50;while(S2==0);debouncer();}if(S3==0){debouncer();term_L=(0<term_L&&term_L<100)?--term_L:50;debouncer();}debouncer();}for(i=0;i<1;i++)//{bitzf;zf=0;if(term_H<0)依次顯示報警溫度值TOC\o"1-5"\h\z//正負標記 溫度在0度以下為 1,否則為 0//如果溫度小于 0{zf=1; //正負標志置 1term_H=-term_H;//求出溫度的絕對值term_H=-term_H;//求出溫度的絕對值str[0]=term_H/100+0x30;term_H=term_H%100;str[1]=term_H/10+0x30;str[2]=term_H%10+0x30;if(zf==1){str[0]=term_H/100+0x30;term_H=term_H%100;str[1]=term_H/10+0x30;str[2]=term_H%10+0x30;if(zf==1){if(str[1]=='0'){str[0]='';str[1]='-';}elsestr[0]='-';}else{if(str[0]=='0'){if(str[1]=='0') //str[1]='';str[0]=''; ////求出百位的 ASCII碼//求出十位的 ASCII碼//求出個位的 ASCII碼//如果是負數//如果十位為 0//顯示格式為 '-x.x'//如果十位不為 0//顯示格式為 '-xx.x'//如果是正數//如果百位、十位都是 0顯示格式為 'x.x'//如果只有百位為 0顯示格式為 'xx.x'}}disp_str(i/2,(i%0x02)*9+2,str);// 將字符串在指定位置顯示出來for(t=1;t<2;t++)//依次顯示報警溫度值{TOC\o"1-5"\h\zbitzf; //正負標記 溫度在0度以下為 1,否則為 0zf=0;if(term_L<0) //如果溫度小于 0{zf=1; //正負標志置 1term_L=-term_L;//term_L=-term_L;//求出溫度的絕對值//求出百位的 ASCII //求出百位的 ASCII 碼//求出十位的 ASCII 碼//求出個位的 ASCII 碼//如果是負數//如果十位為 0//顯示格式為 '-x.x'//如果十位不為 0//顯示格式為 '-xx.x'如果是正數//如果百位、十位都是 0顯示格式為 'x.x'//如果只有百位為 0顯示格式為 'xx.x'將字符串在指定位置顯示出在屏幕指定位置顯示//A:}str[0]=term_L/100+0x30;term_L=term_L%100;str[1]=term_L/10+0x30;str[2]=term_L%10+0x30;if(zf==1){if(str[1]=='0'){str[0]='';str[1]='-';}elsestr[0]='-';}TOC\o"1-5"\h\zelse //{if(str[0]=='0'){if(str[1]=='0') //str[1]='';str[0]=''; //}}disp_str(t/2,(t%0x02)*9+2,str);//}if(S4==0){debouncer();str[1]=':';//for(i=0;i<4;i++)

//C://C:disp_str(i/2,(i%0x02)*9,str);}break;while(S4==0);debouncer();}}報警程序設計當溫度大小或小于所設定的溫度是,蜂鳴器開始響起,一直到溫度在設定溫度。聲音是由蜂鳴器的振動產生,而蜂鳴器就像是一個電磁鐵,電流流過即可激磁,則蜂鳴器里發(fā)聲的簧片將被吸??;電流消失時,簧片將被放開。若要產生 f的頻率,則需于T時間(其中T=1/f),進行吸、收各一次,換言之,激磁、斷磁的時間各為T/2,成為半周期。例如,要產生1khz的頻率,則半周期為0.5ms,P3.7所發(fā)送的彳S號中,0.5ms為高電平,0.5ms為低電平。若0.5ms為高電平與0.5ms為低電平為一組信號,連續(xù)送出100組,即可得到1khz的聲音約為0.1s;停止輸出0.1s后,在連續(xù)送出10則可聽到“嘩、嘩”兩聲。)0停止輸出0.1s后,在連續(xù)送出10則可聽到“嘩、嘩”兩聲。)0組0.5ms為高電平與0.5ms為低電平的信號,p 1讀入溫 gj—大于或小于設皆也報警器響起}}}}圖4.10報警流程圖程序清單:voidpulse(intcount,intTH,intTL){inti;for(i=0;i<count;i++){LS1=1;delay10ms(TH);LS1=0;delay10ms(TL);}}voidalarm(){if(((term_H<temp[0])||(temp[0]<term_L))||((term_H<temp[1])||(temp[1]<term_L))||((term_H<temp[2])||(temp[2]<term_L))||((term_H<temp[3])||(temp[3]<term_L )))//只要四點有一個大魚或低于溫度上下限,就報警{ pulse(5,1,1);delay10ms(50);第五章仿真調試及小節(jié)仿真結果在KEIL下編譯項目,進入調試方式后全速運行,然后切換到Proteus環(huán)境,此時在屏幕上將會顯示出各測溫點的溫度值,如圖 6-12所示。用鼠標指向某傳感器的或點擊左鍵, 屏幕上對應位置的溫度值將隨之增減, 如果某個傳感器的溫度值總是為 0,應檢查它的序列號是否與數組二維數組 id中所定義的值一致。多路采樣周期的估算: 采樣周期由兩部分組成: (1)啟動總線上所有的DS18B20W]時開始轉換到轉換2束,最長不超過 750ms(2)逐一選定總線上的DS18B20并讀取其溫度。根據讀寫時序,分析rdbyte()及wrbyte(),讀寫一字5.5.(3)圖5.3是按下按鍵S1后,LCD顯示的是溫度上下限初始值,H-代表溫度的上限值50,L-代表溫度的下限值10。5.3(4)如圖 5.4所示:此圖為調整溫度上下限之后的顯示數值,如果四點溫度在60和5之間單片機急不發(fā)出報警命令,只要有任意一點或多點溫度大于上限或低于下限,單片機就會發(fā)出報警命令,蜂鳴器響起,然后做出相關的操作。調試及小節(jié)本文利用Proteus與KEILC51對單片機多點溫度測量系統(tǒng)進行了仿真設計.從本文結果可以看出,利用 Proteus進行單片機系統(tǒng)的仿真設計可以極簡化單片機程序在目標硬件上的調試工作, 大幅度節(jié)省制作電路板的時間, 對于提高產品的開發(fā)效率、降低開發(fā)成本等有重要作用.硬件電路的簡單是以軟件的復雜為代價的, 所以在程序編寫和調試的過程中稍一粗心就會出現錯誤,包括時間延時不夠, 設置參數的類型有誤, 按鍵子程序放置位置不妥等錯誤。 本程序經過反復的調試修改, 雖然能達到預期的基本目標,但是還有很多地方需要完善,如開始仿真時機器會掃描錯誤代碼而使電路報警,報警的同時可以使數碼管閃爍,還可以利用剩余的 I/O口掛接更多的DS18B2等。本課題通過分析對比各種不同的溫度傳感器,選定 DS18B20這種單總線數字溫度傳感器的通信方式比較獨特,軟件編寫要求的比較新穎,特點突出。 用其構建的系統(tǒng)有很多優(yōu)點: 硬件連線簡單, 省去了使用模擬傳感器要進行放大、 A/D轉換等工作, 由于它的級聯功能, 一條總線可掛接多個傳感器測量不同位置的溫度,根據DS18B2睢一的序號識別不同傳感器在各自位置的溫度。需要注意的是 ,在系統(tǒng)安裝及工作之前應將主機逐個與 DS1820掛接,以讀出其序列號。另外,由于DS1820單線通信功能是分時完成的,遵循嚴格的時隙概念,因此,系統(tǒng)對DS1820和各種操作必須按協(xié)議進行,即:初始化DS18B20(發(fā)復位脈沖)一發(fā)RO—能命令一發(fā)存儲器操作命令一處理數據?,F場溫度直接以“一線總線”的數字方式傳輸,每一個自帶地址,大大減少了系統(tǒng)的電纜數,提高了系統(tǒng)的穩(wěn)定性和抗干擾性。通過調試成型系統(tǒng)發(fā)現了DS18B2除了上述優(yōu)點外,還有一些缺點,如:簡單的硬件連接的代價是復雜的軟件時序, DS18B2施測量溫度的時候,靈敏度不夠高,溫度快速變化時無法迅速顯示出其變化。通過一系列的實驗發(fā)現:由DS18B2峋建的測溫小系統(tǒng)適用于環(huán)境溫度監(jiān)控,對溫度小變化較敏感;不適合應用于要時性強、溫度跨度大的測溫方本次畢業(yè)設計是在為相老師的細心認真的指導下完成的,不論在選題、資料搜集還是在論文寫作方面,老師都給予了我很大的幫助。老師治學嚴謹、一絲不茍,對學生既嚴格要求,又可耐心指導、循循善誘,在繁忙的工作之余還經常關心我的論文進行情況,并且對我在設計中遇到的問題耐心指導,巧妙地激發(fā)我的求知欲來促使我對問題進行更深入的研究,使我的獨立探索解決問題的能力有了很大的提高,老師用心良苦,讓我深深體會到為人師表的偉大與無私。在本次畢業(yè)設計中,我還得到了多位同學和老師的幫助,對我成功完成本次設計帶來了很大的幫助。在次論文完成之即,請接受我真誠的感!衷心的感在百忙之中評閱論文和參加答辯的各位專家、教授!參考文獻新榮.基于單片機的多路溫度監(jiān)測系統(tǒng)設計 [J].工業(yè)控制計算機 ,2010年,23(7):95-98.周梅,廖承虎,愛祥.基于AT89C51的多路溫度檢測報警系統(tǒng)設計 [J].電子測量技術 ,2008,31(9):140-142.基于單片機的多點溫度檢測系統(tǒng) ..xuehi./docs/38504.html.包敬海.基于DS18B20的多點體溫檢測系統(tǒng)的研究 [J].自動化與儀表 ,2010年.2,20-22.[5]周秀明,雋,春龍.基于DS18B20的單片機溫度檢測與調節(jié)系統(tǒng)設計實驗室科學,現代電子技術 ,第14卷,第1期,2011年2月,第34卷,第9期.奚建榮.基于51單片機的多點溫度控制系統(tǒng)設計 .現代電子技術 ,2009年第2期,第289期程真.理工大學機控學院 .商場現代化 ,2007年4月(下旬刊)總第 501期.[8]黃小波.基于AT89S52^片機與DB18B20勺溫度監(jiān)控系統(tǒng)[J].單片機開發(fā)與應用,2008年,24(10):119-120.晁陽,爭剛,熊剛.基于單片機的溫度控制系統(tǒng)的設計 ,凌職業(yè)技術學院學報,第10卷,第1期,2011年3月.[10]海平.基于單片機和DS18B20的分布式多點溫度檢測系統(tǒng)的設計[J].自動化技術與應用 ,2008年,11:90-93.[11]杜珺.基于單片機控制的溫度監(jiān)測系統(tǒng) ,機械管理開發(fā) ,第2期(總第120期),2011年4月.[12]冶,袁永超,羅平.基于DB18B20的單片機溫度測量系統(tǒng) [J].農機化研究,2007年(10):160-164.董慧敏,朱智民.多點溫度檢測系統(tǒng)電路設計 .職業(yè)技術學院學報 ,第6卷,第3期,2007年7月.[14]玉潔.DS18B20溫度測量電路的設計與仿真[J].數字技術及應用,2011年(04):156-157.[15]紅剛,方佳,王強,錢雙艷.基于80C51的八路溫度巡回檢測系統(tǒng)設計.熱帶農業(yè)工程,2010年2月.第34卷,第1期.開生,郭國法.MS-C51單片機溫度控制系統(tǒng)的設計 [J].微計算機信息 ,2005年21(7):68-70.奚建榮.基于51單片機的多點溫度控制系統(tǒng)設計 [J].現代電子技術 ,2009年2月(289):186-1881原理圖2源代碼(一)主程序代碼#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDP0voiddeouncer(void);voiddelay10ms(int);voidpulse(int,int,int);voidalarm(void);externvoidinit_lcd(void);〃 初始化液晶屏,在文件 1602DRV.C中externvoiddisp_str(ucharx,uchary,uchar*p);// 在x行、y列顯示字符串 pexternvoidgettemp(inttemp[]);// 巡回檢測 4個傳感器的溫度值送數組 tempexternvoidreadid(uchar*id); //讀取傳感器的序列號charterm_H=50,term_L=10;//報

溫馨提示

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

評論

0/150

提交評論