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

下載本文檔

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

文檔簡(jiǎn)介

1、 編號(hào) 淮安信息職業(yè)技術(shù)學(xué)院淮安信息職業(yè)技術(shù)學(xué)院 畢畢業(yè)業(yè)論論文文 題 目基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì)基于單片機(jī)的溫度控制系統(tǒng)的設(shè)計(jì) 學(xué)生姓名 學(xué) 號(hào) 系 部電氣工程 專 業(yè)電氣自動(dòng)化 班 級(jí) 指導(dǎo)教師 顧問教師 摘摘 要要 溫度是一種最基本的環(huán)境參數(shù),人們生活與環(huán)境溫度息息相關(guān),在工業(yè)生 產(chǎn)過程中需要實(shí)時(shí)測(cè)量溫度,在工業(yè)生產(chǎn)中也離不開溫度的測(cè)量,因此研究溫 度的測(cè)量方法和控制具有重要的意義。 本論文介紹了一種以單片機(jī)為主要控制器件,以 ds18b20 為溫度傳感器的 新型數(shù)字溫度計(jì)。主要包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。硬件電路主要 包括主控制器,測(cè)溫控制電路和顯示電路等,主控制器采用單

2、片機(jī) at89c52, 溫度傳感器采用美國 dallas 半導(dǎo)體公司生產(chǎn)的 ds18b20,顯示電路采用 8 位 共陰極 led 數(shù)碼管,uln2803a 為驅(qū)動(dòng)的動(dòng)態(tài)掃描直讀顯示。測(cè)溫控制電路由 溫度傳感器和預(yù)置溫度值比較報(bào)警電路組成,當(dāng)實(shí)際測(cè)量溫度值大于預(yù)置溫度 值時(shí),發(fā)出報(bào)警信號(hào),即發(fā)光二極管亮。系統(tǒng)程序主要包括主程序,測(cè)溫子程 序和顯示子程序等。ds18b20 新型單總線數(shù)字溫度傳感器是 dallas 公司生產(chǎn) 的單線數(shù)字溫度傳感器, 集溫度測(cè)量和 a /d 轉(zhuǎn)換于一體 ,直接輸出數(shù)字量,具有 接口簡(jiǎn)單、精度高、抗干擾能力強(qiáng)、工作穩(wěn)定可靠等特點(diǎn)。 由于采用了改進(jìn)型智能溫度傳感器 ds1

3、8b20 作為檢測(cè)元件,與傳統(tǒng)的溫度 計(jì)相比,本數(shù)字溫度計(jì)減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。 ds18b20 溫度計(jì)還可以在高溫報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)溫控制等方面進(jìn)行應(yīng)用開發(fā), 具有很好的發(fā)展前景。此外,還介紹了系統(tǒng)的調(diào)試和性能分析。 關(guān)鍵詞:顯示電路,單片機(jī),at89c52,溫度傳感器,ds18b20 ,單總線 目目 錄錄 摘摘 要要.i 第一章第一章 緒論緒論.1 第二章設(shè)計(jì)任務(wù)及方案分析第二章設(shè)計(jì)任務(wù)及方案分析.2 2.1 設(shè)計(jì)任務(wù)及要求設(shè)計(jì)任務(wù)及要求.2 2.2 設(shè)計(jì)總體方案及方案論證設(shè)計(jì)總體方案及方案論證.2 2.3 溫度測(cè)量的方案與分析溫度測(cè)量的方案與分析.2 第三章芯片

4、功能簡(jiǎn)介第三章芯片功能簡(jiǎn)介.4 3.1 at89c52 芯片簡(jiǎn)介芯片簡(jiǎn)介.4 3.2 ds18b20 的功能簡(jiǎn)介的功能簡(jiǎn)介 .6 第四章系統(tǒng)硬件電路的設(shè)計(jì)第四章系統(tǒng)硬件電路的設(shè)計(jì).12 4.1 主控制電路和測(cè)溫控制電路原理圖主控制電路和測(cè)溫控制電路原理圖.12 4.2 驅(qū)動(dòng)電路模塊原理圖驅(qū)動(dòng)電路模塊原理圖.12 4.3 顯示模塊原理圖顯示模塊原理圖.13 第五章軟件編程調(diào)試及性能分析第五章軟件編程調(diào)試及性能分析.15 5.1 主程序流程圖主程序流程圖.15 5.2 主程序主程序.15 5.3 溫度子程序溫度子程序.17 5.4 顯示子程序顯示子程序.22 5.5 調(diào)試性能分析和注意事項(xiàng)調(diào)試性能

5、分析和注意事項(xiàng).23 第六章第六章 總結(jié)與展望總結(jié)與展望.25 致致 謝謝.26 參考文獻(xiàn)參考文獻(xiàn).27 附錄附錄.29 第一章第一章 緒論緒論 日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)及控制,在冶金、食品加 工、化工等工業(yè)生產(chǎn)過程中,廣泛使用的各種加熱爐、熱處理爐、反應(yīng)爐等, 都要求對(duì)溫度進(jìn)行嚴(yán)格控制。在日常生活中,電烤箱、微波爐、電熱水器、烘 干箱等電器也需要進(jìn)行溫度檢測(cè)與控制。傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。 而熱電偶和熱電阻測(cè)出的一般是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外 部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。而采用單片機(jī)對(duì)溫 度進(jìn)行控制,不僅具有控制方便,簡(jiǎn)單和靈

