基于單片機(jī)的溫度測(cè)量?jī)x設(shè)計(jì)【畢業(yè)論文】_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)論文(設(shè)計(jì))</p><p><b> ?。ǘ?屆)</b></p><p>  基于單片機(jī)的溫度測(cè)量?jī)x設(shè)計(jì)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級(jí) 電氣工程及其自動(dòng)化 </p>

2、<p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p><p>  溫度控制

3、現(xiàn)在廣泛應(yīng)用于各個(gè)領(lǐng)域。在冶金工業(yè),化工生產(chǎn),電力過程,造紙行業(yè),機(jī)械制造和食品加工等諸多領(lǐng)域中,人們都在對(duì)溫度進(jìn)行測(cè)量和控制。在工業(yè)中,如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員努力想要解決的問題,由于所選器件的不同,還有很多不確定因素難以建立精確的數(shù)學(xué)模型,導(dǎo)致溫度的不穩(wěn)定和失控。而隨著單片機(jī)的出現(xiàn),很多問題都有了進(jìn)一步的解決。</p><p>  本系統(tǒng)采用STC89C51單片機(jī)來驅(qū)動(dòng)數(shù)字溫度傳感器

4、DS18B20,進(jìn)行溫度數(shù)據(jù)的采集、讀取和處理,并通過液晶顯示器LCD1602顯示出來。同時(shí)通過RS-232串行口與PC機(jī)連接,將溫度數(shù)據(jù)傳送至PC機(jī)系統(tǒng)。</p><p>  本系統(tǒng)的軟件設(shè)計(jì)主要分為以下幾部分:主程序,溫度上下限值設(shè)定子程序、溫度讀取子程序、溫度顯示子程序、串口通信子程序、輸出控制子程序和報(bào)警子程序等,所有程序編寫都采用C51語言。</p><p>  關(guān)鍵詞:溫度控制

5、;單片機(jī);數(shù)字溫度傳感器;液晶顯示</p><p><b>  Abstract</b></p><p>  Now, temperature control is widely used in many areas. People are in the temperature measurement and control in industry lighting

6、industry, metallurgical industry, chemical production, power process, paper industry, machinery manufacturing and food processing and many other areas. How to improve the operating performance of temperature control has

7、been the object which control personnel want to solve. As selecting different device, there are many uncertain factors difficult to establish accurate</p><p>  The system uses microcontroller STC89C51 to dri

8、ve the digital temperature sensor DS18B20; collect, read and process temperature data, and display through LCD1602. At the same time it sends temperature data to PC through RS-232 serial port.</p><p>  This

9、system software is mainly divided into the following several parts: main program, temperature limits setting subroutine, temperature reading subroutine, temperature display subroutine, serial communication subroutine, ou

10、tput control subroutine and alarm subroutine, etc., all programming are using C51 language. </p><p>  Key Words: Temperature control; MCU; Digital Temperature Sensor; LCD</p><p><b>  目 錄&

11、lt;/b></p><p><b>  1 引言1</b></p><p>  1.1 背景介紹1</p><p>  1.2 溫度控制的現(xiàn)狀及前景1</p><p>  1.3 課題研究的內(nèi)容2</p><p><b>  2 總體設(shè)計(jì)3</b><

12、;/p><p>  2.1 課題達(dá)到的技術(shù)要求3</p><p><b>  2.2器件選擇3</b></p><p>  2.2.1單片機(jī)選擇3</p><p>  2.2.2通信口選擇3</p><p>  2.2.3溫度傳感器選擇4</p><p>  2.2

13、.4顯示方式的選擇4</p><p>  2.3總體設(shè)計(jì)方案5</p><p><b>  3 硬件設(shè)計(jì)6</b></p><p>  3.1 單片機(jī)主控模塊6</p><p>  3.2 溫度模塊8</p><p>  3.2.1數(shù)字溫度傳感器DS18B208</p>

14、<p>  3.2.2溫度設(shè)定模塊10</p><p>  3.2.3溫度顯示模塊11</p><p>  3.3串口通信模塊12</p><p>  3.4外圍控制模塊13</p><p>  3.5報(bào)警電路模塊13</p><p><b>  3.6小結(jié)13</b>&l

15、t;/p><p>  4 軟件設(shè)計(jì)15</p><p>  4.1 系統(tǒng)主程序15</p><p>  4.2溫度測(cè)量子程序16</p><p>  4.3讀溫度子程序17</p><p>  4.4溫度轉(zhuǎn)換子程序18</p><p>  4.5計(jì)算溫度子程序19</p>

16、<p>  4.6 液晶顯示20</p><p><b>  4.7 小結(jié)21</b></p><p><b>  5制作過程22</b></p><p><b>  6 結(jié)論24</b></p><p>  致謝錯(cuò)誤!未定義書簽。</p>

17、<p><b>  參考文獻(xiàn)25</b></p><p>  附錄1 系統(tǒng)原理圖26</p><p>  附錄2 程序清單27</p><p><b>  1 引言</b></p><p><b>  1.1 背景介紹</b></p><p

18、>  現(xiàn)代信息技術(shù)的三大基礎(chǔ)是信息采集控制(即溫度控制器技術(shù)),信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))。溫度控制器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度控制器被廣泛用于工農(nóng)業(yè)生產(chǎn),科學(xué)研究和生活等領(lǐng)域,而且由于人們生活環(huán)境的需求,溫度控制器的數(shù)量日漸上升[1]。</p><p>  對(duì)于溫度控制,以往,在實(shí)際的溫度控制系統(tǒng)中,多采用熱敏電阻器或熱電偶測(cè)量溫度,后來又有繼電器、PLC、單片機(jī),專用工控機(jī)

