基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)與制作畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  基于STC89C52單片機(jī)的溫度報(bào)警器的設(shè)計(jì)與制作</p><p>  Design and production based STC89C52 microcontroller temperature alarm</p><p>  專 業(yè):應(yīng)用電子技術(shù)</p><p><b>  學(xué) 生: </b></

2、p><p><b>  指導(dǎo)教師:</b></p><p>  畢 業(yè) 設(shè) 計(jì)( 論 文 )評(píng) 語(yǔ)</p><p>  畢業(yè)設(shè)計(jì)(論文)答辯記錄成績(jī)及評(píng)語(yǔ)</p><p>  畢 業(yè) 設(shè) 計(jì) 任 務(wù) 書</p><p>  專業(yè):         年級(jí): </p><p&g

3、t;  畢 業(yè) 設(shè) 計(jì) 開 題 報(bào) 告</p><p><b>  中文摘要</b></p><p>  在日常生活及工農(nóng)業(yè)生產(chǎn)中,對(duì)溫度的檢測(cè)及控制時(shí)常顯得極其重要。因此,對(duì)數(shù)顯溫度計(jì)的設(shè)計(jì)有著實(shí)際意義和廣泛的應(yīng)用。本文介紹一種利用單片機(jī)實(shí)現(xiàn)對(duì)溫度智能控制及顯示的方案。本畢業(yè)設(shè)計(jì)主要研究的是高精度的數(shù)字溫度計(jì)的設(shè)計(jì),繼而實(shí)現(xiàn)對(duì)對(duì)象的測(cè)溫。測(cè)溫系統(tǒng)主要包括供電電源、數(shù)

4、字溫度傳感器的數(shù)據(jù)采集電路、LED顯示電路、蜂鳴器報(bào)警電路、繼電器控制、按鍵電路、單片機(jī)主板電路,數(shù)字溫度傳感器的數(shù)據(jù)采集電路與單片機(jī)主板電路是整個(gè)系統(tǒng)的關(guān)鍵。高精度數(shù)字溫度計(jì)的測(cè)溫過(guò)程,由數(shù)字溫度傳感器采集所測(cè)對(duì)象的溫度,并將溫度傳輸?shù)絾纹瑱C(jī),最終由液晶顯示器顯示溫度值。該數(shù)顯溫度計(jì)要求測(cè)溫范圍為-55℃~+125℃,精度誤差在0.5℃以內(nèi),LED數(shù)碼管直讀顯示。數(shù)字式溫度計(jì)完全可以代替?zhèn)鹘y(tǒng)的水銀溫度計(jì),可以在家庭中以及工業(yè)中都可以應(yīng)

5、用,實(shí)用價(jià)值很高。</p><p>  關(guān)鍵詞: 單片機(jī); ds18b20; LED顯示; 數(shù)字溫度計(jì) </p><p><b>  ABSTRACT</b></p><p>  In our daily life and industrial and agricultural production, the detection and co

6、ntrol of the temperature is extremely important. Therefore, the design of the digital thermometer has practical significance and a wide range of applications. This article describes a programmer which use a microcontroll

7、er to achieve and display the right temperature by intelligent control .This programmer mainly consists by temperature control sensors, MCU, LED display modules circuit. The main aim of this thesis </p><p> 

8、 KEY WORDS:MCU; DS18B20;LED display;Digital thermometer</p><p><b>  目 錄</b></p><p>  畢 業(yè) 設(shè) 計(jì)( 論 文 )評(píng) 語(yǔ)I</p><p>  畢業(yè)設(shè)計(jì)(論文)答辯記錄成績(jī)及評(píng)語(yǔ)II</p><p>  畢 業(yè) 設(shè)

9、 計(jì) 任 務(wù) 書III</p><p>  畢 業(yè) 設(shè) 計(jì) 開 題 報(bào) 告IV</p><p><b>  中文摘要V</b></p><p>  ABSTRACTVI</p><p><b>  目 錄i</b></p><p><b>  第一章

10、 引言1</b></p><p>  第二章 方案選擇及總體設(shè)計(jì)2</p><p>  2.1 數(shù)字溫度計(jì)設(shè)計(jì)方案論證2</p><p>  2.1.1 方案一2</p><p>  2.1.2 方案二2</p><p>  2.1.3 終選2</p><p>  2.2

11、 系統(tǒng)概述3</p><p>  2.3 總體設(shè)計(jì)3</p><p>  2.3.1 實(shí)現(xiàn)功能3</p><p>  2.3.2 擴(kuò)展功能4</p><p>  第三章 硬件設(shè)計(jì)5</p><p>  3.1 總體電路設(shè)計(jì)5</p><p>  3.1.1 主控制器(STC89C52

12、)5</p><p>  3.1.2 顯示電路9</p><p>  3.1.3 報(bào)警溫度調(diào)整按鍵9</p><p>  3.1.4報(bào)警電路11</p><p>  3.1.5控制加溫電路12</p><p>  3.2 DS18B20溫度傳感器12</p><p>  3.2.1溫

13、度傳感計(jì)DS18B20電路設(shè)計(jì)17</p><p>  第四章 程序流程圖設(shè)計(jì)19</p><p>  4.1 主程序19</p><p>  4.2 讀出溫度子程序20</p><p>  4.3 溫度轉(zhuǎn)換命令子程序20</p><p>  4.4 計(jì)算溫度子程序與報(bào)警程序21</p>&l

14、t;p>  4.5 顯示數(shù)據(jù)刷新子程序21</p><p>  4.6 按鍵掃描處理子程序22</p><p>  第五章 系統(tǒng)調(diào)試與運(yùn)行23</p><p><b>  第六章 結(jié)論24</b></p><p><b>  致 謝25</b></p><p

