高精度多路溫度測量儀畢業(yè)設(shè)計說明書_第1頁
高精度多路溫度測量儀畢業(yè)設(shè)計說明書_第2頁
高精度多路溫度測量儀畢業(yè)設(shè)計說明書_第3頁
高精度多路溫度測量儀畢業(yè)設(shè)計說明書_第4頁
高精度多路溫度測量儀畢業(yè)設(shè)計說明書_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  1 高精度多路溫度測量儀  摘要: 本文采用 AT89C51 單片機和溫度傳感器 DS18B20 從硬件 和軟件兩方面進行設(shè)計,具有高精度穩(wěn)定的特點。  關(guān)鍵詞: DS18B20;溫度傳感器;單片機  1 引言  隨著 “ 信息時代 ” 的到來,作為獲取信息的手段 傳感器技術(shù)得到了顯著的進步,其應(yīng)用領(lǐng)域越來越廣泛,對其要求越來越高,需求越來越迫切。傳感器技術(shù)已成為衡量一個國家科學(xué)技術(shù)發(fā)展水平的重要標(biāo)志之一。因此,了解并掌握傳感器的基本結(jié)構(gòu)、工作原理及特性是非常重要的。  為了提高對傳感器的認識和了解,尤其是對溫度傳感器的深入研究以及其用法 與用途,基于實用、廣泛和典型的原則設(shè)計了本系統(tǒng)。本文利用單片機結(jié)合傳感器技術(shù)而開發(fā)設(shè)計了紅外抄表系統(tǒng)。文中把傳感器理論與單片機實際應(yīng)用有機結(jié)合,詳細地講述了利用溫度傳感器 DS18B20 測量環(huán)境溫度,以及實現(xiàn)紅外數(shù)據(jù)傳輸?shù)倪^程。  2 方案論證  2.1 方案一:  溫度檢測可以使用低溫?zé)崤蓟蜚K電阻,數(shù)據(jù)采集部分則使用帶有 A/D 通道的單片機??紤]到一般的 A/D 輸入通道都只能接受大信號,所以還要設(shè)計相應(yīng)的放大電路。而模擬信號在長距離傳輸過程中,抗電磁干擾是令人傷腦筋的問題。此方案的軟件簡單,但硬件復(fù)雜,且檢測點數(shù)追加時 ,各敏感元件參數(shù)的不一致性,都將會導(dǎo)致誤差的產(chǎn)生,難以完全清除,而且成本會有較大增長幅度。  2.2 方案二:  使用單片機和數(shù)字式單總線溫度傳感器構(gòu)成。其具有下列特點:具有高的測量精度和分辨率,測量范圍大;抗干擾能力強,穩(wěn)定性好;信號易于處理、傳送和自動控制;便于動態(tài)及多路測量,讀數(shù)直觀;安裝方便,維護簡單,工作可靠性高。單總線溫度傳感器可以采用 DALLAS 公司生產(chǎn)的 DS18B20 系列,這類溫度傳感器直接輸出數(shù)字信號,且多路溫度傳感器可以掛在 1 條總線上,共同占用單片機的 1 個 I/O 口即可實現(xiàn)。在提升單片 機 I/O 口驅(qū)動能力的前提下,理論上可以任意擴充檢測的溫度點數(shù)。  圖 1   高精度多路溫度測量系統(tǒng)方案  比較兩個方案后可以發(fā)現(xiàn),方案二更適合于用作本系統(tǒng)的實施方案,盡管方案二 也需要 A/D,但考慮到系統(tǒng)擴充等因素,單片機可以選用 AT89C51。  3 各電路設(shè)計和論證  3.1 傳感器 電路設(shè)計和論證  3.1.1 如 所選用 電路(器件)結(jié)構(gòu)  AT89C51 按鍵復(fù)位  晶振電路  DS18B20 1602LCD 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  2 在傳統(tǒng)的模擬信號遠距離溫度測量系統(tǒng)中,需要很好的解決引線誤差補償問題、多點測量切換誤差問題和放大電路零點漂移誤差問題等技術(shù) 問題,才能夠達到較高的測量精度。另外一般監(jiān)控現(xiàn)場的電磁環(huán)境都非常惡劣,各種干擾信號較強,模擬溫度信號容易受到干擾而產(chǎn)生測量誤差,影響測量精度。因此,在溫度測量系統(tǒng)中,采用抗干擾能力強的新型數(shù)字溫度傳感器是解決這些問題的最有效方案,新型數(shù)字溫度傳感器DS18B20 具有體積更小、精度更高、適用電壓更寬、采用一線總線、可組網(wǎng)等優(yōu)點,在實際應(yīng)用中取得了良好的測溫效果。  圖 2   溫度傳感器 DS18B20 引腳圖  DS18B20 在內(nèi)部以時鐘周期個數(shù)計數(shù)來測量溫度,并且提供 0.5 的分辨率。溫度讀數(shù)以 16 位、符號擴 展的二進制補碼讀數(shù)形式提供。需要注意的是在 DS18B20 中溫度以 0.5 LSB(最低有效位 )形式表示時,產(chǎn)生以下 9 位格式:  DS18B20 支持 “ 一線總線 ” 接口,測量溫度范圍為  -55 +125 ,在 -50 +110范圍內(nèi) ,精度為 0.5 ?,F(xiàn)場溫度直接以 “ 一線總線 ” 的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境 的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。  DS18B20 內(nèi)部結(jié)構(gòu)  ( 1) DS18B20 的內(nèi)部結(jié)構(gòu)如 圖 3。  圖 3 DS18B20 內(nèi)部結(jié)構(gòu)圖  DS18B20 有 4 個主要的數(shù)據(jù)部件:    64 位激光 ROM。 64 位激光 ROM 從高位到低位依次為 8 位 CRC、 48 位序列號和 8位家族代碼 (28H)組成。    溫度靈敏元件。    非易失性溫度報警觸發(fā)器 TH 和 TL??赏ㄟ^軟件寫入用戶報警上下限值。    配置寄存器。配置寄存器為高速暫存存儲器中的第五 個字節(jié)。 DS18B20 在 0 工作時無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  3 按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值 。  美國 Dallas 半導(dǎo)體公司的數(shù)字化溫度傳感器 DS18B20 是世界上第一片支持  "一線總線 "接口的溫度傳感器 , 在其內(nèi)部使用了在板( ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。現(xiàn)在,新一代的DS18B20 體積更小、更經(jīng)濟、更靈活。使你可以充分發(fā)揮 “一線總線 ”的優(yōu)點。  3.1.2 DS18B20 的主要特性   ( 1)適應(yīng)電壓范圍更寬,電壓范圍: 3.0 5.5V,在寄生電源方式下可由數(shù)據(jù)線供電   ( 2)獨特的單線接口方式, DS18B20 在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與 DS18B20 的雙向通訊   ( 3) DS18B20 支持多點組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫   ( 4) DS18B20 在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)   ( 5)溫范圍 55 125 ,在 -10 +85 時精度為 0.5   ( 6) 可編程的分辨率為 9 12 位,對應(yīng)的可分辨溫度分別為 0.5 、 0.25 、 0.125和 0.0625 ,可實現(xiàn)高精度測溫   ( 7)在 9 位分辨率時最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字, 12 位分辨率時最多在750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快   ( 8)測量結(jié)果直接輸出數(shù)字溫度信號,以 "一線總線 "串行傳送給 CPU,同時可傳送 CRC 校驗碼,具有極強的抗干擾糾錯能力   ( 9)負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。  3.1.3 DS18B20 需要注意的問題。  DS18B20 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接 方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題 :  ( 1)  較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于 DS18B20 與微處理器間采用串行數(shù)據(jù)傳送,因此,在對 DS18B20 進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用 PL/M、 C 等高級語言進行系統(tǒng)程序設(shè)計時,對DS18B20 操作部分最好采用匯編語言實現(xiàn) 。  ( 2) 在 DS18B20 的有關(guān)資料中均未提及單總線上所掛 DS18B20 數(shù)量問題,容易使人 誤認為可以掛任意多個 DS18B20,在實際應(yīng)用中并非如此。當(dāng)單總線上所掛DS18B20 超過 8 個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。  ( 3)  連接 DS18B20 的總線電纜是有長度限制的。試驗中,當(dāng)采用普通信號電纜傳輸長度超過 50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達 150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用 DS18B20 進行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。  ( 4) 在 DS18B20 測溫程序設(shè)計中,向 DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待 DS18B20 的返回信號,一旦某個 DS18B20 接觸不好或斷線,當(dāng)程序讀該 DS18B20時,將沒有返回信號,程序進入死循環(huán)。這一點在進行 DS18B20 硬件連接和軟件設(shè)計時也要給予一定的重視。  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  4 測溫電纜線建議采用屏蔽 4 芯雙絞線,其中一對線接地線與信號線,另一組接 VCC和地線,屏蔽層在源端單點接地。  3.1.4 定義的時序  ( 1) DS18B20 的初始化時序  圖  4  DS18B20 的初始化時序圖  ( 2) DS18B20 的讀寫時序  圖 5 DS18B20 的 讀時序和寫時序  3.2 單片機  3.2.1 選用低功耗單片機  便攜式智能設(shè)備體積小,重量輕,從電路的角度看,自然要求設(shè)備電路簡單,功耗低,功能滿足要求。為了實現(xiàn)智能化,在設(shè)計電路方案時,一般都會使用單片微型計算機,簡稱單片機。單片機品種多,功能強,可靠性高,可以滿足智能設(shè)備的多種需要?,F(xiàn)在單片機越來越廣泛地采用 HCMOS 工藝,使功耗更是大幅度下降,應(yīng)用較多的低功耗單片機有: Intel 公司的 80C31/80C51/87C51、 80C196; ATMEL 公司的 AT89Lv5X 系列 ;Microchip 公司的 PIC 系列等, TI 公司的 MSP430 系列。其中有些單片機的功耗非常低,例如 ATMEL 公司的 AT89Lv5X 系列單片機。  ATMEL 公司的 AT89Lv5X 系列單片機功耗超低,是一種 8 位的 RISC 混合信號處無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  5 理器,該單片機中斷源較多,并且可以任意嵌套,使用起來靈活方便。當(dāng)系統(tǒng)處于省電的備用狀態(tài)時,用中斷請求將它喚醒只需要 6us 的時間。 AT89Lv5X 系列單片機采用的是 1.8 3.6V 的電源電壓。 在 1MHz 的時鐘條件下運行時,芯片的耗電電流會在 200400uA 左右,時鐘關(guān)斷模式下最低功耗只有 0.1w。由于系統(tǒng)運行時打開的功能模塊不同,即采用不同的工作模式,芯片的功耗有著顯著的不同。在系統(tǒng)中共有一種活動模式 (AM)和五種低功耗模式 (LPM0 LPM4)。在等待方式下,耗電為 0.7w,在節(jié)電方式下,最低可達 0.1w。可見 MSP430 系列單片機功耗特別小,是低功耗微處理器的典型。  降低功耗的軟件措施  在低功耗單片機系統(tǒng)設(shè)計中,可以通過硬件電路的合理設(shè)計降低系統(tǒng)的功耗,也可以通過軟件優(yōu)化設(shè)計來降低系統(tǒng)的功 耗。而軟件比硬件應(yīng)用起來更加靈活,盡量采用軟件代替硬件可以降低系統(tǒng)功耗。  ( 1)  縮短 CPU 運行時間   盡量采用待機或掉電方式運行  由于在單片機系統(tǒng)中, CPU 的工作時間對系統(tǒng)的功耗影響極大,兩者成正比, CPU工作時間越長,系統(tǒng)功耗越大。所以盡可能地采用待機和掉電運行方式,盡量縮短 CPU的運行時間,是低功耗單片機系統(tǒng)中軟件設(shè)計的關(guān)鍵部分。智能便攜式儀表一般用于對信號進行計數(shù)或定時測量,待機時間一般比較長,應(yīng)該使單片機在不需要工作時,進入待機或掉電狀態(tài),需要工作時可以通過中斷方式喚醒。   盡量采用定時中斷替代軟件延時  在需要獲得延時的時候,因為 CPU 運行時間與系統(tǒng)功耗成正比,所以盡可能不要使用占用 CPU 運行時間的軟件延時,而應(yīng)該合理使用外部中斷或內(nèi)部定時 /計數(shù)中斷。   盡量用靜態(tài)顯示代替動態(tài)顯示  智能便攜式儀表一般在較長的時間內(nèi)顯示同一內(nèi)容,很多 LCD 顯示組件具有數(shù)據(jù)鎖存、譯碼、驅(qū)動和顯示功能,只要組件不掉電,則可以保持顯示。利用組件功能,在顯示內(nèi)容刷新后,運用 LCD 的靜態(tài)顯示,單片機進入待機狀態(tài), CPU 運行時間大大減少,降低了系統(tǒng)功耗。  ( 2) 硬件軟化  智能便攜式儀表一般具有數(shù)據(jù)處理和抗干擾環(huán)節(jié)。數(shù)據(jù)處理一般都會有濾波 器環(huán)節(jié),但是傳統(tǒng)的硬件濾波電路,例如有源濾波電路本身的功耗是很大的,而且即使其不需要工作時也不容易控制其不耗電。所以如果用軟件濾波,通過選用合適的濾波算法,在滿足系統(tǒng)需要的同時,可以達到降低功耗的目的。  ( 3) 軟件優(yōu)化  通過軟件優(yōu)化可以有效地降低系統(tǒng)的功耗。首選合理選用運算速度快的算法,可以簡化程序,減少 CPU 工作時間,降低系統(tǒng)功耗。另外在程序中,每一條指令都會激活微處理器中的某些硬件模塊。所以正確選擇指令可以降低微處理器的功耗。通過 “ 減少跳轉(zhuǎn)的指令重排序 ” 、建立特定處理器架構(gòu)下指令集的功耗信息等方法可以有 效優(yōu)化軟件,降低功率。  3.2.2 選擇低功耗的工作方式  ( 1) 盡量選用高速低頻工作方式低功耗便攜式智能電子系統(tǒng)中幾乎全部采用的是CMOS 器件, CMOS 集成電路靜態(tài)功耗幾乎為零,動態(tài)功耗與電路的邏輯狀態(tài)轉(zhuǎn)換時間成正比,與邏輯狀態(tài)轉(zhuǎn)換頻率成正比。所以在滿足運算速度要求的前提下,盡可能的降低時鐘頻率,以降低功耗。  ( 2) 充分利用 “ 空閑 ” 、 “ 休眠 ” 模式在低功耗智能便攜式系統(tǒng)中,應(yīng)該重視電源管理技術(shù),可以通過軟件和硬件的合理使用,使系統(tǒng)功能模塊處于空閑或休眠模式,應(yīng)無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  6 該充分利用系統(tǒng)的這兩種工作模式,可以有效降低功耗。  在空閑模式下, CPU 不需要處于活動狀態(tài),而外部設(shè)備需要處于活動狀態(tài)的一種低功耗模式,例如 LCD 靜態(tài)顯示就屬于這種情況??臻e模式可由復(fù)位或一個中斷請求來結(jié)束。  在休眠模式下,微處理器中的大多數(shù)外部設(shè)備和模塊處于掉電狀態(tài),這是一種比空閑模式下功耗更低的工作模式。微處理器一般提供多種不同水平的節(jié)能的時鐘休眠模式,可以通過切斷那些不處于使用狀態(tài)的硬件設(shè)備的電力供應(yīng),系統(tǒng)功耗有效降低。  3.3 電源 器件(電路)如何連接  整流電路將交流電壓變成單向脈動的直流電壓。濾波電路用來濾除整流后單向脈動電壓中的交流成份,合之成為 平滑的直流電壓。  常用的整流電路有全波整流電路、半波整流電路、橋式整流電路及倍壓整流電路。小功率直流電源因功率比較小,通常采用單相交流供電。由于橋式整流電路克服了半波整流的缺點,在橋式整流電路中,由于每兩只二極管只導(dǎo)通半個周期,故流過每個二極管的平均電流僅為負載電流的一半,與半波整流電路相比較,其輸出電壓提高,脈動成分減少。  整流電路將交流電變?yōu)槊}動直流電,但其中含有大量的交流成分(稱為紋波電壓)。為了獲得平滑的直流電壓,應(yīng)在整流電路的后面加接濾波電路,以濾去交流成分。濾波電路常見的有電容濾波電路、電感濾波 電路及 型濾波電路。本設(shè)計采用電容濾波電路。電容濾波電路主要利用電容兩端電壓不能突變的特性,使負載電壓波形平滑,故電容應(yīng)與負載并聯(lián)。橋式整流電路帶電阻負載時的輸出直流電壓 U0=0.9V, 接上電容濾波后,空載時的輸出直流電壓 U0=UC=U2。所以,接上負載時的橋式整流電容濾波電路的輸出電壓介于上述兩者之間,其大小與放電時間常數(shù) RLC 有關(guān), RLC 越大, U0 越大。  電源設(shè)計是電路設(shè)計很重要關(guān)節(jié)。它的穩(wěn)定與否涉及到電路是否能穩(wěn)定工作。按要求需要一個 +5V電壓,一個 +12V左右可調(diào)電壓。于是采用可調(diào)壓芯片 LM317, 它是穩(wěn)壓芯片。 LM317是三端穩(wěn)壓集成電路,最大輸出電流為 2.2A,輸出電壓范圍為 1.25V 37V。它具有輸出電壓可變、內(nèi)藏保護功能、體積小、性價比高、工作穩(wěn)定可靠等特點。用它制作輸出電壓可變穩(wěn)壓電源,調(diào)節(jié)可變電阻 R2,便可從 LM317輸出端獲得 U0(可變輸出電壓 )。  從電路中可以看出, LM317的輸出電壓 (也就是穩(wěn)壓電源的輸出電壓 )U0為兩個電壓之和,也就是 R1兩端電壓與 R2兩端電壓之和。而 IR2實際上是兩路電流之和,一路是經(jīng)R1流向 R2的電流 IRI,其大小為 URI/Rl。因 URI為恒定電壓 1.25V, Rl是一個固定電阻,小于 240歐姆。所以 IRl是一個恒定的電流。另一路是 LM317調(diào)整端流出的電流 ID, ID的平均值是 50 A左右,最大值一般不超過 100 A。而且在 LM317穩(wěn)定工作時, ID的值基本上是一個恒定的值。調(diào)節(jié) R2阻值即可調(diào)節(jié) LM317輸出電壓 U0。  既然 ID和 IRl對調(diào)節(jié)輸出電壓 U0都起到了一定作用,并且 IR1是由 R1提供, IRI大小也沒有任何限制, LM317輸出電壓服從 1.25+IDR2=U0關(guān)系。  可調(diào)穩(wěn)壓電路原理圖如圖 6所示。  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  7 圖 6 穩(wěn)壓電路圖  3.4 顯示 電路設(shè)計和論證  選用低功耗的液晶顯示器 LCD(LiquidCrystaiDispiay)作為顯示器件,該顯示器的優(yōu)點是工作電壓低、微功耗、使用方便 (體積小、外形薄,平板式顯示 ),是便攜式智能設(shè)備顯示器件的首選。如果設(shè)備只需要顯示數(shù)碼,可以選用數(shù)碼顯示型 ; 如要顯示漢字和復(fù)雜字符,可以選用點陣顯示型。但是液晶顯示器也有缺點 : 響應(yīng)時間和余輝時間較長,響應(yīng)速度較慢 ; 液晶顯示器在黑暗環(huán)境中不能顯 示,因為它本身不發(fā)光, 需采用輔助光源 ; 液晶顯示器的工作溫度 范圍比較窄,一般為 -10到 +60。所以如果工作環(huán)境和條件允許,便攜式低功耗系統(tǒng)的可以選用液晶顯示器 LCD 作為顯示器件。  3.5 鍵盤 電路工作原理  鍵盤不僅在目前依然是智能儀器的主要輸入設(shè)備,而且很長一個時期也將在輸設(shè)備中占據(jù)主導(dǎo)地位。在本系統(tǒng)中鍵盤也屬于比較重要的一個部分。  鍵盤按鍵是由一組按鍵開關(guān)組成。按鍵的閉合表現(xiàn)為其機械接觸點上的合斷,反應(yīng)在電壓上表現(xiàn)為高電平和低電平的變化。  鍵盤通??梢苑譃榫€性鍵盤和矩陣式鍵盤。線性鍵盤也稱為獨立式鍵盤,指的是直接用 I/O口線構(gòu)成的單個按鍵電路。每根 I/O線上按 鍵的工作狀態(tài)不會影響其它 I/O口線的工作狀態(tài)。它適用于按鍵比較少的場合。矩陣式鍵盤也稱為行列式鍵盤,指的是按鍵設(shè)置在行列式的交點上,行列線分別連接到按鍵開關(guān)的兩端。要組成 M行 N列的鍵盤,需要的 I/O口線的數(shù)目為 M+N,允許的最大的按鍵數(shù)是 M N。矩陣鍵盤油可以分為非編碼鍵盤和編碼鍵盤兩種。非編碼鍵盤主要用軟件的方法來識別和譯碼。編碼鍵盤主要由硬件來實現(xiàn)鍵的掃描和識別。  根據(jù)系統(tǒng)的要求,采用矩陣鍵盤中的編碼鍵盤。利用行列掃描法來確定按下鍵所在的行列位置。所謂行列掃描法是指,把鍵盤按鍵排列成 M 行 N 列的 M N 行列 點陣,把行、列線分別連接到兩個并行接口雙向傳送的連接線上,點陣上的鍵一旦被按動,按鍵所在的行列點陣信號就被認為已接通。按鍵所排列成的矩陣,需要用硬件或軟件的方法輪轉(zhuǎn)順序地對其行、列分別進行掃描,以查詢和確認是否有鍵按動。如有鍵按動,鍵盤就會向主機發(fā)送被按鍵所在的行列點陣的位置編碼,稱為鍵掃描碼。單片機通過周期性掃描行、列線,讀回掃描信號結(jié)果,判斷是否有鍵按下,并計算按鍵的位置以獲得掃描碼。  按鍵具有“斷開”和“閉合”兩種狀態(tài),通過接口電路對應(yīng)于 0 和 1 兩個邏輯值。V i n2ADJ1+ V ou t3L M 31 7C31 0u FD14 00 1D24 00 1R12 00R25 . 1KGNDC10 . 1u FC21 00 0u FV o utV i n無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  8 與開關(guān)的不同之處在于,按鍵的閉合是暫態(tài)的,當(dāng)操 作者停止按壓時,按鍵即恢復(fù)到斷開狀態(tài),因此按鍵適用于連續(xù)的輸入操作。但按鍵不具備像開關(guān)那樣的輸入狀態(tài)的保持功能,因此按鍵通常與輸出顯示器配合,利用顯示輸出對按鍵操作給予反饋。另外,開關(guān)是各種狀態(tài)設(shè)置好后再輸入的,而按鍵則是在操作中輸入的,因此, 按鍵 需要解決抖動等問題。  鍵盤是一組分別代表數(shù)字和有關(guān)命令的按鍵的集合。由于鍵盤是由按鍵構(gòu)成的,所以也存在去抖動等按鍵的共性問題。  鍵盤與微處理器的接口包括硬件與軟件兩部分。硬件是指鍵盤的組織,即鍵盤結(jié)構(gòu)及其與主機的連接方式。軟件是指對按鍵操作的安全性、可靠性、鍵的識 別與分析等,稱為鍵盤管理程序。  ( 1) 按鍵的去抖動  按鍵從最初按下到可靠接觸要經(jīng)過數(shù)毫秒的抖動過程,按鍵松開時也存在同樣的問題。抖動可能導(dǎo)致計算機將一次按鍵操作誤判為多次操作。因此按鍵操作必須進行去抖動處理,去抖動通常有硬件和軟件兩種方法。  硬件去抖動可以采用 RS 觸發(fā)器或單穩(wěn)態(tài)電路。利用 RS 觸發(fā)器的互鎖功能去抖動,可以得到理想的按鍵輸出波形 ; 單穩(wěn)電路結(jié)構(gòu)簡單,去抖動效果也好。但無論是 RS 觸發(fā)器還是單穩(wěn)電路都需要一個鍵對應(yīng)一套硬件電路,故一般只用于按鍵數(shù)目較少的場合。  軟件延時去抖動是在 CPU 首次檢測到按鍵松 下或松開信息時,延時一段時間后,再次判斷案件的狀態(tài),讀取這一次的信息作為按鍵的動作。軟件去抖動不用額外的硬件支持,軟件也不復(fù)雜,因此在智能化儀表中被廣泛使用。  ( 2) 鍵盤掃描的處理  有以下兩項任務(wù) :   識鍵 : 判斷是否有鍵按下,若有,則進行處理 ;若無,則等待或轉(zhuǎn)作別 的工作。   譯鍵 : 識別出哪些有效的鍵被按下,并求出被按下鍵的特征碼 (值 )或鍵值。  ( 3) 鍵值分析及執(zhí)行  根據(jù)鍵值,找出對應(yīng)處理程序的入口并執(zhí)行之。  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  9 4. 軟件設(shè)計  4.1 程序流程  4.1.1 系統(tǒng)主程序流程圖  圖 7 主程序流程圖  1602A 初始化  啟動 DS18B20 采集溫度 2 個  采集到的溫度通過單總線  傳遞給 89C51 89C51 對采集的 2 點溫度  按照溫度補償算法進行處理得到最終溫度  1602A 顯示最終溫度  開始  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  10 4.1.2各子程序流程圖  圖 8 溫度測量流程圖  初始化 DS18B20 發(fā)跳過 ROM 命令  發(fā)溫度轉(zhuǎn)化命令  等待溫度轉(zhuǎn)換  發(fā)跳過 ROM 命令  發(fā)讀存儲器命令  讀 DS18B20 溫度  結(jié)束  開始  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  11 圖 9 1602 液晶驅(qū)動程序流程圖  4.2 程序  4.2.1主程序  #include sbit DQ=P20; sbit DQ1=P21; 1602 初始化  延時 5ms 顯示清屏  延時 5ms 顯示光標(biāo)移動設(shè)置  延時 5ms 顯示開及光標(biāo)設(shè)置  顯示位置設(shè)置  延時  顯示溫度各位數(shù)值  開始  結(jié)束  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  12 sbit RS=P25; sbit RW=P26; sbit LCDEN=P27; #define jump_ROM 0xCC /jump the ROM command #define start 0x44  /start the convert command #define read_EEROM 0xBE /read the EEROM command #define uchar unsigned char #define uint unsigned int uchar TMPH;   /store the tempeature uchar TMPL; /LCD1602 function void lcd_delay(uint x) uint a,b; for(a=x;a>0;a-) for(b=10;b>0;b-); /write command to LCD void lcd_write_com(uchar com) P1=com; RS=0; RW=0; LCDEN=0; lcd_delay(20); LCDEN=1; lcd_delay(20); LCDEN=0; /write data to LCD void lcd_write_data(uchar date)  P1=date; RW=0; RS=1; LCDEN=0; lcd_delay(10); LCDEN=1; 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  13 lcd_delay(10); LCDEN=0; /lcd init void lcd_init() lcd_write_com(0x38); /8 bit data,double line lcd_delay(20); lcd_write_com(0x0c); /display on lcd_delay(20); lcd_write_com(0x06);  lcd_delay(20); lcd_write_com(0x01);  lcd_delay(20); /function: delay /input parament  N /delay time: (16N+24)uS /fosc=11.0582MHZ void delay(unsigned int N) while(N-); /function: Reset /return parament: receive_ready uchar Reset(void) uchar receive_ready; DQ=0; delay(80); DQ=1; delay(3); receive_ready=DQ; delay(25); return(receive_ready); /*ds18b20 讀一個字節(jié) */   unsigned char read_byte(void) 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  14 uchar i=0; uchar dat = 0; for (i=8;i>0;i-) DQ = 0; / 給脈沖信號  dat>>=1; DQ = 1; / 給脈沖信號  if(DQ) dat|=0x80; delay(4);   return(dat); /*ds18b20 寫一個字節(jié) */   void write_byte(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; /function: Reset1 /return parament: receive_ready uchar Reset1(void) uchar receive_ready; DQ1=0; delay(80); DQ1=1; delay(3); receive_ready=DQ; delay(25); return(receive_ready); 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  15 /*ds18b20 讀一個字節(jié) */   unsigned char read_byte1(void) uchar i=0; uchar dat = 0; for (i=8;i>0;i-) DQ1 = 0; / 給脈沖信號  dat>>=1; DQ1 = 1; / 給脈沖信號  if(DQ1) dat|=0x80; delay(4);   return(dat); /*ds18b20 寫一個字節(jié) */   void write_byte1(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ1 = 0; DQ1 = dat&0x01; delay(5); DQ1 = 1; dat>>=1; /funtion:main void main() uchar temp_value,temp_value1,tmp; lcd_init(); /First line of LCD1602 display "T1:   T2: " lcd_write_com(0x81); lcd_write_data(0x54);  lcd_write_com(0x82); lcd_write_data(0x31);  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  16 lcd_write_com(0x83); lcd_write_data(0x3a); lcd_write_com(0x88); lcd_write_data(0x54); lcd_write_com(0x89); lcd_write_data(0x32); lcd_write_com(0x8a); lcd_write_data(0x3a); /second line of LCD1602 display:"set: / end of display init while(1)  /first DS18B20 Reset(); write_byte(jump_ROM); write_byte(start); Reset(); delay(100); write_byte(jump_ROM); write_byte(read_EEROM); delay(100); TMPL=read_byte(); TMPH=read_byte(); temp_value=TMPH>4;     temp_value1=TMPL&0x0f;    tmp=(temp_value/0x0a)|0x30; lcd_write_com(0x84); lcd_write_data(tmp); tmp=(temp_value%0x0a)|0x30; lcd_write_com(0x85); lcd_write_data(tmp); lcd_write_com(0x86); lcd_write_data(0xdf); /sencond DS18B20   Reset1(); write_byte1(jump_ROM); write_byte1(start); Reset1(); delay(100); 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  17 write_byte1(jump_ROM); write_byte1(read_EEROM); delay(100); TMPL=read_byte1(); TMPH=read_byte1(); temp_value=TMPH>4;     temp_value1=TMPL&0x0f;    tmp=(temp_value/0x0a)|0x30; lcd_write_com(0x8b); lcd_write_data(tmp); tmp=(temp_value%0x0a)|0x30; lcd_write_com(0x8c); lcd_write_data(tmp); lcd_write_com(0x8d); lcd_write_data(0xdf); 4.2.2 各子程序  LCD 顯示子程序  /LCD1602 function void lcd_delay(uint x) uint a,b; for(a=x;a>0;a-) for(b=10;b>0;b-); /write command to LCD void lcd_write_com(uchar com) P1=com; RS=0; RW=0; LCDEN=0; lcd_delay(20); LCDEN=1; lcd_delay(20); 無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  18 LCDEN=0; /write data to LCD void lcd_write_data(uchar date)  P1=date; RW=0; RS=1; LCDEN=0; lcd_delay(10); LCDEN=1; lcd_delay(10); LCDEN=0; /lcd init void lcd_init() lcd_write_com(0x38); /8 bit data,double line lcd_delay(20); lcd_write_com(0x0c); /display on lcd_delay(20); lcd_write_com(0x06);  lcd_delay(20); lcd_write_com(0x01);  lcd_delay(20); /function: delay /input parament  N /delay time: (16N+24)uS /fosc=11.0582MHZ 5軟硬件系統(tǒng)的調(diào)試  5.1 溫度補償  對于溫度這種常用的測試物理量,在測試的過程中會有非線性的缺點發(fā)生。所以我們應(yīng)該對溫度進行非線性的補償。所以我們在使用 DS18B20 進行溫度測量的時候,要進行如下操作:  用一個高溫度系數(shù)的振蕩器 確定一個門周期,內(nèi)部計數(shù)器在這個門周期內(nèi)對一個低溫度系數(shù)的振蕩器的脈沖進行計數(shù)來得到溫度值。計數(shù)器被預(yù)置到對應(yīng)于 -50的一個值。如果計數(shù)器在門周期結(jié)束前到達 0,則溫度寄存器(同樣被預(yù)置到 -50)的值增加,表明所測溫度大于 -50。同時,計數(shù)器被復(fù)位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的拋物線特性。然后計數(shù)器又開始計數(shù)直到 0,如果門周期仍未結(jié)束,將重復(fù)這一過程。  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  19 斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨力。這是通過改變計數(shù)器對溫度每增加一度 所需計數(shù)的的值來實現(xiàn)的。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數(shù)器的值和每一度的計數(shù)值。 DS18B20 內(nèi)部對此計算的結(jié)果可提供 0.5的分辨力。溫度以 16bit帶符號位擴展的二進制補碼形式讀出,表 1 給出了溫度值和輸出數(shù)據(jù)的關(guān)系。數(shù)據(jù)通過單線接口以串行方式傳輸。 DS18B20測溫范圍 -50 +110,以 0.5遞增。  5.2 初始化  通過單線總線的所有執(zhí)行(處理)都從一個初始化序列開始。初始化序列包括一個由總線控制器發(fā)出的復(fù)位脈沖和跟有其后由從機發(fā)出的存在脈沖。  5.3 存儲器操作命令  ( 1) Write Scratchpad4E 這個命令向 DS1820 的暫存器中寫入數(shù)據(jù),開始位置在地址 2。接下來寫入的兩個字節(jié)將被存到暫存器中的地址位置 2 和 3??梢栽谌魏螘r刻發(fā)出復(fù)位命令來中止寫入。  ( 2) Read ScratchpadBEH 這個命令讀取暫存器的內(nèi)容。讀取將從字節(jié) 0 開始,一直進行下去,直到第 9(字節(jié) 8, CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)出復(fù)位命令來中止讀取。  ( 3) Copy Scratchpad48h 這條命令把暫存器的內(nèi)容拷貝到 DS18B20 的 E2 存儲器里 ,即把溫度報警觸發(fā)字節(jié)存入非易失性存儲器里。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而DS18B20 又正在忙于把暫存器拷貝到 E2 存儲器, DS18B20 就會輸出一個 “ 0” ,如果拷貝結(jié)束的話, DS18B20 則輸出 “ 1” 。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動強上拉并最少保持 10ms。  ( 4) Convert T44h 這條命令啟動一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后 DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而 DS18B20 又忙于做時間轉(zhuǎn)換 的話, DS18B20 將在總線上輸出 “ 0” ,若溫度轉(zhuǎn)換完成,則輸出 “ 1” 。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動強上拉,并保持 500ms。  ( 5) Recall E2 B8h 這條命令把報警觸發(fā)器里的值拷回暫存器。這種拷回操作在 DS18B20 上電時自動執(zhí)行,這樣器件一上電暫存器里馬上就存在有效的數(shù)據(jù)了。若在這條命令發(fā)出之后發(fā)出讀時間隙,器件會輸出溫度轉(zhuǎn)換忙的標(biāo)識: “ 0” =忙, “ 1” =完成。  ( 6) Read Power SupplyB4h 若把這條命令發(fā)給 DS18B20 后發(fā)出讀時間隙,器 件會返回它的電源模式: “ 0” =寄生電源, “ 1” =外部電源。  ( 7)讀 /寫時間隙  DS18B20 的數(shù)據(jù)讀寫是通過時間隙處理位和命令字來確認信息交換。  ( 8)寫時間隙  當(dāng)主機把數(shù)據(jù)線從邏輯高電平拉到邏輯低電平的時候,寫時間隙開始。有兩種寫時間隙:寫 1 時間隙和寫 0 時間隙。所有寫時間隙必須最少持續(xù) 60 s,包括兩個寫周期間至少 1 s 的恢復(fù)時間。  I/O 線電平變低后, DS18B20 在一個 15 s 到 60 s 的窗口內(nèi)對 I/O 線采樣。如果線上是高電平,就是寫 1,如果線上是低電平,就是寫 0 主機要生成一個寫時間隙,必須把數(shù)據(jù)線 拉到低電平然后釋放,在寫時間隙開始后的 15 s內(nèi)允許數(shù)據(jù)線拉到高電平。無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  20 主機要生成一個寫 0 時間隙,必須把數(shù)據(jù)線拉到低電平并保持 60 s。  ( 9)讀時間隙  當(dāng)從 DS18B20 讀取數(shù)據(jù)時,主機生成讀時間隙。當(dāng)主機把數(shù)據(jù)線從高高平拉到低電平時,寫時間隙開始。數(shù)據(jù)線必須保持至少 1 s;從 DS18B20 輸出的數(shù)據(jù)在讀時間隙的下降沿出現(xiàn)后 15 s 內(nèi)有效。因此,主機在讀時間隙開始后必須停止把 I/O 腳驅(qū)動為低電平 15 s,以讀取 I/O 腳狀態(tài)。在讀時間隙的結(jié)尾, I/O 引腳將被外部上拉電阻拉到高電平。所有讀時間隙必須最少 60 s,包括兩個讀周期間至少 1 s 的恢復(fù)時間。  5.4ROM 操作命令  一旦總線控制器探測到一個存在脈沖,它就可以發(fā)出 5 個 ROM 命令中的任一個。所有 ROM 操作命令都 8 位長度。 5 個 ROM 的命令如下:  ( 1) Read ROM33h 這個命令允許總線控制器讀到 DS18B20的 8位系列編碼、唯一的序列號和 8 位 CRC碼。只有在總線上存在單只 DS18B20 的時候才能使用這個命令。如果總上有不止一個從機,當(dāng)所有從機試圖同時傳送信號時就會發(fā)生數(shù)據(jù)沖突(漏極開路連在一起開成相與的效果)。  ( 2) Match ROM55h 匹配 ROM 命令,后跟 64 位 ROM 序列,讓總線控制器在多點總線上定位一只特定的 DS18B20。只有和 64 位 ROM 序列完全匹配的 DS18B20 才能響應(yīng)隨后的存儲器操作命令。所有和 64 位 ROM 序列不匹配的從機都將等待復(fù)位脈沖。這條命令在總線上有單個或多個器件時都可以使用。  ( 3) Skip ROMCCH 這條命令允許總線控制器不用提供 64 位 ROM 編碼就使用存儲器操作命令,在單點總線情況下右以節(jié)省時間。如果總線上不止一個從機,在 Skip ROM 命令之后跟著發(fā)一條讀命令,由于多個從機同時傳送信號,總線上就會發(fā)生數(shù)據(jù)沖突 。           ( 4) Search ROMF0h 當(dāng)一個系統(tǒng)初次啟動時,總線控制器可能并不知道單線總線上有多少器件或它們的64 位 ROM 編碼。搜索 ROM 命令允許總線控制器用排除法識別總線上的所有從機的 64位編碼。  ( 5) Alarm SearchECH 這條命令的流程圖和 Search ROM 相同。然而,只有在最近一次測溫后遇到符合報警條件的情況, DS18B20 才會響應(yīng)這條命令。報警條件定義為溫度高于 TH 或低于 TL。只要 DS18B20 不掉電,報警狀態(tài)將一直保持,直到再一次測得的溫度值達不到報警條件 。  無   錫   職   業(yè)   技   術(shù)   學(xué)   院  畢業(yè)設(shè)計說明書(論文)  21

溫馨提示

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

評論

0/150

提交評論