19、等.實(shí)現(xiàn)方法不同的測(cè)溫方式有不同的優(yōu)缺點(diǎn):對(duì)于熱敏電阻器這種溫度采集電路有時(shí)需要冷端補(bǔ)償電路,這樣就增加了電路的復(fù)雜性,而且該種電路易受干擾,使采集到的數(shù)據(jù)準(zhǔn)確性不高[2];繼電器具有零電壓導(dǎo)通,零電流關(guān)斷,靈敏度高、控制功率小、電磁兼容性好,耐腐蝕、抗干擾、壽命長(zhǎng)、體積小,能以微小的控制信號(hào)直接驅(qū)動(dòng)大電流負(fù)載等優(yōu)點(diǎn),但也存在通態(tài)壓降,需要散熱措施,有輸出漏電流,交直流不能通用,導(dǎo)通后的管壓降大,觸點(diǎn)組數(shù)少,成本高等缺點(diǎn);PLC主要應(yīng)用

20、于強(qiáng)電方面的工業(yè)控制,或者整條流水線的控制,相對(duì)于單片機(jī)的功耗要大,單個(gè)CPU比較穩(wěn)定[3],但價(jià)格昂貴;單片機(jī)適合于實(shí)時(shí)工業(yè)控制,相對(duì)于微機(jī)價(jià)格較為低廉,可編程性和可擴(kuò)展性強(qiáng);專用工控機(jī)配置硬盤容量小、數(shù)據(jù)安全性低且存儲(chǔ)選擇性小[4][5]。</p><p>  1.2 溫度控制的現(xiàn)狀及前景</p><p>  溫度控制系統(tǒng)是人類供熱、取暖的主要設(shè)備的驅(qū)動(dòng)來源,它的出現(xiàn)迄今已有兩百余年的

21、歷史。期間,從低級(jí)到高級(jí),從簡(jiǎn)單到復(fù)雜,隨著生產(chǎn)力的發(fā)展和對(duì)溫度控制精度要求的不斷提高,溫度控制系統(tǒng)的控制技術(shù)得到迅速發(fā)展。溫度控制器發(fā)展初期是機(jī)械式溫度控制器,這類控制器采用金屬片或充氣式膜盒感測(cè)溫度,使用波段開關(guān)調(diào)整風(fēng)速。但這類控制器由于它外觀陳舊,控制精度差,容易打火,功能單一,已被淘汰,現(xiàn)在已被智能電子式溫度控制器全面取代[6]。當(dāng)前比較流行的溫度控制系統(tǒng)有基于單片機(jī)的溫度控制系統(tǒng),基于PLC 的溫度控制系統(tǒng),基于工控機(jī)(IPC

22、)的溫度控制系統(tǒng),集散型溫度控制系統(tǒng)(DCS),現(xiàn)場(chǎng)總線控制系統(tǒng)(FCS)等。</p><p>  溫度控制現(xiàn)在廣泛應(yīng)用于各個(gè)領(lǐng)域,在冶金工業(yè),化工生產(chǎn),電力過程,造紙行業(yè),機(jī)械制造和食品加工等諸多領(lǐng)域中,人們都在對(duì)溫度進(jìn)行測(cè)量和控制,在工業(yè)中,如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員努力想要解決的問題,由于所選器件的不同,還有很多不確定因素難以建立精確的數(shù)學(xué)模型,導(dǎo)致溫度的不穩(wěn)定和失控。而隨著單片機(jī)的

23、出現(xiàn),很多問題都有了進(jìn)一步的解決,由于單片微處理器具有高精確度、高靈敏度、高響應(yīng)速度、以及耗能少、機(jī)構(gòu)小、可以連續(xù)測(cè)量、自動(dòng)控制、安全可靠等優(yōu)點(diǎn),非常適合嵌入式控制。同時(shí),其邏輯控制運(yùn)算是由軟件來進(jìn)行的,可以容易的實(shí)現(xiàn)各種控制規(guī)則,甚至是比較復(fù)雜的控制算法的實(shí)現(xiàn),而且不受外界的工作環(huán)境的影響。再采用DS18B20數(shù)字溫度傳感器,讓測(cè)量溫度更加精確,而且其內(nèi)部集成了A/D轉(zhuǎn)化,使得電路結(jié)構(gòu)更加簡(jiǎn)單,減少了溫度測(cè)量轉(zhuǎn)換時(shí)的精度損失,使得測(cè)量

24、更加精確。</p><p>  在當(dāng)今電子信息時(shí)代,電子自動(dòng)化、信息采集控制在任何行業(yè)都是不可逆轉(zhuǎn)的潮流,電子式溫度控制器全面取代機(jī)械式溫度控制器將在未來很短時(shí)間內(nèi)實(shí)現(xiàn),</p><p>  1.3 課題研究的內(nèi)容</p><p>  本課題主要研究利用溫度傳感器采集外界的溫度模擬量,通過A/D轉(zhuǎn)換器將放大后的模擬量轉(zhuǎn)換為單片機(jī)能夠識(shí)別的數(shù)字量,并通過液晶顯示進(jìn)行實(shí)

25、時(shí)顯示。主要分為以下幾步:</p><p> ?。?)熟悉多功能溫度計(jì)的硬件結(jié)構(gòu),分析多種溫度計(jì)的工作原理。</p><p> ?。?)控制器采用單片機(jī)STC89C51,溫度傳感器采用DS18B20,并通過液晶顯示進(jìn)行實(shí)時(shí)顯示;報(bào)警部分運(yùn)用蜂鳴器報(bào)警;外圍控制用繼電器。</p><p> ?。?)能夠測(cè)量和顯示當(dāng)前環(huán)境溫度等信息;</p><p&

26、gt;  本文主要介紹了基于單片機(jī)的溫度測(cè)量?jī)x的設(shè)計(jì)思路和方案,并完成該系統(tǒng)的總體設(shè)計(jì)、硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件設(shè)計(jì)部分介紹了主要模塊的工作原理及實(shí)現(xiàn)方法。軟件設(shè)計(jì)部分介紹了主程序、溫度測(cè)量及液晶顯示子程序等。</p><p><b>  2 總體設(shè)計(jì)</b></p><p>  2.1 課題達(dá)到的技術(shù)要求</p><p>  系統(tǒng)總體指標(biāo)

27、及功能要求如下:</p><p>  采用單片機(jī)作為主控電路;</p><p><b>  實(shí)時(shí)采集溫度;</b></p><p><b>  串行口傳送數(shù)據(jù);</b></p><p>  能夠測(cè)量和顯示當(dāng)前環(huán)境溫度。</p><p><b>  2.2器件選擇&l