15、><b>  附 錄26</b></p><p>  A電路總原理圖26</p><p><b>  B程序清單27</b></p><p><b>  參考文獻(xiàn)36</b></p><p><b>  引言</b></p>&

16、lt;p>  溫度是日常生活、工業(yè)、醫(yī)學(xué)、環(huán)境保護(hù)、化工、石油等領(lǐng)域最常遇到的一個(gè)物理量。測(cè)量溫度的基本方法是使用溫度計(jì)直接讀取溫度。最常見(jiàn)到的測(cè)量溫度的工具是各種各樣的溫度計(jì),例如,水銀玻璃溫度計(jì),酒精溫度計(jì),熱電偶或熱電阻溫度計(jì)等。它們常常以刻度的形式表示溫度的高低,人們必須通過(guò)讀取刻度值的多少來(lái)測(cè)量溫度。利用單片機(jī)和溫度傳感器構(gòu)成的電子式智能溫度計(jì)就可以直接測(cè)量溫度,得到溫度的數(shù)字值,既簡(jiǎn)單方便,又直觀準(zhǔn)確。</p&g

17、t;<p>  在傳統(tǒng)的溫度測(cè)量系統(tǒng)設(shè)計(jì)中,往往采用模擬技術(shù)進(jìn)行設(shè)計(jì),這樣就不可避免地遇到諸如引線誤差補(bǔ)償、多點(diǎn)測(cè)量中的切換誤差和信號(hào)調(diào)理電路的誤差等問(wèn)題;而其中某一環(huán)節(jié)處理不當(dāng),就可能造成整個(gè)系統(tǒng)性能的下降。隨著現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,特別是大規(guī)模集成電路設(shè)計(jì)技術(shù)的發(fā)展,微型化、集成化、數(shù)字化正成為傳感器發(fā)展的一個(gè)重要方向。美國(guó)Dallas半導(dǎo)體公司推出的數(shù)字溫度傳感器DSl8B20,具有獨(dú)特的單總線接口,僅需要占用一個(gè)

18、通用I/O端口即可完成與微處理器的通信;用戶可編程設(shè)定9~12位的分辨率。以上特性使得DSl8B20非常適用于構(gòu)建高精度、多點(diǎn)溫度測(cè)量系統(tǒng)。</p><p>  本課題設(shè)計(jì)的數(shù)字溫度計(jì)選用DS18B20數(shù)字溫度傳感器,它與單片機(jī)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單、體積小等特點(diǎn),而且一條總線可連接多個(gè)器件,可以構(gòu)成一個(gè)低電壓低功耗的多點(diǎn)數(shù)字測(cè)溫系統(tǒng),十分方便,也適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。<

19、;/p><p><b>  方案選擇及總體設(shè)計(jì)</b></p><p>  數(shù)字溫度計(jì)設(shè)計(jì)方案論證</p><p><b>  方案一</b></p><p>  由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行

20、數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,其中還涉及到電阻與溫度的對(duì)應(yīng)值的計(jì)算,感溫電路比較麻煩。而且在對(duì)采集的信號(hào)進(jìn)行放大時(shí)容易受溫度的影響出現(xiàn)較大的偏差。</p><p><b>  方案二</b></p><p>  進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只

21、溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,電路簡(jiǎn)單,精度高,軟硬件都以實(shí)現(xiàn),而且使用單片機(jī)的接口便于系統(tǒng)的再擴(kuò)展,滿足設(shè)計(jì)要求。</p><p><b>  終選</b></p><p>  從以上兩種方案,很容易看出,采用方案二,數(shù)字溫度計(jì)選用DS18B20數(shù)字溫度傳感器,它與單片機(jī)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單、體積小等特點(diǎn),而且

22、一條總線可連接多個(gè)器件,可以構(gòu)成一個(gè)低電壓低功耗的多點(diǎn)數(shù)字測(cè)溫系統(tǒng),十分方便,也適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。</p><p><b>  故采用了方案二。</b></p><p><b>  系統(tǒng)概述</b></p><p>  在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱

23、電偶和熱電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬度支持,硬件電路[1]復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。</p><p>  故本設(shè)計(jì)使用集成傳感器DS18B20作為測(cè)溫傳感器。系統(tǒng)主要分為溫度采集模塊,數(shù)據(jù)傳輸模塊,報(bào)警模塊,LED顯示模塊和供電模塊。系統(tǒng)設(shè)計(jì)原理圖如圖2-1所示。</p><p>  圖2-1 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)原理圖

24、</p><p>  本數(shù)字溫度計(jì)設(shè)計(jì)采用美國(guó)DALLS半導(dǎo)體公司繼DS18B20之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫范圍為-55℃~+125℃,最大分辨率可達(dá)0.0625℃。DS18B20可以直接讀出被測(cè)溫度值,而且采用3線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。</p><p><b>  總體設(shè)計(jì)</b>&l

25、t;/p><p>  2.3.1 實(shí)現(xiàn)功能</p><p>  *采用數(shù)字溫度傳感器,基于單片機(jī)的數(shù)字溫度計(jì),本溫度計(jì)屬 于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。</p><p>  *采集到的溫度數(shù)據(jù)通過(guò)數(shù)碼管顯示出來(lái),采集的溫度范圍為0到99度,精確到1度。</p><p>  2.3.2 擴(kuò)展功能<

