版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本論文介紹了一種以單片機為主的控制器件,一種以DS18B20為溫度傳感器的新型數(shù)字溫度計。主要包括硬件電路的設(shè)計和系統(tǒng)程序的編寫。硬件電路主要包括主控制器,測溫控制電路和顯示電路等,主控制器采用AT89S51單片機,溫度傳感器采用美國DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20,顯示電路采用8位共陰極LED數(shù)碼管,74HC573
2、為驅(qū)動的動態(tài)掃描顯示。測溫控制電路由傳感器和預(yù)制溫度比較電路組成。系統(tǒng)程序主要包括主程序,測溫子程序和顯示子程序等。DS18B20新型單總線數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的單線數(shù)字溫度傳感器,集溫度測量和A/D轉(zhuǎn)換于一體,直接輸出數(shù)字量,具有接口簡單、精度高、抗干擾能力強、工作穩(wěn)定可靠等特點。</p><p> 由于采用了改進型智能溫度傳感器DS18B20作為檢測元件,與傳統(tǒng)的溫度計相比,本數(shù)字溫度計減少
3、了外部的硬件電路,具有低成本和易使用的點特點。DS18B20溫度計還可以在高溫報警、遠距離多點測溫控制等方面進行應(yīng)用。</p><p> 關(guān)鍵詞:STC89C52,DS18B20,數(shù)碼管,動態(tài)顯示</p><p><b> ABSTRACT</b></p><p> This paper introduces a microcontrol
4、ler based control device, a temperature sensortoDS18B20 for the new digital thermometer. Including hardware design and system procedures for the preparation. Hardware circuit includes a main controller, temperature contr
5、ol circuit and display circuit, the main controller uses STC89C52, DALLAS Semiconductor temperature sensor used by the U.S. company's DS18B20, display circuit with eight common cathode LED digital tube, 74HC573-drive
6、n dynamic scan display. Temp</p><p> As a result of improved temperature sensor DS18B20 as the detection of intelligent components, compared with the traditional thermometer, digital thermometer to reduce t
7、he external hardware circuitry, low cost and easy to use point features. DS18B20 thermometer can also be at a high temperature alarm, remote control multi-point temperature measurement applications in areas such as.</
8、p><p> Keywords: STC89C52, DS18B20, digital control, dynamic display</p><p><b> 目 錄</b></p><p><b> 第1章 前言1</b></p><p> 1.1 設(shè)計目標(biāo)1</p>&
9、lt;p> 1.1.1 前景1</p><p> 1.1.2 實現(xiàn)的可行性1</p><p> 1.2 設(shè)計思路2</p><p> 1.2.1 硬件設(shè)計思路2</p><p> 1.2.2 軟件設(shè)計思路2</p><p> 第2章 方案論證4</p><p>
10、2.1 方案一:使用熱敏電阻4</p><p> 2.2 方案二:采用數(shù)字溫度芯片DS18B204</p><p> 第3章 各電路設(shè)計及論證6</p><p> 3.1 主控制器7</p><p> 3.1.1 方案一:采用PC機實現(xiàn)7</p><p> 3.1.2 方案二:使用單片機7<
11、/p><p> 3.2 顯示電路10</p><p> 3.2.1 方案一:采用七段LED數(shù)碼顯示10</p><p> 3.2.2 方案二:采用SMCI602A液晶顯示模塊芯片10</p><p> 3.3 溫度傳感器的選擇11</p><p> 3.3.1 方案一:采用熱敏電阻11</p>
12、;<p> 3.3.2 方案二:數(shù)字溫度傳感器DS18B2011</p><p> 第4章 軟件設(shè)計18</p><p> 4.1 軟件總體設(shè)計流程18</p><p> 4.2 模塊設(shè)計18</p><p> 4.2.1 讀出溫度流程18</p><p> 4.2.2 溫度處理
13、流程19</p><p> 4.2.3 LED 顯示模塊20</p><p> 4.2.4 整體的溫度處理及顯示流程21</p><p> 4.2 源程序21</p><p> 4.3 軟硬件系統(tǒng)的調(diào)試26</p><p><b> 結(jié) 論31</b></p>
14、<p><b> 參考文獻32</b></p><p><b> 致 謝33</b></p><p><b> 附 錄34</b></p><p><b> 第1章 前言</b></p><p> 隨著科學(xué)技術(shù)日益迅速的發(fā)展
15、,數(shù)字監(jiān)控系統(tǒng)已經(jīng)深入到生活的各個方面。數(shù)字溫度計作為數(shù)字監(jiān)控系統(tǒng)的重要組成部分發(fā)揮著極其重要的作用。它克服了接觸式溫度計對傳感器的耐熱性能要求比較苛刻的缺點,使溫度計無論在使用范圍還是測量精度上都有了長足的進步。 </p><p> 本設(shè)計就是在這種廣闊的應(yīng)用背景下應(yīng)運而生的。下面就本設(shè)計的設(shè)計目標(biāo)和思路進行簡單介紹。 </p><p><b> 1.1 設(shè)計目標(biāo) <
16、/b></p><p> 系統(tǒng)上電復(fù)位并初始化后,主控制器將發(fā)出略讀電可擦除只讀存儲器及溫度轉(zhuǎn)換命令,然后執(zhí)行讀出溫度和溫度處理函數(shù),最后用 4 位 LED 數(shù)碼管顯示溫度值的百位、十位、個位及小數(shù)部分,以十進制方式顯示。 </p><p><b> 1.1.1 前景 </b></p><p> 溫度是工業(yè)中非常關(guān)鍵的一項物理量,在
17、農(nóng)業(yè),現(xiàn)代科學(xué)研究和各種高新技術(shù)的開發(fā)和研究中也是一個非常普遍和常用的測量參數(shù)。 溫度測量的原理主要是:將隨溫度變化而變化的物理參數(shù),如膨脹、電阻、電容、熱電動勢、磁性、頻率、光學(xué)特性等通過溫度傳感器轉(zhuǎn)變成電的或其他信號,傳給處理電路。最后轉(zhuǎn)換成溫度數(shù)值顯示出來。 </p><p> 傳統(tǒng)的溫度測量方法基本上是接觸式的,主要有:熱膨脹式溫度計,電阻式溫度計,熱電偶式溫度計等。 這些接觸式溫度計的主要缺點是對傳感
18、器的耐熱性能要求比較苛刻,所以對應(yīng)的使用溫度范圍比較有限。它們的精度也大大限制了他們的應(yīng)用領(lǐng)域。 此外,由于這些測量方法大都是接觸式的,會污染一些高純度,高腐蝕性的測量對象。目前應(yīng)用的比較廣泛的非接觸溫度測量技術(shù)有紅外非接觸溫度測量技術(shù),單總線數(shù)字式溫度測量技術(shù)等等。此外,激光測量溫度技術(shù),基于彩色三基色的溫度測量技術(shù)也開始成為溫度測量的手段。隨著科學(xué)技術(shù)的進一步發(fā)展,相信更多更先進的溫度測量手段會出現(xiàn)并影響我們的生產(chǎn)、生活和社會生活的
19、方方面面。 </p><p> 1.1.2 實現(xiàn)的可行性 </p><p> 在嵌入式系統(tǒng)設(shè)計中,LED 顯示器是常用的顯示設(shè)備之一,它具有使用方便、價格便宜、電路接口簡單等優(yōu)點,因此,在嵌入式系統(tǒng)中被廣泛使用。 為了實現(xiàn) LED 顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些,考慮到溫度計顯示只有 4 位,且系統(tǒng)沒有其它復(fù)雜的處理任
20、務(wù),所以計劃采用動態(tài)掃描法實現(xiàn) LED 顯示。主控制器計劃采用飛思卡爾公司的 MC9S12DG128 單片機,這種單片機具有足夠的空余硬件資源,以便可以實現(xiàn)其它的擴</p><p> 充功能。數(shù)字溫度計要求用 4 位共陰極 LED 數(shù)碼管顯示溫度值的百位、十位、個位及小數(shù)部分,以十進制方式顯示。 </p><p><b> 1.2 設(shè)計思路 </b></p
21、><p> 主控制器采用飛思卡爾公司的 MC9S12DG128 單片機,這種單片機具有足夠的空余硬件資源,以便可以實現(xiàn)其它的擴充功能。利用溫度傳感器 DS18S20 來實現(xiàn)測溫,它可以實現(xiàn)-55 至+125℃的顯示,本設(shè)計使用 4 位共陰極 LED 顯示,可滿足該范圍內(nèi)溫度的顯示。 </p><p> 1.2.1 硬件設(shè)計思路 </p><p> 硬件設(shè)計是整個系
22、統(tǒng)的基礎(chǔ),要考慮的方方面面很多,除了實現(xiàn)此設(shè)計基本功能以外,主要還要考慮如下幾個因素:①系統(tǒng)穩(wěn)定度;②器件的通用性或易選購性;③ 軟件編程的易實現(xiàn)性;④系統(tǒng)其它功能及性能指標(biāo);因此硬件設(shè)計至關(guān)重要。 主要設(shè)計包括以下三部分: </p><p> 單片機主控模塊:采用 MC9S12DG128,單片機作為整個硬件系統(tǒng)的核心,它既是協(xié)調(diào)整機工作的控制器,又是數(shù)據(jù)處理器。關(guān)于主控芯片的體系結(jié)構(gòu)在第二章會有詳細的介紹。
23、</p><p> 數(shù)字溫度計模塊:采用 DS18S20,DS18S20 是美國 DALLAS 公司推出的一種高性能、低功耗、實現(xiàn)單總線協(xié)議的溫度傳感器,它可以顯示-55 至+125℃范圍內(nèi)的溫度,采用單總線接口與 CPU 進行同步通信,在這個總線系統(tǒng)中,微處理器(主設(shè)備)識別并尋址在總線上的設(shè)備要使用每個設(shè)備的獨一無二的 64 位碼。DS18S20 能夠不依靠額外的電能供應(yīng)就能獨立運行。它的主要特性在第三章有
24、詳細介紹。 </p><p> LED 顯示模塊:在微控制器應(yīng)用系統(tǒng)中,如果需要顯示的內(nèi)容只有數(shù)碼和某些字母,則使用 LED 數(shù)碼管是一種較好的選擇。LED 數(shù)碼管顯示清晰,成本低廉,配置靈活,與微控制器的接口簡單易行。LED 顯示器有動態(tài)掃描和靜態(tài)顯示兩種方式,動態(tài)掃描需要耗費大量的 MCU 時間,且亮度不夠;而靜態(tài)顯示亮度高,MCU 負擔(dān)小,但由于溫度測量精度的要求較高,所以本設(shè)計采用 LED 動態(tài)掃描。
25、</p><p> 1.2.2 軟件設(shè)計思路 </p><p> 程序比較簡單,初始化完成后,調(diào)用讀出溫度子程序,將溫度寄存器中的溫度讀出,然后調(diào)用溫度處理子程序,將溫度數(shù)據(jù)轉(zhuǎn)換成十進制值并送 LED 顯示。主要模塊有讀出溫度模塊、溫度處理模塊和 LED 顯示模塊。 </p><p> 讀出溫度模塊:首先復(fù)位后發(fā)送略讀 ROM 命令,由于本設(shè)計總線上只有一個
26、DS18S20,因而總線控制器不用提供 64 位 ROM 編碼就使用存儲器操作命令。其次發(fā)送讀取超高速中間結(jié)果存儲器命令,用于將超高速中間結(jié)果存儲器中的內(nèi)容讀出。讀出后存放在一個 16位數(shù)組 temp_data[]中,其中將低 8 位放在 temp_data[0]中,高 8 位放在 temp_data[1]中。再次復(fù)位并再發(fā)略讀 ROM 命令,以便讀出下一個溫度值。最后發(fā)送溫度轉(zhuǎn)換命令。 </p><p> 溫
27、度處理模塊:首先判斷讀出的溫度數(shù)據(jù)是正還是負,若為負則取補碼;其次取出temp_data[0]中的bit0位并放入display[0],該部分為溫度值的小數(shù)部分; temp_data[0]中的剩余部分為溫度值的整數(shù)部分,并分別取出百位、十位、個位數(shù)分別放在 display[3]、display[2]和 display[1]中;最后對符號位是否顯示做出處理。 </p><p> LED 顯示模塊:由于 LED 數(shù)
28、碼管有共陽極和共陰極之分,而本設(shè)計采用的是共陰極數(shù)碼管,因此需定義共陰極的十六進制數(shù)據(jù)到段碼的轉(zhuǎn)換表。本模塊使用全局變量</p><p> DispDigMsk 指向下一個要顯示的數(shù)碼;使用 DispSegTbl[DISP_N_DIG]表示與每個要顯示的數(shù)碼相對應(yīng)的段碼;使用 DispSegTblIx 表示指向下一個要顯示數(shù)碼在段碼表中的位置。具體處理步驟如下: </p><p> 1
29、、進行與顯示驅(qū)動相關(guān)的 I/O 引腳初始化 </p><p> 2、中斷顯示處理: </p><p> (1) 清模計數(shù)器中斷標(biāo)志 </p><p> ?。?) 選擇下一個要顯示的數(shù)碼 </p><p> ?。?) 輸出該數(shù)碼的段碼 </p><p> ?。?) 調(diào)整指針。如果在指向下一個段碼時發(fā)現(xiàn)已經(jīng)到了
30、最后一個則返回第一個,</p><p> 否則指針后移并且 DispDigMsk 指向下一個要顯示的數(shù)碼。LED 的動態(tài)掃描功能通過以上步驟的循環(huán)實現(xiàn)。</p><p><b> 第2章 方案論證</b></p><p> 該系統(tǒng)主要由溫度測量和數(shù)據(jù)采集兩部分電路組成,實現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的
31、實現(xiàn)方案。</p><p> 2.1 方案一:使用熱敏電阻</p><p> 由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p> 2.2 方案二:采用數(shù)
32、字溫度芯片DS18B20</p><p> 采用數(shù)字溫度芯片DS18B20 測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89S51構(gòu)成的溫度測量裝置,它直接輸出溫
33、度的數(shù)字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51 單片機控制,軟件編程的自由度大,可通過編程實現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實現(xiàn)簡單,安裝方便。</p><p> 控制工作,還可以與PC 機通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。</p><p> 該系統(tǒng)利用AT8
34、9S51芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報警溫度。該系統(tǒng)擴展性非常強,它可以在設(shè)計中加入時鐘芯片DS1302以獲取時間數(shù)據(jù),在數(shù)據(jù)處理同時顯示時間,并可以利用AT24C16芯片作為存儲器件,以此來對某些時間點的溫度數(shù)據(jù)進行存儲,利用鍵盤來進行調(diào)時和溫度查詢,獲得的數(shù)據(jù)可以通過MAX232芯片與計算機的RS232接口進行串口通信,方便的采集和整理時間溫度數(shù)據(jù)。<
35、;/p><p> 系統(tǒng)框圖如圖1.1所示</p><p> 圖2.1 DS18B20溫度測溫系統(tǒng)框</p><p> 從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現(xiàn)方便、軟件設(shè)計也比較簡單,故本次設(shè)計采用了方案二。</p><p> 第3章 各電路設(shè)計及論證&l
36、t;/p><p> 溫度計電路設(shè)計原理圖如圖3.1所示,控制器使用單片機AT89C2051,溫度計傳感器使用DS18B20,用數(shù)碼管實現(xiàn)溫度顯示。本溫度計大體分三個工作過程。首先,由DS18820溫度傳感器芯片測量當(dāng)前的溫度,并將結(jié)果送入單片機。然后,通過89C205I單片機芯片對送來的測量溫度讀數(shù)進行計算和轉(zhuǎn)換,井將此結(jié)果送入顯示模塊。 由圖2.1可看到,本電路主要由DSl8820溫度傳感器芯片、數(shù)碼管
37、顯示模塊和89C2051單片機芯片組成。其中,DSI8B20溫度傳感器芯片采用“一線制”與單片機相連,它獨立地完成溫度測量以及將溫度測量結(jié)果送到單片機的工作。</p><p> 圖3.1 溫度計電路設(shè)計原理圖</p><p><b> 3.1 主控制器</b></p><p> 3.1.1 方案一:采用PC機實現(xiàn)</p>
38、<p> 此方案采用PC機實現(xiàn)。它可在線編程,可在線仿真的功能,這讓調(diào)試變得方便。且人機交互友好。但是PC機輸出信號不能直接與DS18B20通信。需要通過RS232電平轉(zhuǎn)換兼容,硬件的合成在線調(diào)試,較為繁瑣,很不簡便。而且在一些環(huán)境比較惡劣的場合,PC機的體積大,攜帶安裝不方便,性能不穩(wěn)定,給工程帶來很多麻煩!</p><p> 3.1.2 方案二:使用單片機</p><p>
39、; 使用單片機,對于單片機的選擇,可以考慮使用8031與8051系列,由于8031沒有內(nèi)部RAM,系統(tǒng)又需要大量內(nèi)存存儲數(shù)據(jù),因而不適用。AT89S51 是美國 ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS8 位單片機,片內(nèi)含 4kbytes 的可編程的 Flash 只讀程序存儲器,兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。它集 Flash 程序存儲器既可在線編程(ISP),也可用傳統(tǒng)方法進行編程,所以低價位 AT89S51單片機可為提供
40、許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域,對于簡單的測溫系統(tǒng)已經(jīng)足夠。單片機AT89S51 具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。主要特性如下</p><p> ●與MCS-51 兼容</p><p> ●4K字節(jié)可編程閃爍存儲器</p><p> ●壽命:10
41、00寫/擦循環(huán)</p><p> ●數(shù)據(jù)保留時間:10年</p><p> ●全靜態(tài)工作:0Hz-24Hz</p><p> ●三級程序存儲器鎖定</p><p> ●128*8位內(nèi)部RAM</p><p> ●32可編程I/O線</p><p> ●兩個16位定時器/計數(shù)器<
42、/p><p><b> ●5個中斷源</b></p><p> ●可編程串行通道 </p><p> ●低功耗的閑置和掉電模式</p><p> ●片內(nèi)振蕩器和時鐘電路 </p><p> 89S51 引腳功能介紹</p>
43、;<p> 圖3.2 AT89S51單片機引腳圖</p><p> AT89S51單片機為40引腳雙列直插式封裝。 </p><p> 其引腳排列和邏輯符號如圖3.2所示: </p><p> 各引腳功能簡單介紹如下:</p><p><b> ●VCC:供電電壓</b>
44、;</p><p> ●GND:接地</p><p> ●P0口:P0口為一個8位漏級開路雙向I/O口,每個管腳可吸收8TTL門電流。當(dāng)P1口的管腳寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當(dāng)FLASH進行校驗時,P0輸出原碼,此時P0外部電位必須被拉高。</p>
45、;<p> ●P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p><p> ●P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)
46、P2口被寫“1”時,其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時,P2口的管腳電位被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉的優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>
47、; ●P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入時,由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口:</p><p> P3.0 RXD(串行輸入口)</p><p> ??P3.1 TXD(串行輸出口)<
48、/p><p> ??P3.2 INT0(外部中斷0)</p><p> ??P3.3 INT1(外部中斷1)</p><p> ??P3.4 T0(記時器0外部輸入)</p><p> ??P3.5 T1(記時器1外部輸入)</p><p> ??P3.6 WR (外部數(shù)據(jù)存儲器寫選通)</p>&
49、lt;p> ??P3.7 RD (外部數(shù)據(jù)存儲器讀選通)</p><p> 同時P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> ●RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p> ●ALE / PROG :當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編
50、程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令時ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>
51、; ●PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個機器周期PSEN兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。</p><p> ●EA/VPP:當(dāng)EA保持低電平時,訪問外部ROM;注意加密方式1時,EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時,訪問內(nèi)部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><
52、p> ●XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p> ●XTAL2:來自反向振蕩器的輸出。</p><p> 單片機AT89C2051具有低電壓供電和小體積等特點,兩個端口剛好滿足電路系統(tǒng)的設(shè)計需要,很合適攜手特式產(chǎn)品的使用。主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:初始化、ROM操作指令、存儲器操作指令。必須先啟動DS18B20開始轉(zhuǎn)
53、換,再讀出溫度轉(zhuǎn)換值。</p><p><b> 3.2 顯示電路</b></p><p> 3.2.1 方案一:采用七段LED數(shù)碼顯示</p><p> 采用七段LED數(shù)碼顯示,LED顯示器內(nèi)部由7段發(fā)光二極管組成,因此亦稱之為七段LED顯示器,由于主要用于顯示各種數(shù)字符號,故又稱之為LED數(shù)碼管。每個顯示器還有一個圓點型發(fā)光二極管,用
54、于顯示小數(shù)點。但其編程相對復(fù)雜,可顯示字符比較少。但是本設(shè)計采用此種方案。</p><p> 3.2.2 方案二:采用SMCI602A液晶顯示模塊芯片</p><p> 采用SMCI602A液晶顯示模塊芯片,該芯片可顯示16×2個字符,比以前的七段數(shù)碼管LED顯示器在顯示字符的數(shù)量上要多得多。另外,由于SMCl602芯片編程比較簡單,界面直觀,因此更加易于使用者操作和觀測。S
55、MCl602A芯片的接口信號說明如表2.1所列。</p><p> 表3.1 SMCl602A芯片的接口信號說明</p><p> 3.3 溫度傳感器的選擇</p><p> 3.3.1 方案一:采用熱敏電阻</p><p> 采用熱敏電阻,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測1攝氏度的
56、信號是不適用的。而且在溫度測量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等.但這些芯片輸出的都是模擬信號,必須經(jīng)過A/D轉(zhuǎn)換后才能送給計算機,這樣就使得測溫裝置的結(jié)構(gòu)較復(fù)雜.另外,這種測溫裝置的一根線上只能掛一個傳感器,不能進行多點測量.即使能實現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實現(xiàn)的難度。</p><p> 3.3.2 方案二:數(shù)字溫度傳感器DS18B20</p><
57、p> 由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫度,需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測溫元件。</p><p> 3.3.2.1 DS18B20簡單介紹</p><p> DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種
58、場合、且適用電壓更寬、更經(jīng)濟。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55~+125 攝氏度,可編程為9位~12 位轉(zhuǎn)換精度,測溫分辨率可達0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產(chǎn)生;多個DS18B20可以
59、并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。</p><p> DS18B20 的性能特點如下:</p><p> ●獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS1
60、8B20的雙向通訊</p><p> ●DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫</p><p> ●DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)</p><p> ●適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電</p&g
61、t;<p> ●溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃</p><p><b> ●零待機功耗</b></p><p> ●可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫</p><p> ●在9位分辨率時最多在93
62、.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快</p><p> ●用戶可定義報警設(shè)置</p><p> ●報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件</p><p> ●測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能
63、力</p><p> ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作</p><p> 以上特點使DS18B20非常適用與多點、遠距離溫度檢測系統(tǒng)。</p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 4 所示,D
64、Q 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當(dāng)工作于寄生電源時,此引腳必須接地。其電路圖3.3所示</p><p> 圖3.3 外部封裝形式</p><p> 圖3.4 傳感器引腳圖</p><p> 3.3.2.2 DS18B20使用中的注意事項</p>
65、<p> DS18B20 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題:</p><p> ●DS18B20 從測溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時間,這是必須保證的,不然會出現(xiàn)轉(zhuǎn)換錯誤的現(xiàn)象,使溫度輸出總是顯示85。</p><p> ●在實際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V 左右,若電源電壓過低,會使所
66、測得的溫度精度降低。</p><p> ●較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進行系統(tǒng)程序設(shè)計時,對DS1820操作部分最好采用匯編語言實現(xiàn)。</p><p> ●在DS18B20的有關(guān)資料中均未提及單總線上所掛DS18B
67、20 數(shù)量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應(yīng)用中并非如此,當(dāng)單總線上所掛DS18B20 超過8 個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。</p><p> ●在DS18B20測溫程序設(shè)計中,向DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20 接觸不好或斷線,當(dāng)程序讀該DS18B20 時,將沒有返回信
68、號,程序進入死循環(huán),這一點在進行DS18B20硬件連接和軟件設(shè)計時也要給予一定的重視。</p><p> 3.3.2.3 DS18B20內(nèi)部結(jié)構(gòu)</p><p> 圖為DS1820的內(nèi)部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)
69、發(fā)生器等七部分。</p><p> DS18B20采用3腳PR-35 封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3.5所示</p><p> 圖3.5 DS18B20內(nèi)部結(jié)構(gòu)框圖</p><p> 64 b閃速ROM的結(jié)構(gòu)如下:</p><p> 表3.2 ROM的結(jié)構(gòu)</p><p> MSBLSB
70、 MSB LSB MSBLSB</p><p> 開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48 位,最后8位是前面56 位的CRC 檢驗碼,這也是多個DS18B20 可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限</p><p> DS18B20 溫度傳感器的內(nèi)部存儲器</p><p&g
71、t; 還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM 的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖3.6所示</p><p> 便箋式存儲器(上電狀態(tài))</p><p><b> Byte0</b></p><p><b> Byte1</b></p><p><b&
72、gt; Byte2</b></p><p><b> Byte3</b></p><p><b> Byte4</b></p><p><b> Byte5</b></p><p><b> Byte6</b></p>
73、<p><b> Byte7</b></p><p><b> Byte8</b></p><p> 圖 3.6 高速暫存RAM結(jié)構(gòu)圖</p><p> 前2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換
74、分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。</p><p><b> 其溫度值如下:</b></p><p> 表3.2 溫度數(shù)值表</p><p> LSB MSB</p><p>
75、 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1,2字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式以0.062 5 ℃/LSB形式表示。溫度值格式如下:</p><p> 表3.3 轉(zhuǎn)換后的溫度值</p><p> MSB LSB<
76、/p><p> MSB LSB </p><p> 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.
77、0625即可得到實際溫度。圖中,S表示位。對應(yīng)的溫度計算:當(dāng)符號位S=0時,表示測得的溫度植為正值,直接將二進制位轉(zhuǎn)換為十進制;當(dāng)S=1時,表示測得的溫度植為負值,先將補碼變換為原碼,再計算十進制值。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。</p><p> DS18B20溫度傳感器主要用于對溫度進
78、行測量,數(shù)據(jù)可用16位符號擴展的二進制補碼讀數(shù)形式提供,并以0.0625℃/LSB形式表示。表2是部分溫度值對應(yīng)的二進制溫度表示數(shù)據(jù)。</p><p> 表3.4 部分溫度值</p><p> DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較,若T>TH或T<TL,則將該器件內(nèi)的告警標(biāo)志置位,并對主機發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多
79、只DS18B20同時測量溫度并進行告警搜索。</p><p> 在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗碼(CRC)。主機根據(jù)ROM的前 56位來計算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機收到的ROM數(shù) 據(jù)是否正確。</p><p> 3.3.2.4 DS18B20測溫原理</p><p> DS18B20的測溫原理如圖8所示
80、,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應(yīng)的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在
81、-55 ℃所對應(yīng)的一個基數(shù)值。</p><p> 減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時溫度寄存器的值將加1,減法計數(shù)器 1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫圖2中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法
82、計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。</p><p> 另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p> 圖3
83、.7 DS18B20測溫原理圖</p><p> 在正常測溫情況下,DS1820的測溫分辨力為0.5℃,可采用下述方法獲得高分辨率的溫度測量結(jié)果:首先用DS1820提供的讀暫存器指令(BEH)讀出以0.5℃為分辨率的溫度測量結(jié)果,然后切去測量結(jié)果中的最低有效位(LSB),得到所測實際溫度的整數(shù)部分Tz,然后再用BEH指令取計數(shù)器1的計數(shù)剩余值Cs和每度計數(shù)值CD??紤]到DS1820測量溫度的整數(shù)部分以0.25℃
84、、0.75℃為進位界限的關(guān)系,實際溫度Ts可用下式計算:</p><p> Ts=(Tz-0.25℃)+(CD-Cs)/CD(3.1) </p><p><b> 第4章 軟件設(shè)計</b></p><p> 本章介紹數(shù)字溫度計的軟件設(shè)計部分。該部分主要包括:軟件總體設(shè)計流程、模塊設(shè)計及測試。其中,模塊設(shè)計介紹了數(shù)字溫度計實現(xiàn)依賴的 3 個
85、功能模塊,它們分別是:讀出溫度模塊、溫度處理模塊和 LED 顯示模塊。測試部分介紹了測試的意義、環(huán)境和測試用例。</p><p> 4.1 軟件總體設(shè)計流程 </p><p> 主程序比較簡單,初始化完成后,調(diào)用讀出溫度、溫度處理及 LED 顯示程序,取得溫度顯示。系統(tǒng)主程序主要完成溫度顯示功能,總體設(shè)計流程如下圖所示:</p><p> 圖4.1 DS18
86、S20數(shù)字溫度計主流圖</p><p> 4.2 模塊設(shè)計 </p><p> 本設(shè)計的主要模塊有讀出溫度模塊、溫度處理模塊和LED顯示模塊。 </p><p> 4.2.1 讀出溫度流程 </p><p> 溫度傳感器測出溫度后會將數(shù)據(jù)存儲在上、下限報警寄存器 TH 和 TL 里,要實現(xiàn)讀出溫度,要將 TH 和 TL 中的數(shù)據(jù)讀出
87、。TH和TL是兩個8位寄存器,因此在讀這兩個寄存器中的數(shù)據(jù)時需要一個16 位數(shù)組來存放分別來自 TH 和 TL 的數(shù)據(jù)。具體流程如下圖:</p><p> 圖4.2 讀出溫度流程圖</p><p> 4.2.2 溫度處理流程 </p><p> 溫度處理是將讀出的溫度數(shù)據(jù)轉(zhuǎn)換成區(qū)分整數(shù)部分與小數(shù)部分的 BCD 值,并對溫度的正負做出判斷處理的函數(shù)。具體流程見下
88、圖:</p><p> 圖4.3 溫度處理流程圖</p><p> 4.2.3 LED 顯示模塊 </p><p> LED 顯示模塊的作用是將處理好的數(shù)據(jù)顯示出來。該部分要完成 16 進制到 7 段數(shù)碼的段碼轉(zhuǎn)換,并最終將正確的段碼輸出,以此點亮相應(yīng)的數(shù)碼管。具體流程如下圖所示:</p><p> 圖4.4 LED顯示流程圖<
89、/p><p> 4.2.4 整體的溫度處理及顯示流程</p><p> 圖4.5 整體的溫度處理及顯示流程</p><p><b> 4.2 源程序</b></p><p> #include <AT89X52.H></p><p> #include <INTRINS.h
90、></p><p> unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,</p><p> 0xef,0xdf,0xbf,0x7f};</p><p> unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,</p><p&g
91、t; 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71,0x00,0x40};</p><p> unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,</p><p> 2
92、5,28,31,34,38,41,44,48,</p><p> 50,53,56,59,63,66,69,72,</p><p> 75,78,81,84,88,91,94,97};</p><p> unsigned char displaycount;</p><p> unsigned char displaybuf[8]={
93、16,16,16,16,16,16,16,16};</p><p> unsigned char timecount;</p><p> unsigned char readdata[8];</p><p> sbit DQ=P3^7;</p><p> bit sflag;</p><p> bit res
94、etpulse(void)</p><p><b> {</b></p><p> unsigned char i;</p><p><b> DQ=0;</b></p><p> for(i=255;i>0;i--);</p><p><b> D
95、Q=1;</b></p><p> for(i=60;i>0;i--);</p><p> return(DQ);</p><p> for(i=200;i>0;i--);</p><p><b> }</b></p><p> void writecommand
96、tods18b20(unsigned char command)</p><p><b> {</b></p><p> unsigned char i;</p><p> unsigned char j;</p><p> for(i=0;i<8;i++)</p><p><
97、b> {</b></p><p> if((command & 0x01)==0)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p> for(j=35;j>0;j--);</p><p&
98、gt;<b> DQ=1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> DQ=0;</b></p>
99、<p> for(j=2;j>0;j--);</p><p><b> DQ=1;</b></p><p> for(j=33;j>0;j--);</p><p><b> }</b></p><p> command=_cror_(command,1); </
100、p><p><b> }</b></p><p><b> }</b></p><p> unsigned char readdatafromds18b20(void)</p><p><b> {</b></p><p> unsigned ch
101、ar i;</p><p> unsigned char j;</p><p> unsigned char temp;</p><p><b> temp=0;</b></p><p> for(i=0;i<8;i++)</p><p><b> {</b>
102、</p><p> temp=_cror_(temp,1);</p><p><b> DQ=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b>
103、 DQ=1;</b></p><p> for(j=10;j>0;j--);</p><p><b> if(DQ==1)</b></p><p><b> {</b></p><p> temp=temp | 0x80;</p><p><
104、b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> temp=temp | 0x00;</p><p><b> }</b></p><p> for(j=2
105、00;j>0;j--);</p><p><b> }</b></p><p> return(temp);</p><p><b> }</b></p><p> void main(void)</p><p><b> {</b>&l
106、t;/p><p> TMOD=0x01;</p><p> TH0=(65536-4000)/256;</p><p> TL0=(65536-4000)%256;</p><p><b> ET0=1;</b></p><p><b> EA=1;</b></p
107、><p> while(resetpulse());</p><p> writecommandtods18b20(0xcc);</p><p> writecommandtods18b20(0x44);</p><p><b> TR0=1;</b></p><p><b> w
108、hile(1)</b></p><p><b> {</b></p><p><b> ;</b></p><p><b> }</b></p><p><b> }</b></p><p> void t0(
109、void) interrupt 1 using 0</p><p><b> {</b></p><p> unsigned char x;</p><p> unsigned int result;</p><p> TH0=(65536-4000)/256;</p><p> TL0
110、=(65536-4000)%256;</p><p> if(displaycount==2)</p><p><b> {</b></p><p> P0=displaycode[displaybuf[displaycount]] | 0x80;</p><p><b> }</b><
111、;/p><p><b> else</b></p><p><b> {</b></p><p> P0=displaycode[displaybuf[displaycount]];</p><p><b> }</b></p><p> P2=d
112、isplaybit[displaycount];</p><p> displaycount++;</p><p> if(displaycount==8)</p><p><b> {</b></p><p> displaycount=0;</p><p><b> }&l
113、t;/b></p><p> timecount++;</p><p> if(timecount==150)</p><p><b> {</b></p><p> timecount=0;</p><p> while(resetpulse());</p><
114、;p> writecommandtods18b20(0xcc);</p><p> writecommandtods18b20(0xbe);</p><p> readdata[0]=readdatafromds18b20();</p><p> readdata[1]=readdatafromds18b20();</p><p&g
115、t; for(x=0;x<8;x++)</p><p><b> {</b></p><p> displaybuf[x]=16;</p><p><b> }</b></p><p><b> sflag=0;</b></p><p>
116、 if((readdata[1] & 0xf8)!=0x00)</p><p><b> {</b></p><p><b> sflag=1;</b></p><p> readdata[1]=~readdata[1];</p><p> readdata[0]=~readdat
117、a[0];</p><p> result=readdata[0]+1;</p><p> readdata[0]=result;</p><p> if(result>255)</p><p><b> {</b></p><p> readdata[1]++;</p>
118、;<p><b> }</b></p><p><b> }</b></p><p> readdata[1]=readdata[1]<<4;</p><p> readdata[1]=readdata[1] & 0x70;</p><p> x=read
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機數(shù)字溫度計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機數(shù)字溫度計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計——基于單片機的數(shù)字溫度計設(shè)計
- 單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于單片機的數(shù)字溫度計設(shè)計 畢業(yè)設(shè)計
- 基于單片機控制的數(shù)字溫度計----畢業(yè)設(shè)計
- 基于5單片機的數(shù)字溫度計畢業(yè)設(shè)計
- 基于51單片機的數(shù)字溫度計-畢業(yè)設(shè)計
- 單片機畢業(yè)設(shè)計--單片機設(shè)計數(shù)字溫度計
- 基于單片機的數(shù)字溫度計畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計(論文)-基于單片機的數(shù)字溫度計設(shè)計
- 基于單片機的數(shù)字溫度計的設(shè)計 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)基于單片機的數(shù)字溫度計設(shè)計
- 數(shù)字溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
- 畢業(yè)設(shè)計(論文)基于單片機的數(shù)字語音溫度計
- 數(shù)字溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
- 溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
評論
0/150
提交評論