28、t;/b></p><p>  2.2.1單片機(jī)選擇</p><p>  方案一:采用8031單片機(jī),該單片機(jī)片內(nèi)不帶程序存儲(chǔ)器,使用時(shí)用戶需外接程序存儲(chǔ)器和一片邏輯電路74HC373,外接的程序存儲(chǔ)器多為EPROM的2764系列。用戶若想對(duì)寫入到EPROM中的程序進(jìn)行修改,必須先用一種特殊的紫外線燈將其照射擦除,之后才可寫入。寫入到外接程序存儲(chǔ)器的程序代碼沒有什么保密性可言,不利于

29、本次設(shè)計(jì)的系統(tǒng)。</p><p>  方案二:采用STC89C51,STC89C51是一種低功耗、高性能CMOS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU和在線系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈

30、活、超有效的解決方案。</p><p>  本設(shè)計(jì)選用的是方案二。</p><p>  2.2.2通信口選擇</p><p>  方案一無線傳輸:此方案是指PC機(jī)與單片機(jī)通過無線信道傳輸數(shù)據(jù)。無線傳輸?shù)淖畲髢?yōu)勢(shì)是應(yīng)用范圍廣,受距離約束較小,在一定范圍內(nèi)可以不用考慮距離問題,還可以應(yīng)用在一些高溫、危險(xiǎn)的場(chǎng)合,但性能不太穩(wěn)定。</p><p> 

31、 方案二有線傳輸:此方案是指PC機(jī)與單片機(jī)之間通過電纜線傳輸數(shù)據(jù)。有線傳輸?shù)膬?yōu)勢(shì)是性能比較穩(wěn)定,調(diào)試簡(jiǎn)單。</p><p>  本系統(tǒng)選用方案二。且選用串口通信,串行口選用了標(biāo)準(zhǔn)RS-232C接口。</p><p>  2.2.3溫度傳感器選擇</p><p>  方案一:采用接觸式溫度傳感器,像熱電偶、熱敏電阻以及鉑熱電阻等,其利用產(chǎn)生的熱電動(dòng)勢(shì)或電阻隨溫度的變化

32、的特性來測(cè)量物體的溫度,一般還采用與開關(guān)組合的雙金屬片或磁繼電開關(guān)進(jìn)行溫度控制。采用熱電偶、熱敏電阻以及鉑熱電阻等測(cè)量物體的溫度。如熱敏電阻具有負(fù)溫度系數(shù)(NTC),也就是說它的電阻值會(huì)隨溫度的下降而升高。其構(gòu)成的溫度傳感器在線路上傳送的是模擬信號(hào),需要進(jìn)過A/D轉(zhuǎn)換出數(shù)字量后,再由微機(jī)處理。</p><p>  方案二采用非接觸式傳感器,其通過檢測(cè)光傳感器中紅外線來測(cè)量物體的溫度[9]。如數(shù)字溫度傳感器DS18

33、B20,DS18B20具有體積小、功耗低、抗干擾能力強(qiáng)、易與單片機(jī)連接等特點(diǎn),而且它無需任何外圍硬件即可方便地進(jìn)行溫度測(cè)量,它采用1線總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。對(duì)于這種溫度直接通過“一線總線”以數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)[7]。DS18B20采用多種封裝方式,從而使系統(tǒng)設(shè)計(jì)更靈活、方便。</p><p><b>  本系統(tǒng)

34、采用方案二。</b></p><p>  2.2.4顯示方式的選擇</p><p>  方案一:采用LED顯示,LED數(shù)碼顯示管是一種由LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個(gè)LED顯示管,其中7個(gè)用于顯示字符,1個(gè)用來顯示小數(shù)點(diǎn),故通常稱之為八段發(fā)光二極管數(shù)碼顯示器。但LED顯示字符少,而且不能顯示漢字。</p><p>  方案二:采用L

35、CD顯示,在單片機(jī)系統(tǒng)中應(yīng)用液晶顯示器作為輸出器件的優(yōu)點(diǎn)有顯示質(zhì)量高、數(shù)字式接口、體積小、重量輕、功耗低。</p><p><b>  本系統(tǒng)采用方案二。</b></p><p><b>  2.3總體設(shè)計(jì)方案</b></p><p>  本系統(tǒng)通過單片機(jī)來驅(qū)動(dòng)數(shù)字傳感器DS18B20,進(jìn)行溫度數(shù)據(jù)采集、讀取和處理,并通過

36、液晶顯示器顯示出來。同時(shí)通過RS-232串行口與PC機(jī)連接,將數(shù)據(jù)傳送至PC機(jī)系統(tǒng),當(dāng)溫度超過上限值則由蜂鳴器報(bào)警并由外圍設(shè)置控制電路。</p><p>  系統(tǒng)的總體結(jié)構(gòu)框圖如圖2-1所示。</p><p>  圖2-1 總體結(jié)構(gòu)框圖</p><p><b>  3 硬件設(shè)計(jì)</b></p><p>  本系統(tǒng)就是

37、采用STC89C51單片機(jī)芯片作為控制芯片,采用數(shù)字溫度傳感器DS18B20測(cè)出當(dāng)前環(huán)境的溫度,并用液晶顯示器LCD1602顯示出來。</p><p>  3.1 單片機(jī)主控模塊</p><p>  由于系統(tǒng)控制方案簡(jiǎn)單,數(shù)據(jù)量也不大,考慮到電路的簡(jiǎn)單和成本等因素,因此采用單片機(jī)STC89C51作為主控芯片。</p><p>  本系統(tǒng)的單片機(jī)芯片采用STC89C5

38、1[8],STC89C51系列單片機(jī)是從引腳到內(nèi)核都完全兼容標(biāo)準(zhǔn)8051的單片機(jī),有PDIP-40、plcc-44、PQFP-44三種封裝形式。它的主要性能是:8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、1000次擦寫周期、全靜態(tài)操作:0Hz~33Hz 、三級(jí)加密程序存儲(chǔ)器 、32個(gè)可編程I/O口線、三個(gè)16位定時(shí)器/計(jì)數(shù)器八個(gè)中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時(shí)器 、雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符 。&