26、;/p><p>  *測(cè)溫范圍 -55~~+125 ℃。</p><p>  *誤差±0.5℃以內(nèi)。采用LED數(shù)碼管直讀顯示。</p><p>  * 溫度上下限調(diào)節(jié)功能:能夠調(diào)節(jié)測(cè)溫范圍為-55~+125 ℃的上線溫度和下線溫度</p><p>  * 報(bào)警功能:能在上限和下限溫度時(shí)蜂鳴器報(bào)警發(fā)光二極管閃爍并控制繼電器的開閉;<

27、/p><p>  * LED數(shù)碼管直讀顯示,當(dāng)溫度為“負(fù)”,則顯示負(fù)號(hào);最低位顯示攝氏度符號(hào)“C”</p><p><b>  硬件設(shè)計(jì)</b></p><p><b>  總體電路設(shè)計(jì)</b></p><p>  溫度計(jì)電路設(shè)計(jì)原理圖如圖2-1所示,控制器使用單片機(jī),溫度傳感器使用DS18B20,用4

28、位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。采用USB燒入程序及供電,用12M晶振。電路還包括按鍵電路,復(fù)位電路,報(bào)警電路,控制加溫電路,單片機(jī)外設(shè)電路等。整個(gè)系統(tǒng)的原理圖如下圖所示:</p><p>  主控制器(STC89C52)</p><p>  STC89C52 是低電壓, 高性能 CMOS 8 位單片機(jī), 片內(nèi)含 8k bytes 的可反復(fù)擦寫的 Flash 只讀程序存儲(chǔ)器和

29、256 bytes 的隨機(jī)存取數(shù) 據(jù)存儲(chǔ)器(RAM) ,器件采用高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn) MCS-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容, 片內(nèi)置通用 8 位中央處理器 (CPU)和 Flash 存儲(chǔ)單元,功能強(qiáng)大 STC89C52 單片機(jī)適合于許多 較為復(fù)雜控制應(yīng)用場(chǎng)合。STC89C52 單片機(jī)為 40 引腳雙列直插芯片, 有四個(gè) I/O 口 P0、P1、P2、P3,每一條 I/O 線都能獨(dú)立地作輸出或輸 入。STC89

30、C52 PDIP 管腳封裝,如圖 3-1所示。</p><p><b>  圖3-1</b></p><p>  STC89c52 包含以下部分:(1)一個(gè) 8 位微處理器 CPU </p><p> ?。?)片內(nèi)數(shù)據(jù)存儲(chǔ)器 RAM 和特殊功能寄存器 SFR </p><p> ?。?)片內(nèi)程序存儲(chǔ)器 ROM <

31、/p><p>  (4)兩個(gè)定時(shí)/計(jì)數(shù)器 T0、T1,可用作定時(shí)器,也可用以對(duì)外部脈 沖進(jìn)行計(jì)數(shù) </p><p> ?。?)四個(gè) 8 位可編程的并行 I/O 端口,每個(gè)端口既可作輸入,也可 作輸出</p><p> ?。?)一個(gè)串行端口,用于數(shù)據(jù)的串行通信 </p><p> ?。?)中斷控制系統(tǒng) 、</p><p>&

32、lt;b> ?。?)內(nèi)部時(shí)鐘電路</b></p><p>  STC89c52部分引腳說(shuō)明:</p><p>  1. 時(shí)鐘電路引腳XTAL1 和XTAL2:</p><p>  XTAL2(18 腳):接外部晶體和微調(diào)電容的一端;在8051 片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時(shí)鐘電路時(shí),該引腳輸入外部

33、時(shí)鐘脈沖。</p><p>  要檢查8051/8031 的振蕩電路是否正常工作,可用示波器查看XTAL2 端是否有脈沖信號(hào)輸出。</p><p>  XTAL1(19 腳):接外部晶體和微調(diào)電容的另一端;在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地。</p><p>  控制信號(hào)引腳RST,ALE,PSEN 和EA:</p>

34、<p>  RST/VPD(9 腳):RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持備用電源的輸入端。當(dāng)主電源Vcc 發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V 電源自動(dòng)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以完成復(fù)位操作。RST 引腳的第二功能是VPD,即接入RST 端,為RAM 提供備用電源,以保證存儲(chǔ)在RAM 中的信息不丟失,從而合復(fù)位后能繼續(xù)正常運(yùn)行。</p><p>  ALE

35、/PROG(30 腳):地址鎖存允許信號(hào)端。當(dāng)8051 上電正常工作后,ALE 引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率fOSC 的1/6。CPU 訪問(wèn)片外存儲(chǔ)器時(shí),ALE 輸出信號(hào)作為鎖存低8 位地址的控制信號(hào)。</p><p>  平時(shí)不訪問(wèn)片外存儲(chǔ)器時(shí),ALE 端也以振蕩頻率的1/6 固定輸出正脈沖,因而ALE 信號(hào)可以用作對(duì)外輸出時(shí)鐘或定時(shí)信號(hào)。如果想確定8051/8031 芯片的好壞,可用示波器查

36、看ALE端是否有脈沖信號(hào)輸出。如有脈沖信號(hào)輸出,則8051/8031 基本上是好的。</p><p>  ALE 端的負(fù)載驅(qū)動(dòng)能力為8 個(gè)LS 型TTL(低功耗甚高速TTL)負(fù)載。</p><p>  此引腳的第二功能PROG 在對(duì)片內(nèi)帶有4KB EPROM 的8751 編程寫入(固化程序)時(shí),作為編程脈沖輸入端。</p><p>  PSEN(29 腳):程序存儲(chǔ)