6、活等優(yōu)點(diǎn),而且可以大幅度提高溫 度控制的技術(shù)指標(biāo)。 測(cè)量溫度的關(guān)鍵是溫度傳感器,溫度傳感器正從模擬式向數(shù)字式、從集成 化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。在測(cè)溫電路中,可以使用熱敏電阻之類的器 件利用其感溫效應(yīng),將隨被測(cè)溫度變化的電壓或電流采集過來,先進(jìn)行 a/d 轉(zhuǎn) 換,然后用單片機(jī)進(jìn)行數(shù)據(jù)的處理,再在顯示電路上,將被測(cè)溫度顯示出來。 這種設(shè)計(jì)需要用到 a/d 轉(zhuǎn)換電路,因此感溫電路的設(shè)計(jì)比較復(fù)雜。 進(jìn)而想到采用智能溫度傳感器來設(shè)計(jì)數(shù)字溫度計(jì)。本數(shù)字溫度計(jì)的設(shè)計(jì)采 用美國 dallas 半導(dǎo)體公司繼 ds1820 之后推出的一種改進(jìn)型智能溫度傳感器 ds18b20 作為檢測(cè)元件,其溫度值可以直接被

7、讀出來,通過核心器件單片機(jī) at89c52 控制溫度的讀寫和顯示,用 led 數(shù)碼管顯示。測(cè)溫范圍為 55125,最大分辨率可達(dá) 0.0625。而且采用 3 線制與單片機(jī)相連, 減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。 按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)有 5 個(gè)模塊組成:主控制器、溫度傳 感器 ds18b20、報(bào)警電路、按鍵預(yù)置溫度值電路及顯示電路??刂破魇褂?at89c52,溫度傳感器使用 ds18b20,用 8 位共陰極 led 數(shù)碼管以動(dòng)態(tài)掃描法 實(shí)現(xiàn)溫度顯示。系統(tǒng)程序主要包括主程序、溫度控制子程序及顯示子程序等等。 綜上所述,本設(shè)計(jì)以智能集成溫度傳感器 ds18b20 為例,介

8、紹基于 ds18b20 傳感器的數(shù)字溫度計(jì)的設(shè)計(jì),該設(shè)計(jì)適用于人們的日常生活及工農(nóng)業(yè) 生產(chǎn)中用于溫度的檢測(cè)及控制。 第二章第二章. .設(shè)計(jì)任務(wù)及方案分析設(shè)計(jì)任務(wù)及方案分析 2.1 設(shè)計(jì)任務(wù)及要求設(shè)計(jì)任務(wù)及要求 設(shè)計(jì)一個(gè)以單片機(jī)為核心的溫度測(cè)量系統(tǒng),可實(shí)現(xiàn)的功能為: (1)測(cè)量溫度值精度為1。 (2)系統(tǒng)允許的誤差范圍為 1以內(nèi)。 (3)系統(tǒng)可由用戶預(yù)設(shè)溫度值,測(cè)溫范圍為55125。 (4)超出預(yù)置值時(shí)系統(tǒng)會(huì)自動(dòng)報(bào)警,即發(fā)光二極管亮。 (5)系統(tǒng)具有數(shù)碼顯示功能,能實(shí)時(shí)顯示設(shè)定溫度值和測(cè)得的實(shí)際溫度值。 2.2 設(shè)計(jì)總體方案及方案論證設(shè)計(jì)總體方案及方案論證 在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度

9、的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元 件有熱電偶和熱點(diǎn)阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng) 的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成 本高。 本數(shù)字溫度計(jì)設(shè)計(jì)采用美國 dallas 半導(dǎo)體公司繼 ds1820 之后推出的一 種改進(jìn)智能溫度傳感器 ds18b20 作為檢測(cè)元件,測(cè)溫范圍為55125, 最大分辨率可達(dá) 0.0625。ds18b20 可以直接讀出被測(cè)量的溫度值,而采用 3 線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。 按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由 5 個(gè)模塊組成:主控制器 at89c52,溫度傳感器 ds18b20,報(bào)警電

10、路,按鍵電路及驅(qū)動(dòng)顯示電路。數(shù)字 溫度計(jì)總體電路框圖如圖 1-1 所示。 2.3 溫度測(cè)量的方案與分析溫度測(cè)量的方案與分析 1芯片選擇 本設(shè)計(jì)的測(cè)溫系統(tǒng)采用芯片 ds18b20, ds18b20 是 dallas 公司的最 新單線數(shù)字溫度傳感器,它的體積更小、適用電壓更寬、更經(jīng)濟(jì),ds18b20 是 世界上第一片支持“一線總線”接口的溫度傳感器,具有一線總線獨(dú)特而且經(jīng)濟(jì)的 特點(diǎn)。采用智能溫度傳感器 ds18b20 作為檢測(cè)元件,測(cè)溫范圍為 55125,最大分辨率可達(dá) 0.0625。ds18b20 可以直接讀出被測(cè)量的 溫度值,而且采用 3 線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本 和

11、易使用的特點(diǎn)。 2實(shí)現(xiàn)方法簡(jiǎn)介: ds18b20 采用外接電源方式工作,一線測(cè)溫的一線與 at89c52 的 p3.7 連 接并加上上拉電阻使其工作,測(cè)出的數(shù)據(jù)存放在寄存器 10h-12h 中,將數(shù)據(jù)經(jīng) 過 bcd 碼轉(zhuǎn)換后送 led 顯示。具體實(shí)現(xiàn)步驟見軟件設(shè)計(jì)章節(jié)。 圖 1-1 總體電路框圖 3測(cè)溫流程圖: 圖 1-2 測(cè)溫流程圖 主控制器 at89c52 驅(qū)動(dòng)顯示電路按鍵電路 報(bào)警電路 ds18b20 初始化跳過 rom 匹 配 數(shù)碼管顯示 溫度變換 讀暫存器 轉(zhuǎn)換成顯示碼 延時(shí) 1s 跳過 rom 匹 配 第三章第三章. .芯片功能簡(jiǎn)介芯片功能簡(jiǎn)介 3.1 at89c52 芯片簡(jiǎn)介芯片