39、lt;/p><p>  本系統(tǒng)采用的是40條管腳的STC89C51單片機(jī),工作電壓范圍是2.0V~3.8V,工作頻率范圍是0~40MHz。</p><p>  單片機(jī)STC89C51最小系統(tǒng)如圖3-1所示。</p><p>  圖3-1 單片機(jī)最小系統(tǒng)</p><p>  單片機(jī)的時(shí)鐘產(chǎn)生方法有內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式兩種[9]。本系統(tǒng)采用的

40、是內(nèi)部時(shí)鐘方式。</p><p>  STC89C51單片機(jī)內(nèi)部有一個(gè)高增益反相放大器。XTAL1和XTAL2引腳分別是該放大器的輸入端和輸出端。該放大器與兩個(gè)引腳間跨接的石英晶振Y1和微調(diào)電容C3、C2,形成反饋電路,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,如圖3-1所示。C3、C2的取值對(duì)振蕩頻率輸出的頻率值、穩(wěn)定性及振蕩電路起振速度有少許影響,電容值一般為18-33pF。在焊接電路板時(shí),晶振和電容應(yīng)盡可能安裝得與單片機(jī)芯

41、片靠近,以減少寄生電容,更好地保證晶振穩(wěn)定和可靠地工作。本系統(tǒng)選用了大小為11.0592MHz的晶振和30pF的陶瓷電容。</p><p>  單片機(jī)的復(fù)位操作有兩種方式:上電復(fù)位和手動(dòng)復(fù)位。本系統(tǒng)采用的是手動(dòng)復(fù)位,這種復(fù)位方式更加人性化,不必要切斷電源即可對(duì)系統(tǒng)進(jìn)行復(fù)位,如圖3-1所示。</p><p>  單片機(jī)在正常工作時(shí),RST應(yīng)保持低電平。當(dāng)RST為高電平并且保持一段時(shí)間就能實(shí)現(xiàn)

42、復(fù)位。如果RST一直處于高電平,單片機(jī)就會(huì)處于循環(huán)復(fù)位狀態(tài),無法執(zhí)行程序。上電復(fù)位是單片機(jī)上電的瞬間,RC電路充電,RST引腳上出現(xiàn)高電平,只要RST端保持兩個(gè)機(jī)器周期以上的高電平,就能使單片機(jī)有效地復(fù)位。上電后,只要按下復(fù)位按鍵使RST持續(xù)一段時(shí)間的高電平,就能使單片機(jī)復(fù)位。圖3-2中的二極管D2的作用是快速放電。在上電時(shí),二極管截止,電流流經(jīng)電阻到地;在下電時(shí),電容放電,電流反向,二極管導(dǎo)通,把電阻短路,實(shí)現(xiàn)快速放電。本系統(tǒng)選用的是

43、11.0592MHz的晶振,因此一個(gè)機(jī)器周期約為1.0851μs,那么復(fù)位的脈沖寬度至少要2.1702μs。另外,實(shí)際應(yīng)用中還要考慮晶振穩(wěn)定時(shí)間、電源穩(wěn)定時(shí)間、參數(shù)漂移等因素,必須有足夠的余量,增大復(fù)位的可靠性。因?yàn)榫д駨钠鹫竦椒€(wěn)定大約需要10ms,故復(fù)位時(shí)間通常定為大于10ms,復(fù)位的時(shí)間由RC電路的時(shí)間常數(shù)τ來決定。用到的計(jì)算公式有機(jī)器周期T的計(jì)算如式3-1所示和時(shí)間常數(shù)τ的計(jì)算如式3-2所示。其中fosc是晶振頻率。</p&

44、gt;<p>  T=1/fosc×12 (3-1)</p><p>  τ=RC (3-2)</p><p>  RC的典型值為C=10μF,R=8.2KΩ,本系統(tǒng)選用的 C10的值為22μF和R5的值為10K,D2選用1N4007。</p><p&

45、gt;<b>  3.2 溫度模塊</b></p><p>  3.2.1數(shù)字溫度傳感器DS18B20</p><p>  溫度傳感器一般分為接觸式和非接觸式兩大類。接觸式溫度傳感器有熱電偶、熱敏電阻以及鉑熱電阻等利用其產(chǎn)生的熱電動(dòng)勢(shì)或電阻隨溫度的變化的特性來測(cè)量物體的溫度,一般還采用與開關(guān)組合的雙金屬片或磁繼電開關(guān)進(jìn)行溫度控制。非接觸式傳感器是通過檢測(cè)光傳感器中紅外

46、線來測(cè)量物體的溫度[10]。</p><p>  采用熱敏電阻是實(shí)現(xiàn)溫度測(cè)量的方法之一。許多熱敏電阻具有負(fù)溫度系數(shù)(NTC),也就是說它的電阻值會(huì)隨溫度的下降而升高。其構(gòu)成的溫度傳感器在線路上傳送的是模擬信號(hào),需要進(jìn)過A/D轉(zhuǎn)換出數(shù)字量后,再由微機(jī)處理。</p><p>  還可以采用美國(guó)Dallas公司生產(chǎn)的DS18B20數(shù)字溫度傳感器來實(shí)現(xiàn)。本系統(tǒng)就是采用美國(guó)Dallas半導(dǎo)體公司生產(chǎn)

47、的數(shù)字化溫度傳感器DS18B20。它是美國(guó)DALLAS公司繼DS1820之后推出的增強(qiáng)型單總線數(shù)字溫度傳感器。DS18B20的1腳為電源地;2腳為數(shù)字信號(hào)輸入/輸出端;3腳位外接供電電源輸入端(在寄生電源接線方式時(shí)接地)</p><p>  DS18B20的內(nèi)部結(jié)構(gòu)如圖3-2所示,主要由4個(gè)部分構(gòu)成:64位ROM,溫度傳感器、非易失性溫度報(bào)警觸發(fā)器TH和TL、配置寄存器[10]。</p><p