37、允許輸出信號(hào)端。在訪問(wèn)片外程序存儲(chǔ)器時(shí),此端定時(shí)輸出負(fù)脈沖作為讀片外存儲(chǔ)器的選通信號(hào)。此引肢接EPROM 的OE 端(見(jiàn)后面幾章任何一個(gè)小系統(tǒng)硬件圖)。PSEN 端有效,即允許讀出EPROM/ROM 中的指令碼。PSEN 端同樣可驅(qū)動(dòng)8 個(gè)LS 型TTL 負(fù)載。要檢查一個(gè)8051/8031 小系統(tǒng)上電后CPU 能否正常到EPROM/ROM 中讀取指令碼,也可用示波器看PSEN 端有無(wú)脈沖輸出。如有則說(shuō)明基本上工作正常。</p>

38、;<p>  EA/Vpp(31 腳):外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端。當(dāng)EA 引腳接高電平時(shí),CPU只訪問(wèn)片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令,但當(dāng)PC(程序計(jì)數(shù)器)的值超過(guò)0FFFH(對(duì)8751/8051 為4K)時(shí),將自動(dòng)轉(zhuǎn)去執(zhí)行片外程序存儲(chǔ)器內(nèi)的程序。當(dāng)輸入信號(hào)EA 引腳接低電平(接地)時(shí),CPU 只訪問(wèn)外部EPROM/ROM 并執(zhí)行外部程序存儲(chǔ)器中的指令,而不管是否有片內(nèi)程序存儲(chǔ)器

39、。對(duì)于無(wú)片內(nèi)ROM 的8031 或8032,需外擴(kuò)EPROM,此時(shí)必須將EA 引腳接地。此引腳的第二功能是Vpp 是對(duì)8751 片內(nèi)EPROM固化編程時(shí),作為施加較高編程電壓(一般12V~21V)的輸入端。</p><p>  3. 輸入/輸出端口P0/P1/P2/P3:</p><p>  P0口(P0.0~P0.7,39~32 腳):P0口是一個(gè)漏極開路的8 位準(zhǔn)雙向I/O口。作為漏極

40、開路的輸出端口,每位能驅(qū)動(dòng)8 個(gè)LS 型TTL 負(fù)載。當(dāng)P0 口作為輸入口使用時(shí),應(yīng)先向口鎖存器(地址80H)寫入全1,此時(shí)P0 口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時(shí)要先寫1,這就是準(zhǔn)雙向口的含義。在CPU 訪問(wèn)片外存儲(chǔ)器時(shí),P0口分時(shí)提供低8 位地址和8 位數(shù)據(jù)的復(fù)用總線。在此期間,P0口內(nèi)部上拉電阻有效。</p><p>  P1口(P1.0~P1.7,1~8 腳):P1口是一個(gè)帶內(nèi)部上拉電阻的