12、簡(jiǎn)介 at89c52 是美國 atmel 公司生產(chǎn)的低電平,高性能 cmos 8 位單片機(jī), 片內(nèi)含 8k bytes 的可反復(fù)擦寫的只讀程序存儲(chǔ)器(perom)和 256 bytes 的隨機(jī)存 取數(shù)據(jù)存儲(chǔ)器(ram ),器件采用 atmel 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 與標(biāo)準(zhǔn) mcs-51 指令系統(tǒng)及 8052 產(chǎn)品引腳兼容,片內(nèi)置通用 8 位中央處理器 (cpu)和 flash 存儲(chǔ)單元,32 個(gè)可編程 i/o 口線, 3 個(gè) 16 位定時(shí)/計(jì)數(shù)器, 低功耗 空閑和掉電模式。功能強(qiáng)大的 at89c52 單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng) 合。 引腳功能說明如下: (1)vcc:電

13、源電壓 (2)gnd:地 (3) p0 口:p0 口是一組 8 位漏極開路型雙向 i/o 口,也即地址/數(shù)據(jù)總線 復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng) 8 個(gè) ttl 邏輯門電路, 對(duì)端口 p0 寫“1”時(shí)可作為高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低 8 位)和 數(shù)據(jù)總線復(fù)位,在訪問期間激活內(nèi)部上拉電阻。 (4)p1 口:p1 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1 的輸出緩沖級(jí) 可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) tte 邏輯門電路。對(duì)端口寫“1” ,通過內(nèi)部的上拉 電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存

14、在上 拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。 與 at89c51 不同之處是,p1.0 和 p1.1 還可分別作為定時(shí)/計(jì)數(shù)器 2 的外部 計(jì)數(shù)輸入(p 1.0/t2)和輸入(p 1.1/t2ex ),參見表 2-1。 flash 編程和程序校驗(yàn)期間,p1 接收低 8 位地址。 表 2-1 p1.0 和 p1.1 的第二功能 引 腳 號(hào) 功能特性 p1.0t2(定時(shí)/計(jì)數(shù)器 2 外部計(jì)數(shù)脈沖輸入) ,時(shí)鐘輸出 p1.1t2ex(定時(shí)/計(jì)數(shù) 2 捕獲/重裝載觸發(fā)和方向控制) (5)p2 口:p2 是一個(gè)帶有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 的輸出緩沖 級(jí)可驅(qū)動(dòng)(吸

15、收或輸出電流)4 個(gè) ttl 邏輯門電路。對(duì)端口 p2 寫“1” ,通過內(nèi)部 的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部 存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ill)。 在訪問外部程序存儲(chǔ)器或 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行 movx dptr 指令)時(shí),p2 口送出高 8 位地址數(shù)據(jù)。在訪問 8 位地址的外部數(shù)據(jù)存儲(chǔ) 器(如執(zhí)行 movx ri 指令)時(shí),p2 口輸出 p2 鎖存器的內(nèi)容。 (6)p3 口:p3 口是一組帶有內(nèi)部上拉電阻的 8 位雙向 i/o 口。p3 口輸出緩 沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) ttl 邏輯門電路。對(duì) p

16、3 口寫入“1”時(shí),它們 被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的 p3 口將用上拉電 阻輸出電流(ill)。 p3 口除了作為一般的 i/o 口線外,更重要的用途是它的第二功能,如表 2-2 所示。 (7)rst:復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst 引腳出現(xiàn)兩個(gè)機(jī)器周期以上高 電平將使單片機(jī)復(fù)位。 表 2-2 p3 口的第二功能 端口引腳第二功能 p3.0rxd(串行輸入口) p3.1txd(串行輸出口) p3.2 (外中斷 0)int0 p3.3 (外中斷 1)int1 p3.4t0(定時(shí)/計(jì)數(shù) 0) p3.5t1(定時(shí)/計(jì)數(shù) 1) p3.6 (外部數(shù)據(jù)存儲(chǔ)器寫選通)wr p3

17、.7 (外部數(shù)據(jù)存儲(chǔ)器讀選通)rd (8)/vpp:外部訪問允許。欲使 cpu 僅訪問外部程序存儲(chǔ)器(地址為ea 0000h-ffffh ) 。端必須保持低電平(接地)。需注意的是:如果加密位 lb1ea 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存端狀態(tài)。ea 如端為高電平(接 vcc 端),cpu 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。ea flash 存儲(chǔ)器編程時(shí),該引腳加上+12v 的編程允許電源 vpp,當(dāng)然這必須 是該器件是使用 12v 編程電壓 vcc 。 (9)xtal1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 (10)xtal2:振蕩器反相放大器的輸出端。 (11)數(shù)據(jù)存儲(chǔ)器: at89c52 有

18、 256 個(gè)字節(jié)的內(nèi)部 ram,80h-ffh 高 128 個(gè)字節(jié)與特殊功能寄 存器(sfr)地址是重疊的,也就是高 128。 字節(jié)的 ram 和特殊功能寄存器的地址是相同的,但在物理上它們是分開 的。 當(dāng)一條指令訪問 7fh 以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不 同的,也即尋址方式?jīng)Q定是訪問高 128 字節(jié)。 ram 還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功 能寄存器。 (12)中斷: at89c52 共有 6 個(gè)中斷向量:兩個(gè)外中斷(int0 和 int1) ,3 個(gè)定時(shí)器中斷 (定時(shí)器 0, 1, 2)和串行口中斷。 (13)時(shí)鐘振蕩器: at89c52 中

19、有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳 xtal1 和 xtal2 分別是該放大器的輸入端和輸出端。 這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振 蕩器,振蕩電路參見圖 2-1(a)圖所示。 外接石英晶體(或陶瓷諧振器)及電容 c1、c2 接在放大器的反饋回路中 構(gòu)成并聯(lián)振蕩電路,對(duì)外接電容 c1、c2 雖然沒有十分嚴(yán)格的要求,但電容容量 的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及 溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用 30pf 士 10pf,而如果使用 陶瓷諧振器,建議選擇 40pf 士 l0pf。 用戶也可以采用外部時(shí)鐘。采