48、>  圖3-2 DS18B20的內(nèi)部結(jié)構(gòu)</p><p>  DS18B20工作電壓范圍為3~5.5V,可編程9位-12位A/D轉(zhuǎn)換精度,并可分別在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量。溫度測(cè)量范圍為-55℃~125℃,測(cè)溫最高分辨率可達(dá)0.0625℃,在-10℃~+85℃范圍內(nèi)其測(cè)溫準(zhǔn)確度為±0.5℃。被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出。DS18B20具有體積小、功耗低

49、、抗干擾能力強(qiáng)、易與單片機(jī)連接等特點(diǎn),而且它無需任何外圍硬件即可方便地進(jìn)行溫度測(cè)量。</p><p>  它采用1線總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)STC89C51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議程序以完成對(duì)DS18B20芯片的訪問。</p><p>  DS18B20的測(cè)溫原理如圖3-3所示,DS18B20內(nèi)部的低溫

50、度系數(shù)振蕩器受溫度的影響很小,能產(chǎn)生穩(wěn)定的頻率信號(hào)f0,它把產(chǎn)生的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫度變化,其震蕩頻率明顯改變,它所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖中還隱藏著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20對(duì)f0計(jì)數(shù),進(jìn)而完成溫度測(cè)量,計(jì)數(shù)門開通時(shí)間由高溫度系數(shù)振蕩器決定。每次測(cè)溫前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值中。&

51、lt;/p><p>  減法計(jì)數(shù)器1對(duì)低溫系數(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重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù)。如此循環(huán)知道減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。芯片內(nèi)部還有斜率累加器,可對(duì)頻率的非線性予以補(bǔ)償。測(cè)量結(jié)果存入溫度寄存器中[11]。</p&

52、gt;<p>  圖3-3 DS18B20的測(cè)溫原理</p><p>  DS18B20用于多路溫度測(cè)量時(shí)電路圖如圖3-4所示,用4只DS18B20同時(shí)測(cè)量4路溫度,在本系統(tǒng)中,即采用多路溫度測(cè)量。P1.2口接DS18B20。</p><p>  圖3-4多路溫度測(cè)量原理圖</p><p>  3.2.2溫度設(shè)定模塊</p><p&

53、gt;  溫度設(shè)定用按鍵來完成,按鍵設(shè)定采用C程序完成(以下會(huì)具體說明),去抖動(dòng)設(shè)置等都由C程序完成,不需要外圍繁瑣的外部接口電路,設(shè)備簡(jiǎn)單。</p><p>  液晶顯示數(shù)值設(shè)定,變化范圍為00~99,開始設(shè)定顯示為30,按S0,數(shù)值加一,按S1數(shù)值減一,按S2數(shù)值歸零,按S3顯示當(dāng)前溫度,設(shè)定值都設(shè)定為無符號(hào)整形變量與溫度傳感器傳回的數(shù)值進(jìn)行比較的同時(shí)做出相應(yīng)報(bào)警信號(hào)提示。</p><p&

54、gt;  按鍵輸入模塊如圖3-5所示:</p><p>  圖3-5鍵盤輸入模塊</p><p>  3.2.3溫度顯示模塊</p><p>  系統(tǒng)通過單片機(jī)讀取溫度傳感器轉(zhuǎn)換的溫度值后,需要由溫度顯示模塊顯示測(cè)得的溫度。液晶顯示器在日常生活中的應(yīng)用非常廣泛,主要用來顯示數(shù)字、符號(hào)和圖形。在單片機(jī)系統(tǒng)中應(yīng)用液晶顯示器作為輸出器件的優(yōu)點(diǎn)有顯示質(zhì)量高、數(shù)字式接口、體積

55、小、重量輕、功耗低。</p><p>  本設(shè)計(jì)選用LCD1602,將單片機(jī)輸出的數(shù)據(jù)進(jìn)行動(dòng)態(tài)顯示。LCD1602是字符型顯示器,LCD1602分為背光和不帶背光兩種,在應(yīng)用中并無差別,本系統(tǒng)用的是帶背光。</p><p>  1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口如表3-1所示。</p><p>  表3-1 LCD1602引腳

56、接口表</p><p>  LCD1602與單片機(jī)的連接原理圖如圖3-6所示:</p><p>  圖3-6 LCD1602與單片機(jī)的連接原理圖</p><p><b>  3.3串口通信模塊</b></p><p>  單片機(jī)內(nèi)部含有一個(gè)可編程全雙工串口通信接口,由TXD引腳來傳送串行數(shù)據(jù),而由RXD引腳來接受數(shù)據(jù)。

57、該接口具有UART(通用異步接收和發(fā)送器)的全部功能,它不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個(gè)同步移位寄存器使用,可構(gòu)成雙機(jī)或者多機(jī)通信系統(tǒng)。</p><p>  由于TXD引腳和RXD引腳的工作邏輯電平皆為TTL電平(0V~5V),所以在單片機(jī)與PC機(jī)之間的數(shù)據(jù)通信必須經(jīng)過RS-232信號(hào)(+12V~-12V)電平轉(zhuǎn)換。本系統(tǒng)采用MAX232電平轉(zhuǎn)換芯片來實(shí)現(xiàn)RS-232標(biāo)準(zhǔn)接口通信電路,其電路連接如圖3

58、-7所示:</p><p>  圖3-7 MAX232串口通信電路 </p><p><b>  3.4外圍控制模塊</b></p><p>  單片機(jī)的P1.3口作為外設(shè)控制端口,其輸出的控制信號(hào),經(jīng)過NPN晶體管放大,再通過繼電器控制[12],如圖3-8所示。</p><p>  圖3-8外圍控制原理圖</p

59、><p><b>  3.5報(bào)警電路模塊</b></p><p>  本系統(tǒng)采用蜂鳴報(bào)警電路,此電路由三極管和蜂鳴器組成,當(dāng)所測(cè)溫度超過系統(tǒng)所設(shè)定的上下限值時(shí),就由單片機(jī)控制輸出信號(hào)控制晶體管導(dǎo)通,則蜂鳴器報(bào)警。報(bào)警圖如圖3-9所示。</p><p>  圖3-9報(bào)警電路模塊原理圖</p><p><b>  3.