41、8 位準(zhǔn)雙向I/O口。P1口每位能驅(qū)動(dòng)4 個(gè)LS 型TTL 負(fù)載。在P1口作為輸入口使用時(shí),應(yīng)先向P1口鎖存地址(90H)寫入全1,此時(shí)P1口引腳由內(nèi)部上拉電阻拉成高電平。</p><p>  P2口(P2.0~P2.7,21~28 腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8 位準(zhǔn)雙向I/O口。P口每位能驅(qū)動(dòng)4個(gè)LS 型TTL 負(fù)載。在訪問(wèn)片外EPROM/RAM 時(shí),它輸出高8 位地址。</p><

42、p>  P3口(P3.0~P3.7,10~17 腳):P3口是一個(gè)帶內(nèi)部上拉電阻的8 位準(zhǔn)雙向I/O口。P3口每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口與其它I/O 端口有很大的區(qū)別,它的每個(gè)引腳都有第二功能,如下:</p><p>  P3.0:(RXD)串行數(shù)據(jù)接收。</p><p>  P3.1:(RXD)串行數(shù)據(jù)發(fā)送。</p><p>  P3.2:(IN

43、T0#)外部中斷0輸入。</p><p>  P3.3:(INT1#)外部中斷1輸入。</p><p>  P3.4:(T0)定時(shí)/計(jì)數(shù)器0的外部計(jì)數(shù)輸入。</p><p>  P3.5:(T1)定時(shí)/計(jì)數(shù)器1的外部計(jì)數(shù)輸入。</p><p>  P3.6:(WR#)外部數(shù)據(jù)存儲(chǔ)器寫選通。</p><p>  P3.7

44、:(RD#)外部數(shù)據(jù)存儲(chǔ)器讀選通</p><p><b>  顯示電路</b></p><p>  顯示電路采用8位共陰極LED數(shù)碼管其中的前5位,P0口高電平有效,作為段碼輸出并作為數(shù)碼管的驅(qū)動(dòng)。P2口的低3位作為數(shù)碼管的位選端。采用動(dòng)態(tài)掃描的方式顯示。如圖3-2所示。</p><p>  1. 74HC573 11腳接ACC,鎖存不起作

45、用,相當(dāng)于直通。相應(yīng)的段賦值“1”有效。</p><p>  2. 74HC138 ABC賦值 0~7,則輸出端分別是Y0~Y7 置“0”,如P2=0,則Y0=0; P2=6;則Y6=0;即選通第七個(gè)數(shù)碼管。</p><p><b>  圖3-2顯示電路</b></p><p><b>  報(bào)警溫度調(diào)整按鍵</b>&l

46、t;/p><p>  本系統(tǒng)設(shè)計(jì)四個(gè)按鍵,采用查詢方式,當(dāng)跳線連接1和2是用的事獨(dú)立按鍵,S1對(duì)應(yīng)P3.0口,當(dāng)按第一次按下S1時(shí),可以用S2或者S3設(shè)置上限報(bào)警溫度,再次按下S1則可以用S2或者S3設(shè)置下限報(bào)警溫度,第三次按下顯示當(dāng)前測(cè)到的溫度值,還有按下復(fù)位鍵S17則還原為默認(rèn)的上下限報(bào)警溫度。均采用軟 件消抖。硬件連接如下圖所示:</p><p><b>  圖3-3按鍵電路

47、</b></p><p><b>  復(fù)位按鍵;</b></p><p>  圖3-4 復(fù)位按鍵電路圖</p><p><b>  3.1.4報(bào)警電路</b></p><p><b>  喇叭電路圖</b></p><p><b>

48、;  圖3-5</b></p><p>  喇叭通過(guò)UM2003的輸入端in7連接到到單片機(jī)的P1.7口。喇叭不同于蜂鳴器,不能直接賦值‘1’或‘0’需要直續(xù)賦值變化的電平。</p><p>  Led等的正極都是接+5V的高電平,所以負(fù)極低電平時(shí)led燈亮,反之則滅。Led燈D2連接單片機(jī)P1.0口,當(dāng)溫度超過(guò)設(shè)定的上下限溫度時(shí)D2閃爍報(bào)警。</p><p

49、>  當(dāng)達(dá)到上下限溫度時(shí)報(bào)警led燈閃爍電路如下:</p><p>  圖3-6 LED電路</p><p>  3.1.5控制加溫電路</p><p>  RELAY-SPDT這個(gè)繼電器是控制加溫電路工作狀態(tài)的,插座J12的1、2腳連到加溫電路的電源兩端,繼電器觸電K1作為加溫電路的電源開關(guān)。當(dāng)溫度超過(guò)設(shè)定的上下限溫度時(shí),程序控制繼電器自動(dòng)打開,控制加溫或

50、者減溫系統(tǒng)進(jìn)行工作。當(dāng)溫度恢復(fù)正常值,則繼電器自動(dòng)關(guān)閉。</p><p>  圖3-7 繼電器控制電路</p><p>  DS18B20溫度傳感器</p><p>  DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值

51、讀數(shù)方式。</p><p>  DS18B20的性能特點(diǎn)如下:</p><p>  ·獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p>  ·實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫;</p><p>  ·可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p>  &

52、#183;在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào);</p><p>  ·溫度以9或12位數(shù)字量讀出;</p><p>  ·報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;</p><p>  ·負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能工作。</p><p>  圖3

53、-7 DS18B20內(nèi)部結(jié)構(gòu)圖</p><p>  DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3-7所示。</p><p>  64位ROM的位結(jié)構(gòu)如圖3-8所示。開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件

54、寫入戶報(bào)警上下限。</p><p>  MSB LSB MSB LSB MSB LSB</p><p>  圖3-8 64位ROM結(jié)構(gòu)圖</p><p>  DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)

55、如圖3所示。 頭2個(gè)字節(jié)包含測(cè)量得的溫度信息,第3和第4字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié)為配置寄存器[9],它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辯率。</p><p>  DS18B20工作時(shí)按此寄存器中的分辯率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如圖3-8所示。低5位一直為1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模

56、式。</p><p>  在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辯率,定義方法見(jiàn)表1。</p><p><b>  1字節(jié)</b></p><p><b>  2字節(jié)</b></p><p>  4字節(jié) TH用戶字節(jié)1</p&

57、gt;<p>  5字節(jié) TH用戶字節(jié)2</p><p>  6字節(jié) EEROM</p><p><b>  7字節(jié)</b></p><p><b>  8字節(jié)</b></p><p><b>  9字節(jié)</b></p><p>

58、;  圖3-9 高速暫存RAM結(jié)構(gòu)圖 圖3-10 配置寄存器</p><p>  表1 DS18B20分辯率的定義規(guī)定</p><p>  由表1可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且設(shè)定的分辯率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辯率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。</p><p>  高速暫存RAM的

59、第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。轉(zhuǎn)換完成后溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。溫度值格式如圖4-6所示。</p><p>  當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí)。表示測(cè)得的溫度值為負(fù)值,要先將被補(bǔ)碼變成原

60、碼,再計(jì)算十進(jìn)制值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。</p><p><b>  LS字節(jié)</b></p><p><b>  MS字節(jié)</b></p><p>  圖3-11溫度數(shù)據(jù)值格式</p><p>  DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比

61、較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。</p><p>  主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p>  DS18B20的測(cè)量原理如圖3-11所示。圖中低溫度系數(shù)晶振的振蕩頻率受

62、溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),</p><p>  表2 DS18B20溫度與測(cè)得值對(duì)應(yīng)表</p><p>  進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首

63、先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</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í)溫

64、度寄存器中的數(shù)值就是所測(cè)溫度值。圖3-11中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線形性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值達(dá)到被測(cè)溫度值。</p><p>  另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)—>發(fā)ROM功

65、能命令—>發(fā)存儲(chǔ)器操作命令—>處理數(shù)據(jù)。</p><p>  4.5 DS18B20的其他介紹</p><p>  DS18B20的存儲(chǔ)器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,以及一個(gè)配置寄存器。存儲(chǔ)器能完整的確定一線端口的通訊,數(shù)字開始用寫寄存器的命令寫進(jìn)寄存器,接著也可以用讀寄存器的命令來(lái)確認(rèn)這些數(shù)字。當(dāng)確認(rèn)以后就可以用復(fù)制寄存器的