20、用外部時(shí)鐘的電路如圖 2-1(b)圖所示。這 種情況下,外部時(shí)鐘脈沖接到 xtal1 端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,xtal2 則懸空。 (a)內(nèi)部振蕩電路 (b)外部振蕩電路 圖 2-1 振蕩電路 由于外部時(shí)鐘信號(hào)是通過一個(gè) 2 分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以 對(duì)外部時(shí)鐘信號(hào)的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電 平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。 3.2 ds18b20 的功能簡(jiǎn)介的功能簡(jiǎn)介 1芯片簡(jiǎn)介 (1) 適應(yīng)電壓范圍更寬,電壓范圍:3.0 v5.5v,在寄生電源方式下可由數(shù) 據(jù)線供電。 (2) 獨(dú)特的單線接口方式,ds18b20 在與微處理器連接時(shí)僅需要一條

21、口線即 可實(shí)現(xiàn)微處理器與 ds18b20 的雙向通訊。 (3) ds18b20 在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成 在形如一只三極管的集成電路內(nèi)。 (4) 測(cè)溫范圍55125,在-10+85時(shí)精度為0.5。 (5) 可編程的分辨率為 912 位,對(duì)應(yīng)的可分辨溫度分別為 0.5、0.25、 0.125和 0.0625,可實(shí)現(xiàn)高精度測(cè)溫。 (6) 在 9 位分辨率時(shí)最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12 位分辨率時(shí)最 多在 750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。 (7) 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線”串行傳送給 cpu,同 時(shí)可傳送 crc 校驗(yàn)碼

22、,具有極強(qiáng)的抗干擾糾錯(cuò)能力。 (8) 負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。 . 2ds18b20外形和內(nèi)部結(jié)構(gòu) ds18b20內(nèi)部結(jié)構(gòu)如圖2-2所示,主要由4部分組成:64位rom、溫度傳感 器、非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl、配置寄存器。ds18b20的外形及管腳排 列如圖2-3和表2-3所示。 i/o c 圖2- 64 位 rom 和單線 接 口 高速緩存 存儲(chǔ)器 存儲(chǔ)器和控制器 8 位 crc 生成器 溫度傳感器 低溫觸發(fā)器 tl 高溫觸發(fā)器 th 配置寄存器 電 源 檢 測(cè) 圖2-2 ds18b20的內(nèi)部結(jié)構(gòu) 表2-3 ds18b20引腳定義: 序號(hào)名稱引

23、腳功能描述 1gnd地信號(hào) 2dq數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生 電源下,也可以向器件提供電源。 3vdd可選擇的 vdd 引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接 地。 (1) 64 位 rom rom中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該ds18b20的地 址序列碼,每個(gè)ds18b20的64位序列號(hào)均不相同。64位rom的循環(huán)冗余校驗(yàn)碼 (crc=x8x5x41)。rom的作用是使每一個(gè)ds18b20都各不相同,這 樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)ds18b20的目的。 ds18b20中的溫度傳感器完成對(duì)溫度的測(cè)量,用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀 數(shù)形式提供

24、,以0.0625/lsb形式表達(dá),其中s為符號(hào)位。ds18b20溫度值格式 表2-4如下所示。 2 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在ds18b20的兩個(gè)8比特的ram中,二 進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的 數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需 要取反加1再乘于0.0625即可得到實(shí)際溫度。例如25.0625的數(shù)字輸出為 0191h,25.0625的數(shù)字輸出為ff6fh。 表2-4 ds18b20溫度值格式表 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ls byte

25、2 3 2 2 212 0 2 1 2 2 2 3 2 4 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ms bytesssss 2 6 2 5 2 4 (2)高低溫報(bào)警觸發(fā)器th和tl ds18b20 溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存 ram 和一個(gè)非易失 性的可電擦除的 eepram,后者存放高溫度和低溫度觸發(fā)器 th、tl 和結(jié)構(gòu)寄存 器。 (3)配置寄存器 該字節(jié)各位的意義如下表 2-5 所示。 表2-5:配置寄存器結(jié)構(gòu) tmr1r011111 低五位一直都是“1”,tm 是測(cè)試模式位,用于設(shè)置 ds18b20 在工作模式 還是在測(cè)

26、試模式。在 ds18b20 出廠時(shí)該位被設(shè)置為 0,用戶不要去改動(dòng)。r1 和 r0 用來設(shè)置分辨率,如下表 2-6 所示(ds18b20 出廠時(shí)被設(shè)置為 12 位)。 (4)高速暫存器是一個(gè)9字節(jié)的存儲(chǔ)器。開始兩個(gè)字節(jié)包含被測(cè)溫度的數(shù)字量 信息;第3、4、5字節(jié)分別是th、tl、配置寄存器的臨時(shí)拷貝,每一次上電復(fù) 位時(shí)被刷新;第6、7、8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有 8個(gè)字節(jié)的crc碼,可用來保證通信正確。高速暫存器ram結(jié)構(gòu)圖如下表2-7所 示。 表2-6 溫度分辨率設(shè)置表 r1r0分辨率溫度最大轉(zhuǎn)換時(shí)間 009 位93.75ms 0110 位187.5ms 1011

27、位375ms 1112 位750ms 3. ds18b20的工作時(shí)序 ds18b20的一線工作協(xié)議流程是:初始化rom操作指令存儲(chǔ)器操作指 令數(shù)據(jù)傳輸。其工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序,如圖4-4 3 (a)(b)(c)所示。 表2-7 ds18b20暫存寄存器分布 寄存器內(nèi)容 字節(jié)地址 溫度值低位 (ls byte)0 溫度值高位 (ms byte)1 高溫限值(th)2 低溫限值(tl)3 配置寄存器4 保留5 保留6 保留7 crc 校驗(yàn)值8 ds18b20等待 ds18b20tx產(chǎn)生 15us16us 脈沖60-240 主機(jī)復(fù)位脈沖 vcc 480ustx960us 主機(jī)rx

