

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