66、命令來(lái)將這些數(shù)字轉(zhuǎn)移到可電擦除RAM中。當(dāng)修改過(guò)寄存器中的數(shù)時(shí),這個(gè)過(guò)程能確保數(shù)字的完整性。</p><p>  高速暫存器RAM是由8個(gè)字節(jié)的存儲(chǔ)器組成;第一和第二個(gè)字節(jié)是溫度的顯示位。第三和第四個(gè)字節(jié)是復(fù)制TH和TL,同時(shí)第三和第四個(gè)字節(jié)的數(shù)字可以更新;第五個(gè)字節(jié)是復(fù)制配置寄存器,同時(shí)第五個(gè)字節(jié)的數(shù)字可以更新;六、七、八三個(gè)字節(jié)是計(jì)算機(jī)自身使用。用讀寄存器的命令能讀出第九個(gè)字節(jié),這個(gè)字節(jié)是對(duì)前面的八個(gè)字節(jié)進(jìn)行

67、校驗(yàn)</p><p>  DS18B20采用一線通信接口。因?yàn)橐痪€通信接口,必須在先完成ROM設(shè)定,否則記憶和控制功能將無(wú)法使用。主要首先提供以下功能命令之一:讀ROM,ROM匹配,搜索ROM,跳過(guò)ROM,報(bào)警檢查。這些指令操作作用在沒(méi)有一個(gè)器件的64位光刻ROM序列號(hào),可以在掛在一線上多個(gè)器件選定某一個(gè)器件,同時(shí),總線也可以知道總線上掛有有多少,什么樣的設(shè)備。</p><p>  DS1

68、8B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式。單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上拉。DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當(dāng)VDD端口接3.0V—5.5V的電壓時(shí)是使用外部電源;當(dāng)VDD端口接地時(shí)使用了內(nèi)部的寄生電源。無(wú)論是內(nèi)部寄生電源還是外

69、部供電,I/O口線要接5KΩ左右的上拉電阻。</p><p>  當(dāng)DS18B20處于存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10µs。采用寄生電源供電方式時(shí)VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。</p><p>  由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT8

70、9C2051單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議。因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。 </p><p>  由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備

71、。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p>  DS18B20的復(fù)位時(shí)序</p><p>  DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。 對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸

72、到單總線上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60µs才能完成。DS18B20的寫時(shí)序 對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過(guò)程。 對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60µs,保證DS18B20能夠在15µs到45µs之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15µs之內(nèi)就得

73、釋放單總線。</p><p>  3.2.1溫度傳感計(jì)DS18B20電路設(shè)計(jì)</p><p>  DS18B20 最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來(lái)完 成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方 式時(shí), VDD 和GND 均接地, 他在需要遠(yuǎn)程溫度探測(cè)和空間受限的場(chǎng)合特別有用, 原理是當(dāng) 1 W ir

74、e 總線的信號(hào)線DQ 為高電平時(shí), 竊取信號(hào)能量給DS18B20 供電, 同時(shí)一部分能量給 內(nèi)部電容充電, 當(dāng)DQ為低電平時(shí)釋放能量為DS18B20 供電。但寄生電源方式需要強(qiáng)上拉電 路, 軟件控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)到E2PROM 時(shí)) , 同時(shí)芯片的性 能也有所降低。因此, 在條件允許的場(chǎng)合, 盡量采用外供電方式。無(wú)論是內(nèi)部寄生電源還是 外部供電,I/O口線要接5KΩ左右的上拉電。在這里采用前者方式供電。DS18

75、B20與芯片連 接電路如圖 3.12所示:</p><p>  圖3.12圖中 DS18B20與單片機(jī)的連接外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電 路也比較簡(jiǎn)單, 可以開發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系統(tǒng)。 在開發(fā)中使用外部電源供電方式, 畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電 源電壓范圍的優(yōu)點(diǎn),即使電源電壓VCC 降到

76、3V 時(shí),依然能夠保證溫度量精度。 由于DS18B20 只有一根數(shù)據(jù)線,因此它和主機(jī)(單片機(jī))通信是需要串行通信,而 STC89C52 有兩個(gè)串行端口,所以可以不用軟件來(lái)模擬實(shí)現(xiàn)。經(jīng)過(guò)單線接口訪問(wèn)DC18B20 必 須遵循如下協(xié)議:初始化、ROM 操作命令、存儲(chǔ)器操作命令和控制操作。要使傳感器工作, 一切處理均嚴(yán)格按照時(shí)序</p><p><b>  程序流程圖設(shè)計(jì)</b></p>

77、;<p>  系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序、按鍵查詢程序等等。系統(tǒng)程序采用單片機(jī)C語(yǔ)言編寫。程序簡(jiǎn)潔,可靠性高,可維護(hù)性好。</p><p><b>  主程序</b></p><p>  主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行

78、一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖4.1所示。</p><p>  圖4.1 主程序流程圖</p><p><b>  讀出溫度子程序</b></p><p>  讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖4.2示</p><

79、;p>  圖4-3溫度轉(zhuǎn)換命令流程圖</p><p>  圖4-2 讀出溫度子程序流程圖</p><p><b>  溫度轉(zhuǎn)換命令子程序</b></p><p>  溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖

80、4.3所示</p><p>  計(jì)算溫度子程序與報(bào)警程序</p><p>  計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖4.4所示。</p><p><b>  顯示數(shù)據(jù)刷新子程序</b></p><p>  顯示數(shù)據(jù)刷新子程序主要是對(duì)分離后的溫度顯示數(shù)據(jù)進(jìn)行刷新操作,

81、當(dāng)標(biāo)志位位為1時(shí)將符號(hào)顯示位移入第一位。程序流程圖如圖4.5。</p><p>  圖4.4 計(jì)算溫度流程圖 圖4.5 顯示數(shù)據(jù)刷新流程圖</p><p><b>  按鍵掃描處理子程序</b></p><p>  按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為1時(shí),顯示設(shè)置溫度,否則顯示當(dāng)前溫度。如下圖4.6示。&l