28、min480us 1-wire bus gnd 圖2-4 (a)初始化時(shí)序 主機(jī)控制 ds18b20 完成任何操作之前必須先初始化,即主機(jī)發(fā)一復(fù)位脈沖 (最短為 480us 的低電平),接著主機(jī)釋放總線進(jìn)入接收狀態(tài),ds18b20 在檢測(cè)到 i/o 引腳上的上升沿之后,等待 15-60us 然后發(fā)出存在脈沖(60-240us 的低電平)。 寫時(shí)間片:將數(shù)據(jù)從高電平拉至低電平,產(chǎn)生寫起始信號(hào)。在 15us 之內(nèi)將 所需寫的位送到數(shù)據(jù)線上,在 15us 到 60us 之間對(duì)數(shù)據(jù)線進(jìn)行采樣,如果采樣為 高電平,就寫 1,如果為低電平,寫 0 就發(fā)生。在開始另一個(gè)寫周期前必須有 1us 以上的高電平恢

29、復(fù)期。 讀時(shí)間片:主機(jī)將數(shù)據(jù)線從高電平拉至低電平 1us 以上,再使數(shù)據(jù)線升為高 電平,從而產(chǎn)生讀起始信號(hào)。主機(jī)在讀時(shí)間片下降沿之后 15us 內(nèi)完成讀位。每 個(gè)讀周期最短的持續(xù)期為 60us,各個(gè)讀周期之間也必須有 1us 以上的高電平恢復(fù) 期。 主機(jī)寫“0”時(shí)隙 主機(jī)寫“1”時(shí)隙 vcc 60ustx120us 1ustxcc1us ds18b20 采樣 15us min typ max min typ max 15us 30us 15us 15us 30us 圖2-4(b)寫時(shí)序 vcc 主機(jī)讀“0”時(shí)隙 主機(jī)讀“1”時(shí)隙 1-wire bus gnd 主機(jī)采樣 1us 15us 15u

30、s 30us 主機(jī)采樣 15us 圖2-4(c)讀時(shí)序 4. ds18b20與單片機(jī)的典型接口設(shè)計(jì) 圖 2-5 以 mcs51 系列單片機(jī)為例,畫出了 ds18b20 與微處理器的典型連 接。圖 2-5(a)中 ds18b20 采用寄生電源方式,其 vdd 和 gnd 端均接地, 4 圖 2-5(b)中 ds18b20 采用外接電源方式,其 vdd 端用 3v5.5v 電源供電。 (a) 寄生電源工作方式 (b) 外接電源工作方式 圖2-5 電源工作方式圖 5ds18b20的各個(gè)rom命令 (1) read rom 33h 這個(gè)命令允許總線控制器讀到ds18b20的8位系列編碼,惟一的序列號(hào)的

31、8位 crc碼。只有在總線上存在單只ds18b20的時(shí)候才能用這個(gè)命令。如果總線上 有不止一個(gè)從機(jī),當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開 路連在一起形成“與”的效果)。 (2)match rom 55h 這是個(gè)匹配rom命令,后跟64位rom序列,讓總線控制器在多點(diǎn)總線上定 位一只特定的ds18b20。只有和64位rom序列完全匹配的ds18b20才能響應(yīng)隨 后的存儲(chǔ)器操作。所有和64位rom序列不匹配的從機(jī)都將等待復(fù)位脈沖。這條 命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用。 (3) skip rom 0cch 這個(gè)命令允許總線控制器不用提供64位rom編碼就使用存儲(chǔ)器操作命令,

32、 在單點(diǎn)總線情況下,可以節(jié)省時(shí)間。如果總線上不止一個(gè)從機(jī),在命令之后緊 跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳信號(hào)??偩€上發(fā)生數(shù)據(jù)沖突(漏極開 路連在一起形成“與”的效果)。 (4) search rom 0f0h 當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器并不知道單線總線上有多少個(gè)器件或 它們的64位rom編碼。搜索rom命令允許總線控制器用排除法識(shí)別總線上的所 有從機(jī)的64位編碼。 (5) alarm search 0ech 這條命令的流程和search rom相同。然而,只有在最近一次測(cè)溫后遇到符 合報(bào)警條件的情況,ds18b20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于th 或低于tl。只要ds18

33、b20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫 度值達(dá)不到報(bào)警條件。 (6) write scratchpad4eh 這個(gè)命令向ds18b20的暫存器th和tl中寫入數(shù)據(jù)??梢栽谌魏螘r(shí)刻發(fā)出復(fù) 位命令來中止寫入。 (7) read scratchpad0beh 這個(gè)命令讀取暫存器的內(nèi)容。讀取將從第1字節(jié)開始,一直進(jìn)行下去,直到 第9(crc)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時(shí)刻發(fā)出復(fù) 位命令來中止讀取。 (8) copy scratchpad48h 這個(gè)命令把暫存器的內(nèi)容拷貝到ds18b20的e rom存儲(chǔ)器里,即把溫度報(bào) 2 警觸發(fā)器字節(jié)存入非易失性存儲(chǔ)器里。如果控制器