60、6小結(jié)</b></p><p>  本節(jié)主要介紹了單片機(jī)控制模塊、串口通信模塊和溫度傳感器及顯示模塊四部分的結(jié)構(gòu)和工作原理??刂颇K中采用的是STC89C51單片機(jī),采用該單片機(jī)主要是因?yàn)槠涓咝?,低功耗,而且使本系統(tǒng)的硬件設(shè)計(jì)簡(jiǎn)單化。串口通信電路主要是使單片機(jī)與PC之間進(jìn)行數(shù)據(jù)通信,本系統(tǒng)采用MAX232電平轉(zhuǎn)換芯片來實(shí)現(xiàn)RS-232標(biāo)準(zhǔn)接口電平轉(zhuǎn)換。溫度測(cè)量使用DS18B20,其內(nèi)部含有A/D轉(zhuǎn)換

61、電路,減少外圍設(shè)備,與單片機(jī)直接通過“一線總線”以數(shù)字方式傳輸。它能實(shí)時(shí)測(cè)量溫度,并通過液晶進(jìn)行顯示,溫度顯示使用LCD1602顯示器。</p><p><b>  4 軟件設(shè)計(jì)</b></p><p>  本系統(tǒng)采用STC89C51單片機(jī)為主控部分,把經(jīng)過DS18B20實(shí)時(shí)測(cè)得的溫度數(shù)據(jù)存入STC89C51的內(nèi)部數(shù)據(jù)存儲(chǔ)器,并送至LCD1602液晶顯示,并與設(shè)定的

62、溫度上下限值進(jìn)行比較,然后由單片機(jī)輸出的控制信號(hào)區(qū)控制外部設(shè)備。在對(duì)溫度控制程序設(shè)計(jì)時(shí)要考慮到報(bào)警部分,當(dāng)實(shí)時(shí)測(cè)得的溫度值與設(shè)定的溫度上下限值進(jìn)行比較后,如果發(fā)現(xiàn)當(dāng)前的溫度值超過了設(shè)定值,則產(chǎn)生報(bào)警信號(hào),蜂鳴器報(bào)警與硬件電路相聯(lián)系,本系統(tǒng)的軟件設(shè)計(jì)主要分為以下幾部分:主程序,溫度上下限值設(shè)定子程序、溫度讀取子程序。溫度顯示子程序、串口通信子程序。輸出控制子程序和報(bào)警子程序等,所有程序編寫都采用C51語言[13]。</p>

63、<p><b>  4.1 系統(tǒng)主程序</b></p><p>  系統(tǒng)主程序包括初始化,溫度上下限設(shè)置,溫度采集,溫度顯示和報(bào)警等程序,完成對(duì)整個(gè)系統(tǒng)的控制。系統(tǒng)主程序流程圖如圖4-1所示。</p><p>  圖4-1 主程序流程圖</p><p>  4.2溫度測(cè)量子程序</p><p>  DS18B

64、20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲(chǔ)器操作指令→數(shù)據(jù)傳輸。它的工作過程包括初始化時(shí)序、寫入時(shí)序和讀取時(shí)序。所以主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:在每一次讀取之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功之后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。對(duì)于復(fù)位,主機(jī)首先發(fā)出一個(gè)480ms的低電平,然后釋放總線變?yōu)楦唠娖?,DS18B20收到信號(hào)之后等待16~60ms,后發(fā)出

65、60~240ms的存在脈沖,主機(jī)收到信號(hào)則便是復(fù)位成功。</p><p>  溫度測(cè)量程序負(fù)責(zé)溫度的實(shí)時(shí)顯示,讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次其流程圖見圖4-2所示:</p><p>  圖4-2 溫度測(cè)量子程序流程圖</p><p>  多點(diǎn)測(cè)溫程序流程圖如圖4-3所示:</p><p>  圖4-3 多

66、點(diǎn)測(cè)溫程序流程圖</p><p><b>  4.3讀溫度子程序</b></p><p>  此程序主要是讀出RAM中的9字節(jié),并進(jìn)行CRC校驗(yàn),其流程圖如圖4-4所示:</p><p>  圖4-4讀溫度子程序流程圖</p><p>  4.4溫度轉(zhuǎn)換子程序</p><p>  溫度轉(zhuǎn)換命令子程

67、序是進(jìn)行溫度轉(zhuǎn)換,本程序采用1s顯示延時(shí)法等待轉(zhuǎn)換的完成,其流程圖如圖4-5所示:</p><p>  圖4-5溫度轉(zhuǎn)換子程序流程圖</p><p>  4.5計(jì)算溫度子程序</p><p>  計(jì)算溫度子程序流程圖如圖4-6所示:</p><p>  圖4-6計(jì)算溫度子程序流程圖</p><p>  DS18B20溫

68、度/數(shù)據(jù)對(duì)應(yīng)關(guān)系如表4-1所示:</p><p>  表4-1 DS18B20溫度/數(shù)據(jù)對(duì)應(yīng)關(guān)系</p><p><b>  4.6 液晶顯示</b></p><p>  LCD1602液晶模塊內(nèi)部的控制器共有11條控制指令,見表4-2。LCD1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。</p><

69、p>  表4-2 LCD控制命令表</p><p>  液晶顯示模塊是一個(gè)慢顯示器件,每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。要顯示字符時(shí)要先輸入顯示字符地址。LCD在一行顯示方式下,DDRAM的地址范圍為00H-4FH;在雙行顯示方式下,DDRAM的地址范圍:第一行為00H-27H,第二行為40H-67H

70、。</p><p>  液晶顯示程序流程圖如圖4-7所示。</p><p>  圖4-7 液晶顯示程序流程圖</p><p><b>  4.7 小結(jié)</b></p><p>  本節(jié)主要介紹了溫度測(cè)量,轉(zhuǎn)換及液晶顯示程序。溫度測(cè)量及液晶顯示程序是單片機(jī)讀取當(dāng)前環(huán)境溫濕度的值,并輸出數(shù)據(jù)給LCD1602顯示。</p

71、><p><b>  5制作過程</b></p><p>  制作過程可分為硬件制作過程和軟件編寫過程。</p><p>  在制作硬件前,先查閱大量與課題相關(guān)的資料,了解溫度測(cè)量?jī)x的結(jié)構(gòu)和工作原理。在掌握課題相關(guān)的理論基礎(chǔ)后,根據(jù)要達(dá)到的要求,畫出總體框架圖。</p><p>  根據(jù)要完成的功能選擇元器件。解之后,使用P