82、t;/p><p>  圖4-6按鍵掃描處理圖</p><p><b>  系統(tǒng)調(diào)試與運(yùn)行</b></p><p>  本人主要負(fù)責(zé)的內(nèi)容是寫程序,所以系統(tǒng)的調(diào)試以程序?yàn)橹?。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬件的性檢驗(yàn),然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新等子程序的編程及調(diào)試,由于DS18B20與單片機(jī)

83、采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀寫編程時(shí)必須嚴(yán)格地保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)量結(jié)果。本程序采用單片機(jī)C語(yǔ)言編寫,用EWAVR-KS4編譯器編程調(diào)試。軟件調(diào)試到能顯示溫度值,而且在有溫度變化時(shí)顯示溫度能改變就基本完成。</p><p> ?。?5~+125℃的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低電壓供電特性可做成用電池供電的手持電子溫度計(jì)。</p><p>  

84、DS18B20溫度計(jì)還可以在高低溫報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)量控制等方面進(jìn)行應(yīng)用開發(fā),但在實(shí)際設(shè)計(jì)中應(yīng)注意以下問(wèn)題:</p><p>  (1)DS18B20工作時(shí)電流高達(dá)1.5mA,總線上掛接點(diǎn)數(shù)較多且同時(shí)進(jìn)行轉(zhuǎn)換時(shí),要考慮增加總線驅(qū)動(dòng),可用單片機(jī)端口在溫度轉(zhuǎn)換時(shí)導(dǎo)通一個(gè)MOSFET供電。</p><p> ?。?)連接DS18B20的總線電纜是有長(zhǎng)度限制的,因此在用DS18B20進(jìn)行長(zhǎng)距離測(cè)溫

85、系統(tǒng)設(shè)計(jì)時(shí),要充分考慮總線分布電容和阻抗匹配等問(wèn)題。</p><p> ?。?)在DS18B20測(cè)溫度程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,當(dāng)程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán),這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)要給予一定的重視。 </p><p><b>  

86、結(jié)論</b></p><p>  本設(shè)計(jì)方案達(dá)到了任務(wù)書的要求并擴(kuò)展了功能,實(shí)現(xiàn)了數(shù)字溫度計(jì)的設(shè)計(jì),實(shí)現(xiàn)了較為精確的測(cè)溫功能:</p><p> ?。?)對(duì)被測(cè)對(duì)象的測(cè)溫結(jié)果精度可以達(dá)到±0.5°C,突出了本設(shè)計(jì)的特點(diǎn);</p><p> ?。?)所測(cè)溫度值的范圍在-55℃~+125℃,符合指定工作溫度范圍;</p>&

87、lt;p> ?。?)由蜂鳴器報(bào)警電路控制的報(bào)警功能也調(diào)試實(shí)現(xiàn),并在LED上正確顯示了溫度值,繼電器控制成功; </p><p>  本設(shè)計(jì)中的數(shù)字溫度計(jì)直接測(cè)溫的方式,該溫度計(jì)的靈敏度高、響應(yīng)時(shí)間短、抗干擾能力強(qiáng),而且具有測(cè)量范圍大、讀數(shù)方便等優(yōu)點(diǎn)。在接通電源時(shí),數(shù)碼管上顯示的數(shù)字會(huì)不清晰或者出現(xiàn)抖動(dòng),這是由于電源電壓不穩(wěn)或是接觸不良所引起,可以使用接濾波電容的方法來(lái)消除上述現(xiàn)象。該系統(tǒng)所用的IC很少

88、故成本低,器件均為常用元件,有很高的工程應(yīng)用價(jià)值。如稍加改動(dòng)程序,本系統(tǒng)做成帶有控制功能的溫控系統(tǒng)。</p><p>  由于時(shí)間緊迫及本人水平有限,設(shè)計(jì)當(dāng)中還有許多不足之處,程序的編寫也還不夠簡(jiǎn)潔,希望在以后的學(xué)習(xí)中能學(xué)到更多的知識(shí),使自己的設(shè)計(jì)更上一層樓。</p><p><b>  致 謝</b></p><p>  本論文的工作是

89、在我的導(dǎo)師cc的悉心指導(dǎo)下完成的,xx老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和科學(xué)的工作方法給了我極大的幫助和影響。在此衷心感謝三年來(lái)xx老師對(duì)我的關(guān)心和指導(dǎo)。</p><p>  x老師悉心指導(dǎo)我們完成了畢業(yè)論文工作,在學(xué)習(xí)上和生活上都給予了我很大的關(guān)心和幫助,在此向xx老師表示衷心的謝意。</p><p>  龐教授對(duì)于我的論文提出了許多的寶貴意見(jiàn),在此表示衷心的感謝。</p><p&

90、gt;  在撰寫論文期間,xx等同學(xué)對(duì)我論文中的格式研究工作給予了熱情幫助,在此向他們表達(dá)我的感激之情。</p><p>  另外也感謝家人朋友,他們的理解和支持使我能夠在學(xué)校專心完成我的學(xué)業(yè)。</p><p><b>  附 錄</b></p><p><b>  A電路總原理圖:</b></p><

91、;p><b>  B程序清單:</b></p><p>  /***************************************************/</p><p>  #include <reg51.h></p><p>  #include <intrins.h>//_nop_();延時(shí)函數(shù)用

92、</p><p>  //#define dm P0 //段碼輸出口</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit RELAY = P1^1;</p><p>  sbit led1=P1

