

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于STC89C52單片機的溫度報警器的設計與制作</p><p> Design and production based STC89C52 microcontroller temperature alarm</p><p> 專 業(yè):應用電子技術</p><p><b> 學 生: </b></
2、p><p><b> 指導教師:</b></p><p> 畢 業(yè) 設 計( 論 文 )評 語</p><p> 畢業(yè)設計(論文)答辯記錄成績及評語</p><p> 畢 業(yè) 設 計 任 務 書</p><p> 專業(yè): 年級: </p><p&g
3、t; 畢 業(yè) 設 計 開 題 報 告</p><p><b> 中文摘要</b></p><p> 在日常生活及工農業(yè)生產中,對溫度的檢測及控制時常顯得極其重要。因此,對數顯溫度計的設計有著實際意義和廣泛的應用。本文介紹一種利用單片機實現對溫度智能控制及顯示的方案。本畢業(yè)設計主要研究的是高精度的數字溫度計的設計,繼而實現對對象的測溫。測溫系統主要包括供電電源、數
4、字溫度傳感器的數據采集電路、LED顯示電路、蜂鳴器報警電路、繼電器控制、按鍵電路、單片機主板電路,數字溫度傳感器的數據采集電路與單片機主板電路是整個系統的關鍵。高精度數字溫度計的測溫過程,由數字溫度傳感器采集所測對象的溫度,并將溫度傳輸到單片機,最終由液晶顯示器顯示溫度值。該數顯溫度計要求測溫范圍為-55℃~+125℃,精度誤差在0.5℃以內,LED數碼管直讀顯示。數字式溫度計完全可以代替?zhèn)鹘y的水銀溫度計,可以在家庭中以及工業(yè)中都可以應
5、用,實用價值很高。</p><p> 關鍵詞: 單片機; ds18b20; LED顯示; 數字溫度計 </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è) 設 計( 論 文 )評 語I</p><p> 畢業(yè)設計(論文)答辯記錄成績及評語II</p><p> 畢 業(yè) 設
9、 計 任 務 書III</p><p> 畢 業(yè) 設 計 開 題 報 告IV</p><p><b> 中文摘要V</b></p><p> ABSTRACTVI</p><p><b> 目 錄i</b></p><p><b> 第一章
10、 引言1</b></p><p> 第二章 方案選擇及總體設計2</p><p> 2.1 數字溫度計設計方案論證2</p><p> 2.1.1 方案一2</p><p> 2.1.2 方案二2</p><p> 2.1.3 終選2</p><p> 2.2
11、 系統概述3</p><p> 2.3 總體設計3</p><p> 2.3.1 實現功能3</p><p> 2.3.2 擴展功能4</p><p> 第三章 硬件設計5</p><p> 3.1 總體電路設計5</p><p> 3.1.1 主控制器(STC89C52
12、)5</p><p> 3.1.2 顯示電路9</p><p> 3.1.3 報警溫度調整按鍵9</p><p> 3.1.4報警電路11</p><p> 3.1.5控制加溫電路12</p><p> 3.2 DS18B20溫度傳感器12</p><p> 3.2.1溫
13、度傳感計DS18B20電路設計17</p><p> 第四章 程序流程圖設計19</p><p> 4.1 主程序19</p><p> 4.2 讀出溫度子程序20</p><p> 4.3 溫度轉換命令子程序20</p><p> 4.4 計算溫度子程序與報警程序21</p>&l
14、t;p> 4.5 顯示數據刷新子程序21</p><p> 4.6 按鍵掃描處理子程序22</p><p> 第五章 系統調試與運行23</p><p><b> 第六章 結論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> 參考文獻36</b></p><p><b> 引言</b></p>&
16、lt;p> 溫度是日常生活、工業(yè)、醫(yī)學、環(huán)境保護、化工、石油等領域最常遇到的一個物理量。測量溫度的基本方法是使用溫度計直接讀取溫度。最常見到的測量溫度的工具是各種各樣的溫度計,例如,水銀玻璃溫度計,酒精溫度計,熱電偶或熱電阻溫度計等。它們常常以刻度的形式表示溫度的高低,人們必須通過讀取刻度值的多少來測量溫度。利用單片機和溫度傳感器構成的電子式智能溫度計就可以直接測量溫度,得到溫度的數字值,既簡單方便,又直觀準確。</p&g
17、t;<p> 在傳統的溫度測量系統設計中,往往采用模擬技術進行設計,這樣就不可避免地遇到諸如引線誤差補償、多點測量中的切換誤差和信號調理電路的誤差等問題;而其中某一環(huán)節(jié)處理不當,就可能造成整個系統性能的下降。隨著現代科學技術的飛速發(fā)展,特別是大規(guī)模集成電路設計技術的發(fā)展,微型化、集成化、數字化正成為傳感器發(fā)展的一個重要方向。美國Dallas半導體公司推出的數字溫度傳感器DSl8B20,具有獨特的單總線接口,僅需要占用一個
18、通用I/O端口即可完成與微處理器的通信;用戶可編程設定9~12位的分辨率。以上特性使得DSl8B20非常適用于構建高精度、多點溫度測量系統。</p><p> 本課題設計的數字溫度計選用DS18B20數字溫度傳感器,它與單片機組成一個測溫系統,具有線路簡單、體積小等特點,而且一條總線可連接多個器件,可以構成一個低電壓低功耗的多點數字測溫系統,十分方便,也適合于惡劣環(huán)境下進行現場溫度測量,有廣泛的應用前景。<
19、;/p><p><b> 方案選擇及總體設計</b></p><p> 數字溫度計設計方案論證</p><p><b> 方案一</b></p><p> 由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行
20、數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,其中還涉及到電阻與溫度的對應值的計算,感溫電路比較麻煩。而且在對采集的信號進行放大時容易受溫度的影響出現較大的偏差。</p><p><b> 方案二</b></p><p> 進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只
21、溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,電路簡單,精度高,軟硬件都以實現,而且使用單片機的接口便于系統的再擴展,滿足設計要求。</p><p><b> 終選</b></p><p> 從以上兩種方案,很容易看出,采用方案二,數字溫度計選用DS18B20數字溫度傳感器,它與單片機組成一個測溫系統,具有線路簡單、體積小等特點,而且
22、一條總線可連接多個器件,可以構成一個低電壓低功耗的多點數字測溫系統,十分方便,也適合于惡劣環(huán)境下進行現場溫度測量,有廣泛的應用前景。</p><p><b> 故采用了方案二。</b></p><p><b> 系統概述</b></p><p> 在日常生活及工農業(yè)生產中經常要用到溫度的檢測及控制,傳統的測溫元件有熱
23、電偶和熱電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部硬度支持,硬件電路[1]復雜,軟件調試復雜,制作成本高。</p><p> 故本設計使用集成傳感器DS18B20作為測溫傳感器。系統主要分為溫度采集模塊,數據傳輸模塊,報警模塊,LED顯示模塊和供電模塊。系統設計原理圖如圖2-1所示。</p><p> 圖2-1 基于單片機的溫度控制系統設計原理圖
24、</p><p> 本數字溫度計設計采用美國DALLS半導體公司繼DS18B20之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55℃~+125℃,最大分辨率可達0.0625℃。DS18B20可以直接讀出被測溫度值,而且采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。</p><p><b> 總體設計</b>&l
25、t;/p><p> 2.3.1 實現功能</p><p> *采用數字溫度傳感器,基于單片機的數字溫度計,本溫度計屬 于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以報警。</p><p> *采集到的溫度數據通過數碼管顯示出來,采集的溫度范圍為0到99度,精確到1度。</p><p> 2.3.2 擴展功能<
26、;/p><p> *測溫范圍 -55~~+125 ℃。</p><p> *誤差±0.5℃以內。采用LED數碼管直讀顯示。</p><p> * 溫度上下限調節(jié)功能:能夠調節(jié)測溫范圍為-55~+125 ℃的上線溫度和下線溫度</p><p> * 報警功能:能在上限和下限溫度時蜂鳴器報警發(fā)光二極管閃爍并控制繼電器的開閉;<
27、/p><p> * LED數碼管直讀顯示,當溫度為“負”,則顯示負號;最低位顯示攝氏度符號“C”</p><p><b> 硬件設計</b></p><p><b> 總體電路設計</b></p><p> 溫度計電路設計原理圖如圖2-1所示,控制器使用單片機,溫度傳感器使用DS18B20,用4
28、位共陽LED數碼管以動態(tài)掃描法實現溫度顯示。采用USB燒入程序及供電,用12M晶振。電路還包括按鍵電路,復位電路,報警電路,控制加溫電路,單片機外設電路等。整個系統的原理圖如下圖所示:</p><p> 主控制器(STC89C52)</p><p> STC89C52 是低電壓, 高性能 CMOS 8 位單片機, 片內含 8k bytes 的可反復擦寫的 Flash 只讀程序存儲器和
29、256 bytes 的隨機存取數 據存儲器(RAM) ,器件采用高密度、非易失性存儲技術生產,與標準 MCS-51 指令系統及 8052 產品引腳兼容, 片內置通用 8 位中央處理器 (CPU)和 Flash 存儲單元,功能強大 STC89C52 單片機適合于許多 較為復雜控制應用場合。STC89C52 單片機為 40 引腳雙列直插芯片, 有四個 I/O 口 P0、P1、P2、P3,每一條 I/O 線都能獨立地作輸出或輸 入。STC89
30、C52 PDIP 管腳封裝,如圖 3-1所示。</p><p><b> 圖3-1</b></p><p> STC89c52 包含以下部分:(1)一個 8 位微處理器 CPU </p><p> ?。?)片內數據存儲器 RAM 和特殊功能寄存器 SFR </p><p> (3)片內程序存儲器 ROM <
31、/p><p> ?。?)兩個定時/計數器 T0、T1,可用作定時器,也可用以對外部脈 沖進行計數 </p><p> ?。?)四個 8 位可編程的并行 I/O 端口,每個端口既可作輸入,也可 作輸出</p><p> (6)一個串行端口,用于數據的串行通信 </p><p> (7)中斷控制系統 、</p><p>&
32、lt;b> ?。?)內部時鐘電路</b></p><p> STC89c52部分引腳說明:</p><p> 1. 時鐘電路引腳XTAL1 和XTAL2:</p><p> XTAL2(18 腳):接外部晶體和微調電容的一端;在8051 片內它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時鐘電路時,該引腳輸入外部
33、時鐘脈沖。</p><p> 要檢查8051/8031 的振蕩電路是否正常工作,可用示波器查看XTAL2 端是否有脈沖信號輸出。</p><p> XTAL1(19 腳):接外部晶體和微調電容的另一端;在片內它是振蕩電路反相放大器的輸入端。在采用外部時鐘時,該引腳必須接地。</p><p> 控制信號引腳RST,ALE,PSEN 和EA:</p>
34、<p> RST/VPD(9 腳):RST是復位信號輸入端,高電平有效。當此輸入端保持備用電源的輸入端。當主電源Vcc 發(fā)生故障,降低到低電平規(guī)定值時,將+5V 電源自動兩個機器周期(24個時鐘振蕩周期)的高電平時,就可以完成復位操作。RST 引腳的第二功能是VPD,即接入RST 端,為RAM 提供備用電源,以保證存儲在RAM 中的信息不丟失,從而合復位后能繼續(xù)正常運行。</p><p> ALE
35、/PROG(30 腳):地址鎖存允許信號端。當8051 上電正常工作后,ALE 引腳不斷向外輸出正脈沖信號,此頻率為振蕩器頻率fOSC 的1/6。CPU 訪問片外存儲器時,ALE 輸出信號作為鎖存低8 位地址的控制信號。</p><p> 平時不訪問片外存儲器時,ALE 端也以振蕩頻率的1/6 固定輸出正脈沖,因而ALE 信號可以用作對外輸出時鐘或定時信號。如果想確定8051/8031 芯片的好壞,可用示波器查
36、看ALE端是否有脈沖信號輸出。如有脈沖信號輸出,則8051/8031 基本上是好的。</p><p> ALE 端的負載驅動能力為8 個LS 型TTL(低功耗甚高速TTL)負載。</p><p> 此引腳的第二功能PROG 在對片內帶有4KB EPROM 的8751 編程寫入(固化程序)時,作為編程脈沖輸入端。</p><p> PSEN(29 腳):程序存儲
37、允許輸出信號端。在訪問片外程序存儲器時,此端定時輸出負脈沖作為讀片外存儲器的選通信號。此引肢接EPROM 的OE 端(見后面幾章任何一個小系統硬件圖)。PSEN 端有效,即允許讀出EPROM/ROM 中的指令碼。PSEN 端同樣可驅動8 個LS 型TTL 負載。要檢查一個8051/8031 小系統上電后CPU 能否正常到EPROM/ROM 中讀取指令碼,也可用示波器看PSEN 端有無脈沖輸出。如有則說明基本上工作正常。</p>
38、;<p> EA/Vpp(31 腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當EA 引腳接高電平時,CPU只訪問片內EPROM/ROM并執(zhí)行內部程序存儲器中的指令,但當PC(程序計數器)的值超過0FFFH(對8751/8051 為4K)時,將自動轉去執(zhí)行片外程序存儲器內的程序。當輸入信號EA 引腳接低電平(接地)時,CPU 只訪問外部EPROM/ROM 并執(zhí)行外部程序存儲器中的指令,而不管是否有片內程序存儲器
39、。對于無片內ROM 的8031 或8032,需外擴EPROM,此時必須將EA 引腳接地。此引腳的第二功能是Vpp 是對8751 片內EPROM固化編程時,作為施加較高編程電壓(一般12V~21V)的輸入端。</p><p> 3. 輸入/輸出端口P0/P1/P2/P3:</p><p> P0口(P0.0~P0.7,39~32 腳):P0口是一個漏極開路的8 位準雙向I/O口。作為漏極
40、開路的輸出端口,每位能驅動8 個LS 型TTL 負載。當P0 口作為輸入口使用時,應先向口鎖存器(地址80H)寫入全1,此時P0 口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時要先寫1,這就是準雙向口的含義。在CPU 訪問片外存儲器時,P0口分時提供低8 位地址和8 位數據的復用總線。在此期間,P0口內部上拉電阻有效。</p><p> P1口(P1.0~P1.7,1~8 腳):P1口是一個帶內部上拉電阻的
41、8 位準雙向I/O口。P1口每位能驅動4 個LS 型TTL 負載。在P1口作為輸入口使用時,應先向P1口鎖存地址(90H)寫入全1,此時P1口引腳由內部上拉電阻拉成高電平。</p><p> P2口(P2.0~P2.7,21~28 腳):P2口是一個帶內部上拉電阻的8 位準雙向I/O口。P口每位能驅動4個LS 型TTL 負載。在訪問片外EPROM/RAM 時,它輸出高8 位地址。</p><
42、p> P3口(P3.0~P3.7,10~17 腳):P3口是一個帶內部上拉電阻的8 位準雙向I/O口。P3口每位能驅動4個LS型TTL負載。P3口與其它I/O 端口有很大的區(qū)別,它的每個引腳都有第二功能,如下:</p><p> P3.0:(RXD)串行數據接收。</p><p> P3.1:(RXD)串行數據發(fā)送。</p><p> P3.2:(IN
43、T0#)外部中斷0輸入。</p><p> P3.3:(INT1#)外部中斷1輸入。</p><p> P3.4:(T0)定時/計數器0的外部計數輸入。</p><p> P3.5:(T1)定時/計數器1的外部計數輸入。</p><p> P3.6:(WR#)外部數據存儲器寫選通。</p><p> P3.7
44、:(RD#)外部數據存儲器讀選通</p><p><b> 顯示電路</b></p><p> 顯示電路采用8位共陰極LED數碼管其中的前5位,P0口高電平有效,作為段碼輸出并作為數碼管的驅動。P2口的低3位作為數碼管的位選端。采用動態(tài)掃描的方式顯示。如圖3-2所示。</p><p> 1. 74HC573 11腳接ACC,鎖存不起作
45、用,相當于直通。相應的段賦值“1”有效。</p><p> 2. 74HC138 ABC賦值 0~7,則輸出端分別是Y0~Y7 置“0”,如P2=0,則Y0=0; P2=6;則Y6=0;即選通第七個數碼管。</p><p><b> 圖3-2顯示電路</b></p><p><b> 報警溫度調整按鍵</b>&l
46、t;/p><p> 本系統設計四個按鍵,采用查詢方式,當跳線連接1和2是用的事獨立按鍵,S1對應P3.0口,當按第一次按下S1時,可以用S2或者S3設置上限報警溫度,再次按下S1則可以用S2或者S3設置下限報警溫度,第三次按下顯示當前測到的溫度值,還有按下復位鍵S17則還原為默認的上下限報警溫度。均采用軟 件消抖。硬件連接如下圖所示:</p><p><b> 圖3-3按鍵電路
47、</b></p><p><b> 復位按鍵;</b></p><p> 圖3-4 復位按鍵電路圖</p><p><b> 3.1.4報警電路</b></p><p><b> 喇叭電路圖</b></p><p><b>
48、; 圖3-5</b></p><p> 喇叭通過UM2003的輸入端in7連接到到單片機的P1.7口。喇叭不同于蜂鳴器,不能直接賦值‘1’或‘0’需要直續(xù)賦值變化的電平。</p><p> Led等的正極都是接+5V的高電平,所以負極低電平時led燈亮,反之則滅。Led燈D2連接單片機P1.0口,當溫度超過設定的上下限溫度時D2閃爍報警。</p><p
49、> 當達到上下限溫度時報警led燈閃爍電路如下:</p><p> 圖3-6 LED電路</p><p> 3.1.5控制加溫電路</p><p> RELAY-SPDT這個繼電器是控制加溫電路工作狀態(tài)的,插座J12的1、2腳連到加溫電路的電源兩端,繼電器觸電K1作為加溫電路的電源開關。當溫度超過設定的上下限溫度時,程序控制繼電器自動打開,控制加溫或
50、者減溫系統進行工作。當溫度恢復正常值,則繼電器自動關閉。</p><p> 圖3-7 繼電器控制電路</p><p> DS18B20溫度傳感器</p><p> DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9~12位的數字值
51、讀數方式。</p><p> DS18B20的性能特點如下:</p><p> ·獨特的單線接口僅需要一個端口引腳進行通信;</p><p> ·實際應用中不需要外部任何元器件即可實現測溫;</p><p> ·可通過數據線供電,電壓范圍為3.0~5.5V;</p><p> &
52、#183;在DS18B20中的每個器件上都有獨一無二的序列號;</p><p> ·溫度以9或12位數字量讀出;</p><p> ·報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;</p><p> ·負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能工作。</p><p> 圖3
53、-7 DS18B20內部結構圖</p><p> DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內部結構框圖如圖3-7所示。</p><p> 64位ROM的位結構如圖3-8所示。開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。非易失性溫度報警觸發(fā)器TH和TL,可通過軟件
54、寫入戶報警上下限。</p><p> MSB LSB MSB LSB MSB LSB</p><p> 圖3-8 64位ROM結構圖</p><p> DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節(jié)的存儲器,結構
55、如圖3所示。 頭2個字節(jié)包含測量得的溫度信息,第3和第4字節(jié)是TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié)為配置寄存器[9],它的內容用于確定溫度值的數字轉換分辯率。</p><p> DS18B20工作時按此寄存器中的分辯率將溫度轉換為相應精度的數值。該字節(jié)各位的定義如圖3-8所示。低5位一直為1,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模
56、式。</p><p> 在DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數,即用來設置分辯率,定義方法見表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結構圖 圖3-10 配置寄存器</p><p> 表1 DS18B20分辯率的定義規(guī)定</p><p> 由表1可見,DS18B20溫度轉換的時間比較長,而且設定的分辯率越高,所需要的溫度數據轉換時間就越長。因此,在實際應用中要將分辯率和轉換時間權衡考慮。</p><p> 高速暫存RAM的
59、第6、7、8字節(jié)保留未用,表現為全邏輯1。轉換完成后溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625℃/LSB形式表示。溫度值格式如圖4-6所示。</p><p> 當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時。表示測得的溫度值為負值,要先將被補碼變成原
60、碼,再計算十進制值。表2是一部分溫度值對應的二進制溫度數據。</p><p><b> LS字節(jié)</b></p><p><b> MS字節(jié)</b></p><p> 圖3-11溫度數據值格式</p><p> DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內容作比
61、較。若T>TH或T<TL,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。</p><p> 主機根據ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數據是否正確。</p><p> DS18B20的測量原理如圖3-11所示。圖中低溫度系數晶振的振蕩頻率受
62、溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變所產生的信號作為減法計數器2的脈沖輸入。圖中還隱含著計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數,</p><p> 表2 DS18B20溫度與測得值對應表</p><p> 進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首
63、先將-55℃所對應的一個基數分別置入減法計數器1、溫度寄存器中,減法計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。</p><p> 減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存器的值將加1,減法計數器1的預置值將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫
64、度寄存器中的數值就是所測溫度值。圖3-11中的斜率累加器用于補償和修正測溫過程中的非線形性,其輸出用于修正減法計數器的預置值,只要計數門仍未關閉就重復上述過程,直到溫度寄存器值達到被測溫度值。</p><p> 另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統對DS18B20的各種操作必須按協議進行。操作協議為:初始化DS18B20(發(fā)復位脈沖)—>發(fā)ROM功
65、能命令—>發(fā)存儲器操作命令—>處理數據。</p><p> 4.5 DS18B20的其他介紹</p><p> DS18B20的存儲器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,以及一個配置寄存器。存儲器能完整的確定一線端口的通訊,數字開始用寫寄存器的命令寫進寄存器,接著也可以用讀寄存器的命令來確認這些數字。當確認以后就可以用復制寄存器的
66、命令來將這些數字轉移到可電擦除RAM中。當修改過寄存器中的數時,這個過程能確保數字的完整性。</p><p> 高速暫存器RAM是由8個字節(jié)的存儲器組成;第一和第二個字節(jié)是溫度的顯示位。第三和第四個字節(jié)是復制TH和TL,同時第三和第四個字節(jié)的數字可以更新;第五個字節(jié)是復制配置寄存器,同時第五個字節(jié)的數字可以更新;六、七、八三個字節(jié)是計算機自身使用。用讀寄存器的命令能讀出第九個字節(jié),這個字節(jié)是對前面的八個字節(jié)進行
67、校驗</p><p> DS18B20采用一線通信接口。因為一線通信接口,必須在先完成ROM設定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一:讀ROM,ROM匹配,搜索ROM,跳過ROM,報警檢查。這些指令操作作用在沒有一個器件的64位光刻ROM序列號,可以在掛在一線上多個器件選定某一個器件,同時,總線也可以知道總線上掛有有多少,什么樣的設備。</p><p> DS1
68、8B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式。單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。DS18B20可以使用外部電源VDD,也可以使用內部的寄生電源。當VDD端口接3.0V—5.5V的電壓時是使用外部電源;當VDD端口接地時使用了內部的寄生電源。無論是內部寄生電源還是外
69、部供電,I/O口線要接5KΩ左右的上拉電阻。</p><p> 當DS18B20處于存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為10µs。采用寄生電源供電方式時VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。</p><p> 由于DS18B20采用的是1-Wire總線協議方式,即在一根數據線實現數據的雙向傳輸,而對AT8
70、9C2051單片機來說,硬件上并不支持單總線協議。因此,我們必須采用軟件的方法來模擬單總線的協議時序來完成對DS18B20芯片的訪問。 </p><p> 由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備
71、。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。</p><p> DS18B20的復位時序</p><p> DS18B20的讀時序分為讀0時序和讀1時序兩個過程。 對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數據傳輸
72、到單總線上。DS18B20在完成一個讀時序過程,至少需要60µs才能完成。DS18B20的寫時序 對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。 對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60µs,保證DS18B20能夠在15µs到45µs之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15µs之內就得
73、釋放單總線。</p><p> 3.2.1溫度傳感計DS18B20電路設計</p><p> DS18B20 最大的特點是單總線數據傳輸方式,DS18B20 的數據I/O 均由同一條線來完 成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方 式時, VDD 和GND 均接地, 他在需要遠程溫度探測和空間受限的場合特別有用, 原理是當 1 W ir
74、e 總線的信號線DQ 為高電平時, 竊取信號能量給DS18B20 供電, 同時一部分能量給 內部電容充電, 當DQ為低電平時釋放能量為DS18B20 供電。但寄生電源方式需要強上拉電 路, 軟件控制變得復雜(特別是在完成溫度轉換和拷貝數據到E2PROM 時) , 同時芯片的性 能也有所降低。因此, 在條件允許的場合, 盡量采用外供電方式。無論是內部寄生電源還是 外部供電,I/O口線要接5KΩ左右的上拉電。在這里采用前者方式供電。DS18
75、B20與芯片連 接電路如圖 3.12所示:</p><p> 圖3.12圖中 DS18B20與單片機的連接外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電 路也比較簡單, 可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統。 在開發(fā)中使用外部電源供電方式, 畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電 源電壓范圍的優(yōu)點,即使電源電壓VCC 降到
76、3V 時,依然能夠保證溫度量精度。 由于DS18B20 只有一根數據線,因此它和主機(單片機)通信是需要串行通信,而 STC89C52 有兩個串行端口,所以可以不用軟件來模擬實現。經過單線接口訪問DC18B20 必 須遵循如下協議:初始化、ROM 操作命令、存儲器操作命令和控制操作。要使傳感器工作, 一切處理均嚴格按照時序</p><p><b> 程序流程圖設計</b></p>
77、;<p> 系統程序主要包括主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序、顯示數據刷新子程序、按鍵查詢程序等等。系統程序采用單片機C語言編寫。程序簡潔,可靠性高,可維護性好。</p><p><b> 主程序</b></p><p> 主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行
78、一次。這樣可以在一秒之內測量一次被測溫度,其程序流程見圖4.1所示。</p><p> 圖4.1 主程序流程圖</p><p><b> 讀出溫度子程序</b></p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖4.2示</p><
79、;p> 圖4-3溫度轉換命令流程圖</p><p> 圖4-2 讀出溫度子程序流程圖</p><p><b> 溫度轉換命令子程序</b></p><p> 溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖
80、4.3所示</p><p> 計算溫度子程序與報警程序</p><p> 計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖4.4所示。</p><p><b> 顯示數據刷新子程序</b></p><p> 顯示數據刷新子程序主要是對分離后的溫度顯示數據進行刷新操作,
81、當標志位位為1時將符號顯示位移入第一位。程序流程圖如圖4.5。</p><p> 圖4.4 計算溫度流程圖 圖4.5 顯示數據刷新流程圖</p><p><b> 按鍵掃描處理子程序</b></p><p> 按鍵采用掃描查詢方式,設置標志位,當標志位為1時,顯示設置溫度,否則顯示當前溫度。如下圖4.6示。&l
82、t;/p><p> 圖4-6按鍵掃描處理圖</p><p><b> 系統調試與運行</b></p><p> 本人主要負責的內容是寫程序,所以系統的調試以程序為主。軟件調試可以先編寫顯示程序并進行硬件的性檢驗,然后分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序、顯示數據刷新等子程序的編程及調試,由于DS18B20與單片機
83、采用串行數據傳送,因此,對DS18B20進行讀寫編程時必須嚴格地保證讀寫時序,否則將無法讀取測量結果。本程序采用單片機C語言編寫,用EWAVR-KS4編譯器編程調試。軟件調試到能顯示溫度值,而且在有溫度變化時顯示溫度能改變就基本完成。</p><p> ?。?5~+125℃的測量范圍使得該溫度計完全適合一般的應用場合,其低電壓供電特性可做成用電池供電的手持電子溫度計。</p><p>
84、DS18B20溫度計還可以在高低溫報警、遠距離多點測量控制等方面進行應用開發(fā),但在實際設計中應注意以下問題:</p><p> (1)DS18B20工作時電流高達1.5mA,總線上掛接點數較多且同時進行轉換時,要考慮增加總線驅動,可用單片機端口在溫度轉換時導通一個MOSFET供電。</p><p> ?。?)連接DS18B20的總線電纜是有長度限制的,因此在用DS18B20進行長距離測溫
85、系統設計時,要充分考慮總線分布電容和阻抗匹配等問題。</p><p> ?。?)在DS18B20測溫度程序設計中,向DS18B20發(fā)出溫度轉換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20接觸不好或斷線,當程序讀該DS18B20時,將沒有返回信號,程序進入死循環(huán),這一點在進行DS18B20硬件連接和軟件設計時要給予一定的重視。 </p><p><b>
86、結論</b></p><p> 本設計方案達到了任務書的要求并擴展了功能,實現了數字溫度計的設計,實現了較為精確的測溫功能:</p><p> ?。?)對被測對象的測溫結果精度可以達到±0.5°C,突出了本設計的特點;</p><p> ?。?)所測溫度值的范圍在-55℃~+125℃,符合指定工作溫度范圍;</p>&
87、lt;p> ?。?)由蜂鳴器報警電路控制的報警功能也調試實現,并在LED上正確顯示了溫度值,繼電器控制成功; </p><p> 本設計中的數字溫度計直接測溫的方式,該溫度計的靈敏度高、響應時間短、抗干擾能力強,而且具有測量范圍大、讀數方便等優(yōu)點。在接通電源時,數碼管上顯示的數字會不清晰或者出現抖動,這是由于電源電壓不穩(wěn)或是接觸不良所引起,可以使用接濾波電容的方法來消除上述現象。該系統所用的IC很少
88、故成本低,器件均為常用元件,有很高的工程應用價值。如稍加改動程序,本系統做成帶有控制功能的溫控系統。</p><p> 由于時間緊迫及本人水平有限,設計當中還有許多不足之處,程序的編寫也還不夠簡潔,希望在以后的學習中能學到更多的知識,使自己的設計更上一層樓。</p><p><b> 致 謝</b></p><p> 本論文的工作是
89、在我的導師cc的悉心指導下完成的,xx老師嚴謹的治學態(tài)度和科學的工作方法給了我極大的幫助和影響。在此衷心感謝三年來xx老師對我的關心和指導。</p><p> x老師悉心指導我們完成了畢業(yè)論文工作,在學習上和生活上都給予了我很大的關心和幫助,在此向xx老師表示衷心的謝意。</p><p> 龐教授對于我的論文提出了許多的寶貴意見,在此表示衷心的感謝。</p><p&
90、gt; 在撰寫論文期間,xx等同學對我論文中的格式研究工作給予了熱情幫助,在此向他們表達我的感激之情。</p><p> 另外也感謝家人朋友,他們的理解和支持使我能夠在學校專心完成我的學業(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_();延時函數用
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; //溫度設置切換鍵</p><p> sbit add=P3^1; //溫
94、度加</p><p> sbit dec=P3^2; //溫度減</p><p> int temp1=0; //顯示當前溫度和設置溫度的標志位為0 時顯示當前溫度</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、; //**************溫度小數部分用查表法***********//</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> //小數斷碼表</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}; //個位帶小數點的斷碼表</p><p> uchar data temp_data[2]={0x00,0x00}; //讀出溫度暫放</p><p> uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //顯示單元數據,共4 個數據和一個運算暫用</p><p> /***
100、**************11us 延時函數*************************/</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 復位函數************************/</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 復位成功,繼續(xù)下一步</p><p><b> }</b></p><p> delay(45); //延時500 us</p><p> presence=~D
108、Q;</p><p><b> }</b></p><p> DQ=1; //拉高電平</p><p><b> }</b></p><p> /****************DS18B20 寫命令函數************************/</p><p&g
109、t; //向1-WIRE 總線上寫1 個字節(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é)函數************************/</p><p> //從總線上取1 個字節(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、> /*****************讀出溫度函數************************/</p><p> read_temp()</p><p><b> {</b></p><p> ow_reset(); //總線復位</p><p> delay(200);</p>&
117、lt;p> write_byte(0xcc); //發(fā)命令</p><p> write_byte(0x44); //發(fā)轉換命令</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é)合成一個整型變量。</p><p> return temp; //返回溫度值</p><p><b> }</b></p><p> /****************溫度數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 基于單片機溫度控制系統的設計畢業(yè)論文
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 基于單片機的溫度控制系統畢業(yè)論文
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 畢業(yè)論文--基于單片機的溫度控制系統
- 基于單片機的溫度控制系統畢業(yè)論文
- 畢業(yè)論文設計基于單片機溫度控制系統的設計
- 基于單片機的溫度控制系統設計畢業(yè)論文
- 畢業(yè)論文 基于單片機的溫度控制系統設計
- 基于單片機的溫度控制系統設計制作【測控技術與儀器畢業(yè)論文】
- 畢業(yè)論文--基于單片機的溫度控制系統
- 基于單片機原理溫度控制系統的設計畢業(yè)論文
- 單片機的溫度控制系統畢業(yè)論文
- 畢業(yè)論文-單片機溫度控制系統
- 畢業(yè)論文-單片機溫度控制系統
- 基于單片機的溫度控制系統設計畢業(yè)論文 (2)
評論
0/150
提交評論