34、在這條命令之后跟著發(fā)出讀 時(shí)間隙,而ds18b20又忙于把暫存器拷貝到e存儲(chǔ)器,ds18b20就會(huì)輸出一個(gè) 0,如果拷貝結(jié)束的話,ds18b20輸出1。如果使用寄生電源,總線控制器必須 在這條命令后立即啟動(dòng)強(qiáng)上拉,并最少保持10ms。 (9) convert t44h 這個(gè)命令啟動(dòng)一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后 ds18b20保持等待狀態(tài)。如果控制器在這條命令之后跟著發(fā)出時(shí)間隙,而 ds18b20有忙于做時(shí)間轉(zhuǎn)換的話,ds18b20將在總線上輸出一個(gè)0,若溫度轉(zhuǎn)換 完,則輸出1。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即啟動(dòng) 強(qiáng)上拉,并最少保持500ms以上時(shí)間

35、。 (10)read e 0b8h 2 這條命令把 觸發(fā)器里的值拷貝回暫存器。這種拷貝操作在ds18b20上電時(shí) 自動(dòng)執(zhí)行,這樣一上電暫存器里馬上存在有效的數(shù)據(jù)了。若在這條命令之后發(fā) 出讀數(shù)據(jù)隙,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí):0為忙,1為完成。 (11)read power supply0b4h 若把這條命令發(fā)給ds18b20后發(fā)出讀時(shí)間隙,器件會(huì)返回它的電源模式:0 為寄生電源,1為外部電源。 第四章第四章. .系統(tǒng)硬件電路的設(shè)計(jì)系統(tǒng)硬件電路的設(shè)計(jì) 4.1 主控制電路和測(cè)溫控制電路原理圖主控制電路和測(cè)溫控制電路原理圖 主控制電路由 at89c52 及外圍元件構(gòu)成,測(cè)溫電路由 ds18b20、預(yù)

36、置數(shù) 電路和報(bào)警電路組成。at89c52 是此硬件電路設(shè)計(jì)的核心,通過 at89c52 的管 腳 p3.7 與 ds18b20 相連,控制溫度的讀出和顯示。預(yù)置數(shù)電路由兩個(gè)按鍵和兩 個(gè)數(shù)碼管組成,兩個(gè)按鍵分別與 at89c52 的管腳 p3.2 和 p3.6 相連。報(bào)警電路 很簡(jiǎn)單,只有一個(gè)發(fā)光二極管,與 at89c52 的 p3.0 管腳相連,若實(shí)際測(cè)量的溫 度值大于預(yù)置溫度值,則發(fā)光二極管亮,即為報(bào)警標(biāo)志。硬件電路的功能都是 與軟件編程相結(jié)合而實(shí)現(xiàn)的。具體電路原理圖如下圖 3-1 所示。 圖3-1主控制電路和測(cè)溫控制電路原理圖 4.2 驅(qū)動(dòng)電路模塊原理圖驅(qū)動(dòng)電路模塊原理圖 驅(qū)動(dòng)電路由 ul

37、n2803a 組成,通過網(wǎng)絡(luò)標(biāo)號(hào) p20-p27 與單片機(jī)相連,通 過網(wǎng)絡(luò)標(biāo)號(hào) c0-c7 與顯示電路數(shù)碼管相連,實(shí)現(xiàn)位控制功能。具體電路如下圖 2-2 所示。 圖3-2 驅(qū)動(dòng)電路原理圖 圖3-3 顯示電路原理圖 4.3 顯示模塊原理圖顯示模塊原理圖 采用動(dòng)態(tài)顯示方案,設(shè)計(jì)中使用八個(gè)共陰極數(shù)碼管作為顯示載體,通過八 路并口傳輸,共使用了十六個(gè)i/o口。顯示時(shí)采用循環(huán)移位法,即八位數(shù)碼管依 次循環(huán)點(diǎn)亮,利用人眼睛的視覺暫留效果達(dá)到連續(xù)顯示,主程序每運(yùn)行一遍便 調(diào)用一次顯示子程序,將數(shù)據(jù)顯示出來。 顯示電路由八位共陰極的數(shù)碼管組成,通過網(wǎng)絡(luò)標(biāo)號(hào) a、b、c、d、e、f、g、dp等與at89c52的

38、p1口相連,由八個(gè)136歐的電阻驅(qū) 動(dòng),實(shí)現(xiàn)段控制功能。通過網(wǎng)絡(luò)標(biāo)號(hào)c0-c7與驅(qū)動(dòng)芯片uln2803a相連,以此為 橋梁與at89c52相連,實(shí)現(xiàn)位控制功能。 第五章第五章. .軟件編程調(diào)試及性能分析軟件編程調(diào)試及性能分析 5.1 主程序流程圖主程序流程圖 圖 4-1 主程序流程圖 5.2 主程序主程序 org 0000h ljmp start start: mov disbuf4,#00h ;開始,初始化 mov disbuf5, #00h main: ;主程序 lcaal key ;調(diào)按鍵預(yù)置數(shù)子程序 開始 調(diào)復(fù)位子程序 發(fā) skip rom 命令 cch 調(diào) write ds18b20

39、 子程序 發(fā)出溫度轉(zhuǎn)換命令 調(diào) write ds18b20 子程序 調(diào)復(fù)位子程序 調(diào) read ds18b20 子程序 調(diào) write ds18b20 子程序 發(fā)命令 beh 讀暫存器內(nèi)容 調(diào) write ds18b20 子程序發(fā) skip rom 命令 cch 對(duì)讀出的溫度值進(jìn)行轉(zhuǎn)換 轉(zhuǎn)換后的數(shù)存于緩沖區(qū) 調(diào)用比較報(bào)警子程序 調(diào)顯示子程序 調(diào)按鍵子程序 clr rs1 clr rs0 lcall reset ;調(diào)復(fù)位子程序 mov a,#0cch ;跳過 rom 匹配-0cch lcall write ;調(diào) ds18b20 寫子程序 mov a,#44h ;發(fā)出溫度轉(zhuǎn)換命令 lcall wr