72、rotel99se電路設(shè)計(jì)軟件畫出原理圖[14]。在完成原理圖后必須對(duì)每個(gè)元件進(jìn)行封裝,這是繪制電路板圖的前提。封裝的尺寸要和實(shí)際的元件的尺寸相同。繪制電路板圖必須很仔細(xì),因?yàn)檫@是電路是否能成功的重要環(huán)節(jié)。首先根據(jù)元器件之間的關(guān)系,將元器件放在一個(gè)合理的位置,盡量避免線路交叉。布局完成后,采用手動(dòng)布線。完成后的一部分電路板圖如圖5-1所示。</p><p>  圖5-1 單片機(jī)控制及液晶顯示電路板圖</p

73、><p>  然后就是制作PCB電路板。它包括打印圖紙、把圖紙?jiān)赑CB板上油印、腐蝕,最后打孔,這里的每一道工序都很重要。接著是焊接元器件,焊接的好壞與否將直接影響到后面的軟件調(diào)試,若硬件存在問題,即使程序編寫正確,也不會(huì)達(dá)到應(yīng)有的效果。完成的一部分PCB電路板如圖5-2所示。</p><p>  圖5-2 單片機(jī)控制及液晶顯示PCB電路板圖</p><p>  最后

74、調(diào)試,先對(duì)硬件調(diào)試,硬件調(diào)試基本成功后再進(jìn)行軟件調(diào)試,C語言程序在Keil uvision3編譯軟件中完成。將各部分程序編譯完成后,將程序下載到STC89C51單片機(jī),觀察硬件是否能實(shí)現(xiàn)功能。這些功能的程序不是一次就能完成的,要不斷地修改、編譯和下載程序,不斷地調(diào)試。最后實(shí)現(xiàn)所有要求的功能,達(dá)到預(yù)期的目標(biāo)。</p><p><b>  6 結(jié)論</b></p><p>

75、;  本系統(tǒng)方案按照任務(wù)書的要求,通過查閱大量資料、分析和制作調(diào)試,經(jīng)過幾個(gè)月的努力,基本上已經(jīng)達(dá)到預(yù)期的目標(biāo)。</p><p>  溫度測(cè)量采用單片機(jī)處理,是由于單片微處理器具有高精確度、高靈敏度、高響應(yīng)速度、以及耗能少、機(jī)構(gòu)小、可以連續(xù)測(cè)量、自動(dòng)控制、安全可靠等優(yōu)點(diǎn),非常適合嵌入式控制。同時(shí),其邏輯控制運(yùn)算是由軟件來進(jìn)行的,可以容易的實(shí)現(xiàn)各種控制規(guī)則,甚至是比較復(fù)雜的控制算法的實(shí)現(xiàn),而且不受外界的工作環(huán)境的影

76、響。再采用DS18B20數(shù)字溫度傳感器,讓測(cè)量溫度更加精確,而且其內(nèi)部集成了A/D轉(zhuǎn)化,使得電路結(jié)構(gòu)更加簡(jiǎn)單,減少了溫度測(cè)量轉(zhuǎn)換時(shí)的精度損失,使得測(cè)量更加精確。</p><p>  本系統(tǒng)的主控芯片采用的是STC89C51芯片,它是一種低功耗、高性能CMOS的8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。</p>

77、<p>  在設(shè)計(jì)的過程中,遇到了很多理論上的疑難和技術(shù)上的問題,在老師的指導(dǎo)和幫助下,一步一步的把問題解決,直到最后完成作品。通過此次設(shè)計(jì),我學(xué)到了許多在課上無法學(xué)到的知識(shí),對(duì)電子應(yīng)用設(shè)計(jì)也有了新的認(rèn)識(shí),對(duì)自身的理論知識(shí)水平和操作能力也有了很大的提高。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]羅淳.《模糊自整定PID的溫室溫

78、度控制器的設(shè)計(jì)》[D]武漢科技大學(xué)</p><p>  [2]徐翔.《基于AT89S52單片機(jī)與DS18B20的溫度控制系統(tǒng)的設(shè)計(jì)》[C].中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p>  [3]巫莉.《電氣控制與PLC應(yīng)用》[M].中國(guó)電力出版社,2008</p><p>  [4] 杜生海,邢聞譯.《FPGA設(shè)計(jì)指南》[M].北京:人民郵電出版社,2007,

79、12</p><p>  [5]趙世霞.《VHDL與微機(jī)接口設(shè)計(jì)》[M].北京:清華大學(xué)出版社,2004,7</p><p>  [6]王志剛.《現(xiàn)代電子線路》[M].第四版.北京:清華大學(xué)出版社.2008</p><p>  [7] 王任遠(yuǎn),沈占彬.數(shù)字式智能溫度控制器的研究[M]. 平頂山工業(yè)職業(yè)技術(shù)學(xué)院,2008年</p><p>  

80、[8] 吳金戌,沈慶陽等.8051單片機(jī)實(shí)踐與應(yīng)用[M].清華大學(xué)出版社.2002年9月</p><p>  [9] 楊恢先,黃輝先.單片機(jī)原理及應(yīng)用[M].北京:人民郵電出版社.2006年10月</p><p>  [10] 何希才,薛永毅,姜余祥.傳感器技術(shù)及應(yīng)用[M].北京航空航天大學(xué)出版社.2005年4月</p><p>  [11] 周琛暉,馮少懷.基于D

81、S18B20的溫度測(cè)量系統(tǒng) [M].中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院。2009年5月</p><p>  [12] 林建雄.基于單片機(jī)的溫度控制系統(tǒng)研究[M].電力學(xué)報(bào),2008年2月</p><p>  [13] 趙文博,劉文濤.單片機(jī)語言C51程序設(shè)計(jì)[M].人民郵電出版社.2005年10月</p><p>  [14]夏路易,石宗義.電路原理圖與電路板設(shè)計(jì)教程[M].北