93、^2;</p><p>  sbit DQ=P1^3; //溫度輸入口</p><p>  sbit led=P1^0;</p><p>  sbit beep=P1^7; //蜂鳴器和指示燈</p><p>  sbit set=P3^0; //溫度設(shè)置切換鍵</p><p>  sbit add=P3^1; //溫

94、度加</p><p>  sbit dec=P3^2; //溫度減</p><p>  int temp1=0; //顯示當(dāng)前溫度和設(shè)置溫度的標(biāo)志位為0 時(shí)顯示當(dāng)前溫度</p><p><b>  uint h;</b></p><p>  uint temp;</p><p><b>

95、  uchar r;</b></p><p>  uchar high=29,low=15;</p><p>  uchar sign;</p><p>  uchar q=0;</p><p>  uchar tt=0;</p><p>  uchar scale;</p><p>

96、;  //**************溫度小數(shù)部分用查表法***********//</p><p>  uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};</p><p><b>  //小數(shù)斷碼表</b><

97、;/p><p>  uchar code table_dm[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};</p><p>  //共陰LED 段碼表"0" "1" "2" "3" "4" "5&qu

98、ot; "6" "7" "8" "9" "不亮" "-"</p><p>  //uchar code table_dm2[1]={0x39};</p><p>  uchar table_dm1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd

99、,0x87,0xff,0xef}; //個(gè)位帶小數(shù)點(diǎn)的斷碼表</p><p>  uchar data temp_data[2]={0x00,0x00}; //讀出溫度暫放</p><p>  uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //顯示單元數(shù)據(jù),共4 個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用</p><p>  /***

100、**************11us 延時(shí)函數(shù)*************************/</p><p>  void delay(uint t)</p><p><b>  {</b></p><p>  for (;t>0;t--);</p><p><b>  }</b><

101、;/p><p>  void scan()</p><p><b>  {</b></p><p><b>  int j;</b></p><p>  for(j=0;j<5;j++)</p><p><b>  {</b></p>&

102、lt;p>  switch (j)</p><p>  {delay(50);</p><p>  case 0: P0=0x39;P2=4;delay(100);</p><p>  case 1: P0=table_dm[display[0]];P2=3;delay(100);//xiaoshu</p><p>  case 2:

103、P0=table_dm1[display[1]];P2=2;delay(100);//gewei</p><p>  case 3: P0=table_dm[display[2]];P2=1;delay(100);//shiwei</p><p>  case 4: P0=table_dm[display[3]];P2=0;delay(100);//baiwei</p>&l

104、t;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //***************DS18B20 復(fù)位函數(shù)************************/</p><p>  ow_re

105、set(void)</p><p><b>  {</b></p><p>  char presence=1;</p><p>  while(presence)</p><p><b>  {</b></p><p>  while(presence)</p>

106、<p><b>  {</b></p><p>  DQ=1;_nop_();_nop_();//從高拉倒低</p><p><b>  DQ=0;</b></p><p>  delay(50); //550 us</p><p><b>  DQ=1;</b>

107、</p><p>  delay(6); //66 us</p><p>  presence=DQ; //presence=0 復(fù)位成功,繼續(xù)下一步</p><p><b>  }</b></p><p>  delay(45); //延時(shí)500 us</p><p>  presence=~D

108、Q;</p><p><b>  }</b></p><p>  DQ=1; //拉高電平</p><p><b>  }</b></p><p>  /****************DS18B20 寫命令函數(shù)************************/</p><p&g

109、t;  //向1-WIRE 總線上寫1 個(gè)字節(jié)</p><p>  void write_byte(uchar val)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=8;i>0;i--)</p>&

110、lt;p><b>  {</b></p><p>  DQ=1;_nop_();_nop_(); //從高拉倒低</p><p>  DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us</p><p>  DQ=val&0x01; //最低位移出</p><p>  d

111、elay(6); //66 us</p><p>  val=val/2; //右移1 位</p><p><b>  }</b></p><p><b>  DQ=1;</b></p><p><b>  delay(1);</b></p><p>&

112、lt;b>  }</b></p><p>  /****************DS18B20 讀1 字節(jié)函數(shù)************************/</p><p>  //從總線上取1 個(gè)字節(jié)</p><p>  uchar read_byte(void)</p><p><b>  {</b&

113、gt;</p><p><b>  uchar i;</b></p><p>  uchar value=0;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p>  DQ=1;_nop_();_nop_();&

114、lt;/p><p>  value>>=1;</p><p>  DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us</p><p>  DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us</p><p>  if(DQ)value|=0x80;</p&

115、gt;<p>  delay(6); //66 us</p><p><b>  }</b></p><p><b>  DQ=1;</b></p><p>  return(value);</p><p><b>  }</b></p><p

116、>  /*****************讀出溫度函數(shù)************************/</p><p>  read_temp()</p><p><b>  {</b></p><p>  ow_reset(); //總線復(fù)位</p><p>  delay(200);</p>&

117、lt;p>  write_byte(0xcc); //發(fā)命令</p><p>  write_byte(0x44); //發(fā)轉(zhuǎn)換命令</p><p>  ow_reset();</p><p><b>  delay(1);</b></p><p>  write_byte(0xcc); //發(fā)命令</p&g

118、t;<p>  write_byte(0xbe);</p><p>  temp_data[0]=read_byte(); //讀溫度值的第字節(jié)</p><p>  temp_data[1]=read_byte(); //讀溫度值的高字節(jié)</p><p>  temp=temp_data[1];</p><p><b>

119、;  temp<<=8;</b></p><p>  temp=temp|temp_data[0]; // 兩字節(jié)合成一個(gè)整型變量。</p><p>  return temp; //返回溫度值</p><p><b>  }</b></p><p>  /****************溫度數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論