40、ite ;調(diào) ds18b20 寫子程序 lcall reset ;調(diào)復(fù)位子程序 mov a,#0cch ;跳過 rom 匹配 lcall write ;調(diào) ds18b20 寫子程序 mov a,#0beh ;發(fā)出讀取溫度值命令 lcall write ;調(diào) ds18b20 寫子程序 lcall read ;調(diào) ds18b20 讀子程序 mov a, 3dh mov 29h,a lcall read mov a, 3dh mov 28h, a mov r0, #34h mov a, 28h rlc a mov 47h, c jnb 47h, btod1 ;28h 中的最高位是否為 1(溫度0)

41、;小于 0 的溫度值不處理,大于 0 順序執(zhí)行 btod1: mov a, 28h rrc a mov 40h, c rrc a mov 41h, c rrc a mov 42h, c rrc a mov 43h, c mov a, 29h mov 27h, a mov c,40h ;將 28h 中的最低位移入 c,40h41h42h ;43h 為 28h 中的位地址 rrc a ;將 28h 中的低 4 位移到 a 的高 4 位 mov c, 41h rrc a mov c, 42h rrc a mov c, 43h rrc a mov 29h,a ;將 28h 中的低 4 位放入 29h

42、中 mov a, 29h ;將 29h 中的十六進(jìn)制數(shù)轉(zhuǎn)換成 10 進(jìn)制 mov b, #100 div ab mov r0, a ;百位存于 34h mov r0, #11h ;百位不顯示 dec r0 mov a, #10 xch a, b div ab mov r0, a ;十位存于 33h dec r0 mov r0, b ;個(gè)位存于 32h dec r0 anl 27h, #0fh ;小數(shù)點(diǎn)后一位進(jìn)制轉(zhuǎn)換 mov a, 27h mov b, #06h mul ab mov b, #10 div ab mov r0, a ;小數(shù)點(diǎn)后一位存于 31h mov disbuf0,33h ;十

43、位 mov disbuf1,32h ;個(gè)位 mov disbuf2,31h ;小數(shù)位 mov disbuf3, #0h ;置 0 mov disbuf6, #0h mov disbuf7, #0h lcall cmp ;調(diào)比較報(bào)警子程序 lcall display ;調(diào)用顯示子程序 ljmp main ;轉(zhuǎn)到 main 5.3 溫度子程序溫度子程序 由于 ds18b20 單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀 寫時(shí)序很重要。系統(tǒng)對(duì) ds18b20 的各種操作都是按時(shí)序進(jìn)行的。ds18b20 的一 線工作協(xié)議流程是:初始化rom 操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。 1. ds18b2

44、0 復(fù)位子程序 ds18b20 復(fù)位時(shí)序圖參看后面芯片功能部分有詳細(xì)的介紹。在這一部分只 給出程序流程圖,然后給出根據(jù)流程圖所編寫的 ds18b20 復(fù)位子程序。 y 程序如下: reset: nop l0: clr p3.7 ;拉低數(shù)據(jù)線 mov r2,#200 ;發(fā)出 600us 的復(fù)位脈沖 l1: nop djnz r2, l1 開始 拉低數(shù)據(jù)線 p3.7=0 發(fā) 600us 復(fù)位脈沖 p3.7 送給 cy 延時(shí) 500us ds18b20 等待 60us 主機(jī)釋放數(shù)據(jù)線 p3.7=1 ds18b20 的 p3.7=1? 延時(shí) 1us 以上 返回 ds18b20 的 p3.7=1? y

45、n 延時(shí) 240us y n 圖 4-2 ds18b20 復(fù)位子程序流程圖 setb p3.7 ;主機(jī)釋放數(shù)據(jù)線 mov r2,#30 ;ds18b20 等待 60us l4: djnz r2, l4 clr c orl c,p3.7 ;ds18b20 數(shù)據(jù)變低(存在脈沖)嗎? jc l3 ;ds18b20 準(zhǔn)備好,結(jié)束 mov r6, #80 l5: orl c, p3.7 jc l3 ;ds18b20 數(shù)據(jù)變高,初始化成功 djnz r6,l5 ;數(shù)據(jù)線低電平可持續(xù) 3us*80=240us sjmp l0 ;初始化失敗,重新初始化 l3: mov r2, #250 l2: djnz r2

46、,l2 ;ds18b20 應(yīng)答 500us ret 2. 讀 ds18b20 子程序 read: mov r6,#8 ;循環(huán) 8 次,讀一個(gè)字節(jié) re1: clr p3.7 mov r4, #6 nop nop setb p3.7 re2: djnz r4,re2 ;等待 8us mov c,p3.7 ;讀 ds18b20 的數(shù)據(jù) rrc a ;讀取的數(shù)據(jù)移入 a mov r5, #30 djnz r6,re1 ;讀完一個(gè)字節(jié)的數(shù)據(jù) mov 3dh,a ;數(shù)據(jù)存入 3dh 中 setb p3.7 ;把數(shù)據(jù)線拉高 ret 開始 返回 設(shè)循環(huán)次數(shù)為 8 延時(shí) 600us p3.7=0 延時(shí) 1us

47、 以上 p3.7=1 等待 8us 存入 3dh 中 p3.7=1 讀 ds18b20 的數(shù)據(jù) 讀完? y n 圖 4-3 讀 ds18b20 子程序流程圖 3. 寫 ds18b20 子程序 ;寫 ds18b20 的子程序, 從 ds18b20 中寫出一個(gè)字節(jié)的數(shù)據(jù) write: mov r3,#8 ;循環(huán) 8 次,寫一個(gè)字節(jié) wr1: setb p3.7 ;拉高數(shù)據(jù)線 mov r4, #8 rrc a ;寫入位從 a 中移到 cy clr p3.7 wr2: djnz r4,wr2 ;等待 16us mov p3.7,c ;命令字按位依次送給 ds18b20 mov r4, #20 wr3:

48、 djnz r4,wr3 ;保證寫過程持續(xù) 40us 開始 返回 設(shè)置循環(huán)次數(shù)為 8 拉高數(shù)據(jù)線 p3.7=1 循環(huán)移位,p3.7=0 延時(shí) 寫完一個(gè) 字節(jié)? 拉高數(shù)據(jù)線,p3.7=1 y 圖 4-4 寫 ds18b20 子程序流程圖 n djnz r3,wr1 ;未寫完一個(gè)字節(jié)轉(zhuǎn) wr1 繼續(xù) setb p3.7 ;寫完一個(gè)字節(jié),數(shù)據(jù)線置高 ret 4. 比較報(bào)警子程序 cmp: mov a,disbuf0 ;實(shí)際測(cè)量溫度值放在 disbuf8 中 swap a mov disbuf8, a mov a, disbuf1 orl a, disbuf8 mov disbuf8, a mov a

49、,disbuf4 ;預(yù)置溫度值放在 disbuf9 中 swap a mov disbuf9, a mov a, disbuf5 orl a, disbuf9 mov disbuf9, a clr c mov a, disbuf8 subb a, disbuf9 jnc kk ;沒有借位,即實(shí)際溫度值大于 ;預(yù)置溫度值轉(zhuǎn) kk clr p3.0 ;有借位,即實(shí)際溫度值小于預(yù)置溫度值 ;p3.0 置 0,不發(fā)報(bào)警信號(hào) ret kk: setb p3.0 ;p3.0 置 1,即發(fā)出報(bào)警標(biāo)志發(fā)光二極管亮 ret 5. 按鍵子程序 key: jnb p3.6, yzbw jnb p3.2, yzsw

50、ljmp keyret yzbw: lcall delay1 jb p3.6, keyret jnb p3.6, $ inc disbuf5 mov a, disbuf4 cjne a, #10, keyret mov disbuf4, #0 ljmp keyret yzsw: lcall delay1 jb p3.2, keyret jnb p3.2, $ inc disbuf5 mov a, disbuf5 cjne a, #10, keyret mov disbuf5, #0 keyret: ret 5.4 顯示子程序顯示子程序 display: mov a, disbuf0 mov d

51、ptr, #seg movc a, a+dptr mov p1, a mov p2, #00000001b lcall delay1 mov p2, #00000000b mov a, disbuf1 mov dptr, #seg movc a, a+dptr orl a, #80h mov p1, a mov p2, #00000010b lcall delay1 mov p2, #00000000b mov a, disbuf2 mov dptr, #seg movc a, a+dptr mov p1, a mov p2, #00000100b lcall delay1 mov p2, #

52、00000000b mov a, disbuf7 mov dptr, #seg movc a, a+dptr mov p1, a mov p2, #00000000b lcall delay1 mov p2, #00000000b ret ; (00) (01) (02) (03) (04) seg: db 03fh, 06h, 05bh, 04fh, 066h ; (05) (06) (07) (08) (09) db 06dh, 07dh, 007h, 07fh, 06fh ;延時(shí)子程序 delay1: mov r1, #0a0h del11: nop djnz r1, del11 ret

53、 end ;工作內(nèi)存定義: disbuf0 equ 10h disbuf1 equ disbuf0+1 disbuf2 equ disbuf1+1 . disbuf9 equ disbuf8+1 5.5 調(diào)試性能分析調(diào)試性能分析和注意事項(xiàng)和注意事項(xiàng) 1. 調(diào)試性能分析 系統(tǒng)的調(diào)試以程序?yàn)橹?。硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正 1 確,然后可用萬用表測(cè)試或通電檢測(cè)。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬 件的正確性檢驗(yàn),然后分別進(jìn)行主程序、測(cè)溫子程序、預(yù)置數(shù)、報(bào)警子程序等 的編程及調(diào)試,由于 ds18b20 與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì) ds18b20 進(jìn)行編程時(shí)必須嚴(yán)格地保證讀寫時(shí)序

54、,否則將無法讀取測(cè)量結(jié)果。本程序采用 單片機(jī)匯編編寫,用 ys51 編譯器編程調(diào)試,軟件調(diào)試到能顯示溫度值,而且 在有溫度變化時(shí)(例如用手去接觸)顯示溫度改變。 性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)來同時(shí)測(cè)量比較,由于 ds18b20 的精確度很高,所以誤差指標(biāo)可以限制在 0.1以內(nèi),另外 55125的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低電壓 供電特性可做成電池供電的手持電子溫度計(jì)。 2. ds18b20 使用中的注意事項(xiàng) ds18b20溫度計(jì)還可以在高低溫報(bào)警、遠(yuǎn)距離多點(diǎn)溫度控制等方面開發(fā)應(yīng)用, 但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題: (1)ds18b20從測(cè)量溫度結(jié)束到

55、將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí) 間,這是必須保證的,不然會(huì)出現(xiàn)轉(zhuǎn)換錯(cuò)誤的現(xiàn)象,使溫度輸出總是顯示85。 (2)在實(shí)際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5v左右,若電源電壓過低, 會(huì)使所測(cè)得的溫度與實(shí)際溫度出現(xiàn)偏高現(xiàn)象,經(jīng)過試驗(yàn)發(fā)現(xiàn),一般在5v左右。 (3)較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于ds18b20與微處 理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)ds18b20進(jìn)行讀寫編程時(shí),必須嚴(yán)格保 證讀寫時(shí)序,否則將無法讀取測(cè)溫結(jié)果,在使用pl/m、c等高級(jí)語言進(jìn)行系統(tǒng) 程序設(shè)計(jì)時(shí),對(duì)ds18b20操作部分最好采用匯編語言實(shí)現(xiàn)。 (4)在ds18b20的有關(guān)資料中均未提及單總線上所掛ds18b20數(shù)量問題, 容易使人誤

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論