82、京希望電子出版社.2002年6月</p><p>  [15]《AppendixF:PID Temperature Control》[J].文章出自www.lakeshore.com</p><p><b>  附錄1 系統(tǒng)原理圖</b></p><p><b>  附錄2 程序清單</b></p><

83、p>  #include<reg52.h> //</p><p>  #include<math.h></p><p>  #include<INTRINS.H></p><p>  #define uchar unsigned char</p><p>  #define uint un

84、signed int;</p><p>  /******************************************************************/</p><p>  /* 定義端口 */</p><p>  /*******

85、***********************************************************/</p><p>  sbit LED1 = P2^7;</p><p>  sbit LED2 = P2^6;</p><p>  sbit LED3 = P2^5;</p><p>  sbit LED4 = P2^4;

86、</p><p>  sbit DQ=P1^3;//ds18b20 端口</p><p>  /******************************************************************/</p><p>  /* 全局變量

87、 */</p><p>  /******************************************************************/</p><p>  uint temp;</p><p>  uchar flag_get,count,num,minute,second;</p><p>  uchar

88、 code tab[]={0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xA0,0x60,0x25, 0x3C, 0x23,0x34,0x74,0xF7,0xFF}; //7段數(shù)碼管段碼表共陽</p><p>  uchar str[6];</p><p>  /**************

89、****************************************************/</p><p>  /* 函數(shù)聲明 */</p><p>  /********************************************************

90、**********/</p><p>  void delay1(uchar MS);</p><p>  unsigned int ReadTemperature(void);</p><p>  void Init_DS18B20(void);</p><p>  unsigned char ReadOneChar(void);<

91、/p><p>  void WriteOneChar(unsigned char dat);</p><p>  void delay(unsigned int i);</p><p>  /******************************************************************/</p><p>  

92、/* 主函數(shù) */</p><p>  /******************************************************************/</p><p><b>  main()</b></p><

93、p><b>  {</b></p><p>  unsigned char TempH,TempL;</p><p>  TMOD|=0x01;//定時(shí)器設(shè)置</p><p><b>  TH0=0xef;</b></p><p><b>  TL0=0xf0;</b>&

94、lt;/p><p><b>  IE=0x82;</b></p><p><b>  TR0=1; </b></p><p><b>  count=0;</b></p><p><b>  while(1)</b></p><p>&

95、lt;b>  {</b></p><p>  str[5]=0x3C; //顯示C符號(hào)</p><p>  str[1]=tab[TempH/100]; //百位溫度</p><p>  str[2]=tab[(TempH%100)/10]; //十位溫度</p><p>  str[3]=tab[(Temp

96、H%100)%10] & 0xDF; //個(gè)位溫度,帶小數(shù)點(diǎn)</p><p>  str[4]=tab[TempL];</p><p>  if(flag_get==1) //定時(shí)讀取當(dāng)前溫度</p><p><b>  {</b></p><p>  temp=ReadTemperature();&

97、lt;/p><p>  if(temp&0x8000)</p><p><b>  {</b></p><p>  str[0]=0x40;//負(fù)號(hào)標(biāo)志</p><p>  temp=~temp; // 取反加1</p><p><b>  temp +=1;</b>&

98、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  str[0]=0;</b></p><p>  TempH=temp>>4;</p><p>  TempL=temp&

99、0x0F;</p><p>  TempL=TempL*6/10;//小數(shù)近似處理</p><p>  flag_get=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b><

100、/p><p>  /******************************************************************/</p><p>  /* 定時(shí)器中斷 */</p><p>  /***********************

101、*******************************************/</p><p>  void tim(void) interrupt 1 using 1//中斷,用于數(shù)碼管掃描和溫度檢測(cè)間隔</p><p><b>  {</b></p><p>  TH0=0xef;//定時(shí)器重裝值</p><p

102、><b>  TL0=0xf0;</b></p><p><b>  num++;</b></p><p>  if (num==50)</p><p><b>  {num=0;</b></p><p>  flag_get=1;//標(biāo)志位有效</p>&

103、lt;p><b>  second++;</b></p><p>  if(second>=60)</p><p>  {second=0;</p><p>  minute++; </p><p><b>  }</b></p><p><b>  

104、}</b></p><p><b>  count++;</b></p><p>  if(count==1)</p><p>  {LED4 = 1;</p><p>  P0 =str[2];</p><p><b>  LED1 = 0;</b></p

105、><p><b>  }//數(shù)碼管掃描</b></p><p>  if(count==2)</p><p>  {LED1 = 1;</p><p>  P0 = str[3];</p><p>  LED2 = 0;}</p><p>  if(count==3)</

106、p><p>  { LED2 = 1;</p><p>  P0 = str[4];</p><p><b>  LED3 = 0;</b></p><p><b>  }</b></p><p>  if(count==4)</p><p>  { LE

107、D3 = 1;</p><p>  P0=str[5];</p><p><b>  LED4 = 0;</b></p><p>  count = 0;</p><p><b>  }</b></p><p><b>  }</b></p>

108、<p>  /******************************************************************/</p><p>  /* 延時(shí)函數(shù) */</p><p>  /****************************

109、**************************************/</p><p>  void delay(unsigned int i)//延時(shí)函數(shù)</p><p><b>  {</b></p><p>  while(i--);</p><p><b>  }</b></p

110、><p>  /******************************************************************/</p><p>  /* 初始化 */</p><p>  /***********************

111、*******************************************/</p><p>  void Init_DS18B20(void)</p><p><b>  {</b></p><p>  unsigned char x=0;</p><p>  DQ = 1; //DQ復(fù)位</p

112、><p>  delay(8); //稍做延時(shí)</p><p>  DQ = 0; //單片機(jī)將DQ拉低</p><p>  delay(80); //精確延時(shí) 大于 480us</p><p>  DQ = 1; //拉高總線</p><p>  delay(10);</p><p>

113、;  x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  /***********************************************************

114、*******/</p><p>  /* 讀一個(gè)字節(jié) */</p><p>  /******************************************************************/</p><p>  unsigned cha

115、r ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><b>

116、;  {</b></p><p>  DQ = 0; // 給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; // 給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><p>  d

117、at|=0x80;</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /***************

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論