《單片機(jī)應(yīng)用技術(shù)》課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
《《單片機(jī)應(yīng)用技術(shù)》課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《單片機(jī)應(yīng)用技術(shù)》課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、學(xué)號(hào): 070911100 1 2009 - 2010 學(xué)年 第 2 學(xué)期 單片機(jī)應(yīng)用技術(shù) 課 程 設(shè) 計(jì) 報(bào) 告 題 目:基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì) 專 業(yè): 電氣自動(dòng)化 班 級(jí): 07 電氣自動(dòng)化本 姓 名: 指導(dǎo)教師: 成 績(jī): 電氣工程系 1 2010 年 5 月 25 日 課 程 設(shè) 計(jì) 任 務(wù) 書(shū) 學(xué)生班級(jí): 07 電氣自動(dòng)化本 學(xué)生姓名: 學(xué)號(hào):0709111001 設(shè)計(jì)名稱: 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì) 起止日期: 2010 年 5 月 242010 年 5 月 28 指導(dǎo)教師: 臧老師 設(shè)計(jì)要求: 本設(shè)計(jì)主要是介紹了單片機(jī)控制下的溫度檢測(cè)系統(tǒng),詳細(xì)介紹了其硬 件 和軟件設(shè)計(jì),
2、并對(duì)其各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下: 利用溫度傳感器(DS18B20)測(cè)量某一點(diǎn)環(huán)境溫度 測(cè)量范圍為-5599,精度為0.5 用液晶進(jìn)行實(shí)際溫度值顯示 能夠根據(jù)需要方便設(shè)定上下限報(bào)警溫度 2 目 錄 一、 引言 5 二、設(shè)計(jì)內(nèi)容及性能指標(biāo) 5 三、系統(tǒng)方案論證 5 (一)、方案 .6 四、系統(tǒng)器件選擇 7 (一)、 單片機(jī)的選擇 .7 1、 89S51 引腳功能介紹 .8 (二)、溫度傳感器的選擇 .10 1、 DS18B20 簡(jiǎn)單介紹 :.10 2、 DS18B20 使用中的注意事項(xiàng) .12 3、 DS18B20 內(nèi)部結(jié)構(gòu) .13 4、 DS18B20 測(cè)溫原理 .17 5、
3、提高 DS1820 測(cè)溫精度的途徑 .18 (三)、顯示及報(bào)警模塊器件選擇 .20 五、硬件設(shè)計(jì)電路 21 (一)、主控制器 .22 (二)、顯示電路 .22 3 (三)、 溫度檢測(cè)電路 .22 (四)、溫度報(bào)警電路 .29 六、 軟件設(shè)計(jì) (一)、 概述 .30 (二)、主程序模塊 .30 (三)、各模塊流程設(shè)計(jì) .31 1、 溫度檢測(cè)流程 .31 2、報(bào)警模塊流程 .32 3、 中斷設(shè)定流程 .33 七、自我評(píng)價(jià) 35 八、致謝 36 參考文獻(xiàn) 36 4 摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、 科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個(gè)基于
4、89S51 單片機(jī)的測(cè)溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器 DS18B20 開(kāi)發(fā)測(cè)溫 系統(tǒng)的過(guò)程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng) 流程進(jìn)行了詳盡分析,對(duì)各部分的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí) 現(xiàn)實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來(lái) 相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于 我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以當(dāng)作溫度處理模塊嵌入其 它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20 與 AT89C51 結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫 度檢測(cè)系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫 度測(cè)
5、量,有廣泛的應(yīng)用前景。 5 一、引言 隨著科技的不斷發(fā)展,現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的 要求都有了幾何級(jí)的增長(zhǎng),而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受 制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息 傳輸( 通信技術(shù)) 和信息處理 (計(jì)算機(jī)技術(shù)) 中,傳感器屬于信息技術(shù)的前沿尖 端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國(guó)各領(lǐng)域已經(jīng)引用的非常廣泛,可 以說(shuō)是滲透到社會(huì)的每一個(gè)領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在 工業(yè)生產(chǎn)過(guò)程中需要實(shí)時(shí)測(cè)量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開(kāi)溫度的測(cè)量, 因此研究溫度的測(cè)量方法和裝置具有重要的意義。 測(cè)量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的
6、發(fā)展經(jīng)歷了三個(gè)發(fā)展階 段: 傳統(tǒng)的分立式溫度傳感器 模擬集成溫度傳感器 智能集成溫度傳感器。 目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀(jì)90年代中期問(wèn) 世的,它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測(cè)試技術(shù)(ATE)的結(jié)晶,特點(diǎn)是 能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU)。社會(huì)的 發(fā)展使人們對(duì)傳感器的要求也越來(lái)越高,現(xiàn)在的溫度傳感器正在基于單片 機(jī)的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā) 展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開(kāi)發(fā)虛擬 傳感器和網(wǎng)絡(luò)傳感器、研制單片測(cè)溫系統(tǒng)等高科技的方向迅速發(fā)展,本文 將介紹智能集成溫度傳感器DS1
7、8B20的結(jié)構(gòu)特征及控制方法,并對(duì)以此傳 感器,89S51 單片機(jī)為控制器構(gòu)成的數(shù)字溫度測(cè)量裝置的工作原理及程序設(shè) 計(jì)作了詳細(xì)的介紹。與傳統(tǒng)的溫度計(jì)相比,其具有讀數(shù)方便,測(cè)溫范圍廣, 測(cè)溫準(zhǔn)確,輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫要求比較準(zhǔn)確的場(chǎng)所, 或科研實(shí)驗(yàn)室使用。該設(shè)計(jì)控制器使用ATMEL公司的AT89S51 單片機(jī),測(cè) 溫傳感器使用DALLAS公司DS18B20,用液晶來(lái)實(shí)現(xiàn)溫度顯示。 二、設(shè)計(jì)內(nèi)容及性能指標(biāo) 本設(shè)計(jì)主要是介紹了單片機(jī)控制下的溫度檢測(cè)系統(tǒng),詳細(xì)介紹了其硬 件和軟件設(shè)計(jì),并對(duì)其各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下: 利用溫度傳感器(DS18B20)測(cè)量某一點(diǎn)環(huán)境溫
8、度 6 測(cè)量范圍為-5599,精度為0.5 用液晶進(jìn)行實(shí)際溫度值顯示 能夠根據(jù)需要方便設(shè)定上下限報(bào)警溫度 三、系統(tǒng)方案論證 該系統(tǒng)主要由溫度測(cè)量和數(shù)據(jù)采集兩部分電路組成,實(shí)現(xiàn)的方法有很 多種,下面將列出一種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實(shí)現(xiàn)方案。 (一)、方案 采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片 機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化 學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0100 攝氏度 時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用了單總線 的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器A
9、T89S51 構(gòu)成的溫度測(cè)量裝 置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu) 就比較簡(jiǎn)單,體積也不大。采用51 單片機(jī)控制,軟件編程的自由度大,可通 過(guò)編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單, 安裝方便。既可以單獨(dú)對(duì)多DS18B20 控制工作,還可以與PC 機(jī)通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制 上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。 該系統(tǒng)利用AT89S51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并 顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。 該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加
10、入時(shí)鐘芯片DS1302以獲取時(shí)間數(shù) 據(jù),在數(shù)據(jù)處理同時(shí)顯示時(shí)間,并可以利用AT24C16芯片作為存儲(chǔ)器件, 以此來(lái)對(duì)某些時(shí)間點(diǎn)的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),利用鍵盤(pán)來(lái)進(jìn)行調(diào)時(shí)和溫度查 詢,獲得的數(shù)據(jù)可以通過(guò)MAX232芯片與計(jì)算機(jī)的 RS232接口進(jìn)行串口通信, 方便的采集和整理時(shí)間溫度數(shù)據(jù)。 7 系統(tǒng)框圖如圖 3.3所示 圖 3.3 DS18B20溫度測(cè)溫系統(tǒng)框圖 四、系統(tǒng)器件選擇 (一)、 單片機(jī)的選擇 對(duì)于單片機(jī)的選擇,可以考慮使用8031與8051系列,由于8031沒(méi)有內(nèi) 部RAM,系統(tǒng)又需要大量?jī)?nèi)存存儲(chǔ)數(shù)據(jù),因而不適用。AT89S51 是美國(guó) ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS8
11、位單片機(jī),片內(nèi)含 4kbytes 的可編程的 Flash 只讀程序存儲(chǔ)器,兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。它集 Flash 程序存儲(chǔ)器既可在線編程(ISP ),也可用傳統(tǒng)方法進(jìn)行編程,所以 低價(jià)位 AT89S51單片機(jī)可為提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于 各種控制領(lǐng)域,對(duì)于簡(jiǎn)單的測(cè)溫系統(tǒng)已經(jīng)足夠。單片機(jī)AT89S51 具有低電 壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì) 需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。主要特 性如下 與MCS-51 兼容 4K字節(jié)可編程閃爍存儲(chǔ)器 8 壽命:1000寫(xiě)/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10年 全靜態(tài)工作:0Hz
12、-24Hz 三級(jí)程序存儲(chǔ)器鎖定 128*8位內(nèi)部RAM 32可編程I/O線 兩個(gè)16位定時(shí)器/計(jì)數(shù)器 5個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 圖 4.1 AT89S51單片機(jī)引腳圖 1、89S51 引腳功能介紹 AT89S51 單片機(jī)為40 引腳雙列直插式封裝。 其引腳排列和邏輯符號(hào)如圖4.1 所示。 各引腳功能簡(jiǎn)單介紹如下: VCC:供電電壓 GND:接地 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向 I/O口,每個(gè)管腳可吸收8TTL 門(mén) 電流。當(dāng)P1口的管腳寫(xiě) “1”時(shí),被定義為高阻輸入。P0 能夠 用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/ 地址的第八 位。在
13、FLASH 編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH 進(jìn)行 9 校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0 外部電位必須被拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的 8位雙向 I/O口,P1口緩沖器能 接收輸出4TTL門(mén)電流。P1 口管腳寫(xiě)入“1”后,電位被內(nèi)部上 拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電 流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的 8位雙向I/O 口,P2口緩沖器可接收, 輸出4個(gè)TTL 門(mén)電流,當(dāng) P2口被寫(xiě)“1”時(shí),其管腳電位被內(nèi)部 上拉電阻拉高,且作為輸入。作為輸入時(shí),P2口的管腳電位
14、被 外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用 于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉 的優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出 其特殊功能寄存器的內(nèi)容。P2口在FLASH 編程和校驗(yàn)時(shí)接收 高八位地址信號(hào)和控制信號(hào)。 P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向 I/O口,可接收輸出4個(gè) TTL門(mén)電流。當(dāng)P3 口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平, 并用作輸入。作為輸入時(shí),由于外部下拉為低電平,P3口將輸 出電流(ILL) ,也是由于上拉的緣故。P3 口也可作為 AT89C51 的一些
15、特殊功能口: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 INT0(外部中斷0) P3.3 INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 WR (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) P3.7 RD (外部數(shù)據(jù)存儲(chǔ)器讀選通) 同時(shí)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 10 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期 的高電平時(shí)間。 ALE / PROG :當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于 鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用 于輸入編程脈沖。在平時(shí),ALE端
16、以不變的頻率周期 輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它 可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注 意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè) ALE脈沖。如想禁止 ALE的輸出可在SFR8EH 地址上置 0。此時(shí), ALE只有在執(zhí)行 MOVX,MOVC 指令時(shí) ALE才起作用。另外,該引腳被略微拉高。如果微處 理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取址期間, 每個(gè)機(jī)器周期PSEN兩次有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí), 這兩次有效的PSEN信號(hào)將不出現(xiàn)。 EA/VPP:當(dāng)EA 保持低電平時(shí),訪問(wèn)外部ROM;注意加密方式
17、1時(shí), EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時(shí),訪問(wèn)內(nèi) 部ROM。在FLASH 編程期間,此引腳也用于施加12V編程 電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。 (二)、溫度傳感器的選擇 由于傳統(tǒng)的熱敏電阻等測(cè)溫元件測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng) 的溫度,需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對(duì)較 高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測(cè)溫元件。 11 1、 DS18B20 簡(jiǎn)單介紹: DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件” ,其體積更小、
18、更適用于多種場(chǎng)合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線” 接口的溫度傳感器。溫度測(cè)量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定 的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依然保存。被測(cè)溫度用符號(hào)擴(kuò)展的 16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄 生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一 根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大 量的引線和邏輯電路。因此用它來(lái)
19、組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在 一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。 DS18B20 的性能特點(diǎn)如下: 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線 即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊 DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20 可以并聯(lián)在唯一的三線 上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫 DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集 成在形如一只三極管的集成電路內(nèi) 適應(yīng)電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由 數(shù)據(jù)線供電 溫范圍55125,在-10+85時(shí)精度為0.5 零待機(jī)功耗 可編程的分辨率為912位,對(duì)應(yīng)的
20、可分辨溫度分別為0.5、0.25、 12 0.125和0.0625,可實(shí)現(xiàn)高精度測(cè)溫 在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最 多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快 用戶可定義報(bào)警設(shè)置 報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器 件 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以一線總線 串行傳送給CPU ,同 時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力 負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能 正常工作 以上特點(diǎn)使DS18B20非常適用與多點(diǎn)、遠(yuǎn)距離溫度檢測(cè)系統(tǒng)。 DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感
21、器、 非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各 種封裝形式如圖 4.2 所示,DQ 為數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單總線接口引 腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;GND為地信號(hào); VDD為可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。其電 路圖 4.3所示.。 13 圖 4.2 外部封裝形式 圖4.3 傳感器電路圖 2、 DS18B20 使用中的注意事項(xiàng) DS18B20 雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線 少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: DS18B20 從測(cè)溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí)間
22、, 這是必須保證的,不然會(huì)出現(xiàn)轉(zhuǎn)換錯(cuò)誤的現(xiàn)象,使溫度輸出總是顯示 85。 在實(shí)際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V 左右,若電源電壓過(guò)低, 會(huì)使所測(cè)得的溫度精度降低。 較小的硬件開(kāi)銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處 理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫(xiě)編程時(shí),必 須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C 等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編 14 語(yǔ)言實(shí)現(xiàn)。 在DS18B20的有關(guān)資料中均未提及單總線上所掛DS18B20 數(shù)量問(wèn)題, 容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此, 當(dāng)單總
23、線上所掛DS18B20 超過(guò)8 個(gè)時(shí),就需要解決微處理器的總線 驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。 在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í)也要給予一定的重視。 3、 DS18B20 內(nèi)部結(jié)構(gòu) 圖為 DS1820 的內(nèi)部框圖,它主要包括寄生電源、溫度傳感器、64 位激 光 ROM 單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式 RAM) ,用于存 儲(chǔ)用戶設(shè)定
24、的溫度上下限值的 TH 和 TL 觸發(fā)器存儲(chǔ)與控制邏輯、8 位循環(huán)冗 余校驗(yàn)碼(CRC)發(fā)生器等七部分。 DS18B20采用腳PR35 封裝或腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如 圖 4.4所示 15 圖 4.4 DS18B20內(nèi)部結(jié)構(gòu)框圖 64 b 閃速 ROM 的結(jié)構(gòu)如下: 開(kāi)始位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48 位,最后位是前面56 位的CRC 檢驗(yàn)碼,這也是多個(gè)DS18B20 可以采用 一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器和,可通過(guò)軟件寫(xiě)入戶報(bào) 警上下限。主機(jī)操作ROM的命令有五種,如表所列 16 指 令 說(shuō) 明 讀ROM (33H) 讀DS1820的序列號(hào) 匹配ROM
25、 (55H) 繼讀完64位序列號(hào)的一個(gè)命令,用 于多個(gè)DS1820 時(shí)定位跳過(guò)ROM (CCH) 此命令執(zhí)行后的存儲(chǔ)器操作將針對(duì) 在線的所有DS1820搜ROM (F0H) 識(shí)別總線上各器件的編碼,為操作 各器件作好準(zhǔn)備報(bào)警搜索(ECH ) 僅溫度越限的器件對(duì)此命令作出響 應(yīng)DS18B20 溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存和一個(gè) 非易失性的可電擦除的EERAM。高速暫存RAM 的結(jié)構(gòu)為字節(jié)的存儲(chǔ)器, 結(jié)構(gòu)如圖 4.5所示。 圖 4.5 高速暫存RAM結(jié)構(gòu)圖 前個(gè)字節(jié)包含測(cè)得的溫度信息,第和第字節(jié)和的拷貝, 是易失的,每次上電復(fù)位時(shí)被刷新。第個(gè)字節(jié),為配置寄存器,它的內(nèi) 容用于確定溫度值
26、的數(shù)字轉(zhuǎn)換分辨率。DS18B20 工作時(shí)寄存器中的分辨率 轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。 溫度低位 溫度高位 TH TL 配置 保留 保留 保留 8 位 CRC LSB MSB 當(dāng) DS18B20 接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫 度值就以 16 位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第 17 1,2 字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在 后,數(shù)據(jù)格式以 0.062 5 /LSB 形式表示。溫度值格式如下: 這是 12 位轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲(chǔ)在 18B20 的兩個(gè) 8 比特的 RAM 中,二進(jìn)制中的前面 5 位是符號(hào)位,如果測(cè)得的溫
27、度大于 0,這 5 位 為 0,只要將測(cè)到的數(shù)值乘于 0.0625 即可得到實(shí)際溫度;如果溫度小于 0,這 5 位為 1,測(cè)到的數(shù)值需要取反加 1 再乘于 0.0625 即可得到實(shí)際溫 度。圖中,S 表示位。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位 S=0 時(shí),表示測(cè)得的溫 度植為正值,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng) S=1 時(shí),表示測(cè)得的溫度 植為負(fù)值,先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。例如+125的數(shù)字輸 出為 07D0H,+25.0625的數(shù)字輸出為 0191H,-25.0625 的數(shù)字輸出為 FF6FH,-55的數(shù)字輸出為 FC90H。 DS18B20 溫度傳感器主要用于對(duì)溫度進(jìn)行測(cè)量,數(shù)據(jù)可用 1
28、6 位符號(hào)擴(kuò) 展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,并以 0.0625LSB 形式表示。表 2 是部 分溫度值對(duì)應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。 表 2 部分溫度值 DS18B20 完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與 RAM 中的 TH、TL 字節(jié)內(nèi)容作比較,若 TTH 或 TTL,則將該器件內(nèi)的告警標(biāo)志置位,并對(duì) 18 主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只 DS18B20 同時(shí)測(cè)量溫 度并進(jìn)行告警搜索。 在 64 位 ROM 的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余校驗(yàn)碼(CRC)。主 機(jī)根據(jù) ROM 的前 56 位來(lái)計(jì)算 CRC 值,并和存入 DS18B20 中的 CRC 值 做比較,以判斷主機(jī)收到的 RO
29、M 數(shù) 據(jù)是否正確。 4、DS18B20 測(cè)溫原理 DS18B20 的測(cè)溫原理如圖 2 所示,圖中低溫度系數(shù)晶振的振蕩頻率受 溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器 1,高溫度系 數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器 2 的脈沖輸入,圖中還隱含著計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20 就對(duì)低溫 度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量.計(jì)數(shù)門(mén)的開(kāi) 啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55 所對(duì)應(yīng)的基 數(shù)分別置入減法計(jì)數(shù)器 1 和溫度寄存器中,減法計(jì)數(shù)器 1 和溫度寄存器被 預(yù)置在-55 所對(duì)應(yīng)的一個(gè)基數(shù)值。 減法計(jì)數(shù)器 1
30、 對(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 重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào) 進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器 2 計(jì)數(shù)到 0 時(shí),停止溫度寄存器值的累 加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫圖 2 中的斜率累加器用于補(bǔ)償和 修正測(cè)溫過(guò)程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì) 數(shù)門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就 是 DS18B20 的測(cè)溫原理。 另外,由于 DS18B20 單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概 念,因此讀寫(xiě)
31、時(shí) 序很重要。系統(tǒng)對(duì) DS18B20 的各種操作必須按協(xié)議進(jìn) 行。操作協(xié)議為:初始化 DS18B20 (發(fā)復(fù)位脈沖)發(fā) ROM 功能命令 發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。 19 圖(2) DS18B20 測(cè)溫原理圖 在正常測(cè)溫情況下,DS1820 的測(cè)溫分辨力為 0.5,可采用下述方法獲 得高分辨率的溫度測(cè)量結(jié)果:首先用 DS1820 提供的讀暫存器指令(BEH) 讀出以 0.5為分辨率的溫度測(cè)量結(jié)果,然后切去測(cè)量結(jié)果中的最低有效位 (LSB) ,得到所測(cè)實(shí)際溫度的整數(shù)部分 Tz,然后再用 BEH 指令取計(jì)數(shù)器 1 的計(jì)數(shù)剩余值 Cs 和每度計(jì)數(shù)值 CD。考慮到 DS1820 測(cè)量溫度的整數(shù)部分以
32、0.25、0.75為進(jìn)位界限的關(guān)系,實(shí)際溫度 Ts 可用下式計(jì)算: Ts=(Tz-0.25)+(CD-Cs)/CD 5、提高 DS1820 測(cè)溫精度的途徑 (1)、DS1820 高精度測(cè)溫的理論依據(jù) DS1820 正常使用時(shí)的測(cè)溫分辨率為 0.5,這對(duì)于水輪發(fā)電機(jī)組軸瓦 溫度監(jiān)測(cè)來(lái)講略顯不足,在對(duì) DS1820 測(cè)溫原理詳細(xì)分析的基礎(chǔ)上,我們采 取直接讀取 DS1820 內(nèi)部暫存寄存器的方法,將 DS1820 的測(cè)溫分辨率提高 到 0.10.01 20 DS1820 內(nèi)部暫存寄存器的分布如表 1 所示,其中第 7 字節(jié)存放的是當(dāng) 溫度寄存器停止增值時(shí)計(jì)數(shù)器 1 的計(jì)數(shù)剩余值,第 8 字節(jié)存放的
33、是每度所 對(duì)應(yīng)的計(jì)數(shù)值,這樣,我們就可以通過(guò)下面的方法獲得高分辨率的溫度測(cè) 量結(jié)果。首先用 DS1820 提供的讀暫存寄存器指令(BEH)讀出以 0.5為分辨 率的溫度測(cè)量結(jié)果,然后切去測(cè)量結(jié)果中的最低有效位(LSB),得到所測(cè)實(shí) 際溫度整數(shù)部分 T 整數(shù),然后再用 BEH 指令讀取計(jì)數(shù)器 1 的計(jì)數(shù)剩余值 M 剩余和每度計(jì)數(shù)值 M 每度,考慮到 DS1820 測(cè)量溫度的整數(shù)部分以 0.25、 0.75為進(jìn)位界限的關(guān)系,實(shí)際溫度 T 實(shí)際可用下式計(jì)算得到:T 實(shí)際=(T 整數(shù)0.25)+(M 每度M 剩余)/M 每度。 表 1 DS18B20 暫存寄存器分布 該字節(jié)各位的定義如下: TM R1
34、 R0 1 1 1 1 1 低 5 位一直都是 1,TM 是測(cè)試模式位,用于設(shè)置 DS18B20 在工作模式還是在測(cè) 試模式。在 DS18B20 出廠時(shí)該位被設(shè)置為 0,用戶不要去改動(dòng),R1 和 R0 決定溫度轉(zhuǎn) 換的精度位數(shù),即是來(lái)設(shè)置分辨率,如表 1 所示(DS18B20 出廠時(shí)被設(shè)置為 12 位)。 R1 R0 分辨率 溫度最大轉(zhuǎn)換時(shí)/mm 0 0 9 位 93.75 0 1 10 位 187.75 1 0 11 位 275.00 1 1 12 位 750.00 表 1 R1 和 R2 模式表 21 由表 1 可見(jiàn),設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。 因此,在實(shí)際應(yīng)用中要
35、在分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存存儲(chǔ)器除 了配置寄存器外,還有其他 8 個(gè)字節(jié)組成,其分配如下所示。其中溫度信 息(第 1,2 字節(jié)) 、T H 和 TL 值第 3,4 字節(jié)、第 68 字節(jié)未用,表現(xiàn)為全 邏輯 1;第 9 字節(jié)讀出的是前面所有 8 個(gè)字節(jié)的 CRC 碼,可用來(lái)保證通信 正確。 根據(jù) DS18B20 的通訊協(xié)議,主機(jī)控制 DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過(guò) 三個(gè)步驟:每一次讀寫(xiě)之前 都要對(duì) DS18B20 進(jìn)行復(fù)位,復(fù)位成功后 發(fā)送一條 ROM 指令,最后發(fā)送 RAM 指令,這樣才能對(duì) DS18B20 進(jìn)行預(yù)定的 操作。復(fù)位要求主 CPU 將數(shù)據(jù)線下拉 500 微秒,然后
36、釋放,DS18B20 收到 信號(hào)后等待 1660 微秒左右,后發(fā)出 60240 微秒的存在低脈沖,主 CPU 收到此信號(hào)表示復(fù)位成功。 (2)、 測(cè)量數(shù)據(jù)比較 表 2 為采用直接讀取測(cè)溫結(jié)果方法和采用計(jì)算方法得到的測(cè)溫?cái)?shù)據(jù)比 較,通過(guò)比較可以看出,計(jì)算方法在 DS1820 測(cè)溫中不僅是可行的,也可以 大大的提高 DS1820 的測(cè)溫分辨率。 表 2 DS18B20 直度測(cè)溫結(jié)果與計(jì)算測(cè)溫結(jié)果數(shù)據(jù)比較 (三)、顯示及報(bào)警模塊器件選擇 在本設(shè)計(jì)中溫度測(cè)量范圍為0125 ,精度為0.5,因此只需 要液晶就可以完成相關(guān)的顯示功能,報(bào)警器可以用有源蜂鳴器配合三極管 來(lái)代替。 22 五、硬件設(shè)計(jì)電路 溫度
37、計(jì)電路設(shè)計(jì)原理圖如圖5.1所示,控制器使用單片機(jī)AT89C2051,溫度 計(jì)傳感器使用DS18B20,用液晶實(shí)現(xiàn)溫度顯示。 本溫度計(jì)大體分三個(gè)工作過(guò)程。首先,由DS18820溫度傳感器芯片測(cè)量 當(dāng)前的溫度,并將結(jié)果送入單片機(jī)。然后,通過(guò)89C205I單片機(jī)芯片對(duì)送來(lái) 的測(cè)量溫度讀數(shù)進(jìn)行計(jì)算和轉(zhuǎn)換,井將此結(jié)果送入液晶顯示模塊。最后, SMC1602A芯片將送來(lái)的值顯示于顯示屏上。 由圖1可看到,本電路主要由 DSl8820溫度傳感器芯片、SMCl602A液晶顯示模塊芯片和89C2051單片機(jī)芯 片組成。其中,DSI8B20溫度傳感器芯片采用“一線制 ”與單片機(jī)相連,它獨(dú) 立地完成溫度測(cè)量以及將溫
38、度測(cè)量結(jié)果送到單片機(jī)的工作。 圖5.1 溫度計(jì)電路設(shè)計(jì)原理圖 23 (一)、主控制器 單片機(jī)AT89C2051具有低電壓供電和小體積等特點(diǎn),兩個(gè)端口剛好滿 足電路系統(tǒng)的設(shè)計(jì)需要,很合適攜手特式產(chǎn)品的使用。主機(jī)控制DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指 令。必須先啟動(dòng)DS18B20 開(kāi)始轉(zhuǎn)換,再讀出溫度轉(zhuǎn)換值。 (二)、顯示電路 顯示電路采用SMCI602A液晶顯示模塊芯片該芯片可顯示162個(gè)字符, 比以前的七段數(shù)碼管LED顯示器在顯示字符的數(shù)量上要多得多。另外,由 于SMCl602芯片編程比較簡(jiǎn)單,界面直觀,因此更加易于使用者操作和觀 測(cè)。SMCl6
39、02A芯片的接口信號(hào)說(shuō)明如表 1所列。 表1 SMCl602A芯片的接口信號(hào)說(shuō)明 (三)、 溫度檢測(cè)電路 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 ire 總線的信號(hào)線DQ 為高電平時(shí), 竊取信號(hào)能量給DS18B20 供電, 同時(shí)一部分能量給內(nèi)部電容 24 充電, 當(dāng)DQ為低電平時(shí)釋放能量為DS18B20 供電。但寄生電源方式需要強(qiáng) 上拉電路, 軟件
40、控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)到 E2PROM 時(shí)) , 同時(shí)芯片的性能也有所降低。因此, 在條件允許的場(chǎng)合, 盡 量采用外供電方式。無(wú)論是內(nèi)部寄生電源還是外部供電,I/O口線要接5K 左右的上拉電。在這里采用前者方式供電。DS18B20與芯片連接電路如圖 5.2所示: 圖 5.2 DS18B20與單片機(jī)的連接 外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干 擾能力強(qiáng),而且電路也比較簡(jiǎn)單,可以開(kāi)發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系 統(tǒng)。站長(zhǎng)推薦大家在開(kāi)發(fā)中使用外部電源供電方式,畢竟比寄生電源方式 只多接一根VCC 引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電
41、源 電壓范圍的優(yōu)點(diǎn),即使電源電壓VCC 降到3V 時(shí),依然能夠保證溫度量精 度。 由于DS18B20 只有一根數(shù)據(jù)線,因此它和主機(jī)(單片機(jī))通信是需要 串行通信,而AT89S51 有兩個(gè)串行端口,所以可以不用軟件來(lái)模擬實(shí)現(xiàn)。 經(jīng)過(guò)單線接口訪問(wèn)DC18B20 必須遵循如下協(xié)議:初始化、ROM 操作命令、 存儲(chǔ)器操作命令和控制操作。要使傳感器工作,一切處理均嚴(yán)格按照時(shí)序。 25 主機(jī)發(fā)送(Tx)-復(fù)位脈沖(最短為 480s 的低電平信號(hào))。接著主 機(jī)便釋放此線并進(jìn)入接收方式(Rx)。總線經(jīng)過(guò)4.7K 的上拉電阻被拉至高 電平狀態(tài)。在檢測(cè)到I/O 引腳上的上升沿之后,DS18B20 等待1560s,
42、 并且接著發(fā)送脈沖(60240s 的低電平信號(hào))。然后以存在復(fù)位脈沖表 示DS18B20 已經(jīng)準(zhǔn)備好發(fā)送或接收,然后給出正確的ROM 命令和存儲(chǔ)操 作命令的數(shù)據(jù)。DS18B20 通過(guò)使用時(shí)間片來(lái)讀出和寫(xiě)入數(shù)據(jù),時(shí)間片用于 處理數(shù)據(jù)位和進(jìn)行何種指定操作的命令。它有寫(xiě)時(shí)間片和讀時(shí)間片兩種: 寫(xiě)時(shí)間片:當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時(shí),產(chǎn)生 寫(xiě)時(shí)間片。有兩種類型的寫(xiě)時(shí)間片:寫(xiě)1 時(shí)間片和寫(xiě)0 時(shí)間片。所 有時(shí)間片必須有60 微秒的持續(xù)期,在各寫(xiě)周期之間必須有最短為1 微秒的恢復(fù)時(shí)間. 讀時(shí)間片:從DS18B20 讀數(shù)據(jù)時(shí),使用讀時(shí)間片。當(dāng)主機(jī)把數(shù)據(jù) 線從邏輯高電平拉至邏輯低電平時(shí)產(chǎn)生讀時(shí)間
43、片。數(shù)據(jù)線在邏輯低 電平必須保持至少1 微秒;來(lái)自DS18B20 的輸出數(shù)據(jù)在時(shí)間下降 沿之后的15 微秒內(nèi)有效。為了讀出從讀時(shí)間片開(kāi)始算起15微秒的 狀態(tài),主機(jī)必須停止把引腳驅(qū)動(dòng)拉至低電平。在時(shí)間片結(jié)束時(shí),I/O 引腳經(jīng)過(guò)外部的上_鱯_9L_%拉電阻拉回高電平,所有讀時(shí)間片 的最短持續(xù)期為60 微秒,包括兩個(gè)讀周期間至少1s 的恢復(fù)時(shí)間。 一旦主機(jī)檢測(cè)到DS18B20 的存在,它便可以發(fā)送一個(gè)器件ROM 操作 命令。所有ROM 操作命令均為8位長(zhǎng)。 所有的串行通訊,讀寫(xiě)每一個(gè)bit 位數(shù)據(jù)都必須嚴(yán)格遵守器件的時(shí)序邏 輯來(lái)編程,同時(shí)還必須遵守總線命令序列,對(duì)單總線的DS18B20 芯片來(lái)說(shuō),
44、訪問(wèn)每個(gè)器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM 命令; 最后就是執(zhí)行功能命令(ROM 命令和功能命令后面以表格形式給出)。如果 出現(xiàn)序列混亂,則單總線器件不會(huì)響應(yīng)主機(jī)。當(dāng)然,搜索ROM命令和報(bào)警 搜索命令,在執(zhí)行兩者中任何一條命令之后,要返回初始化。 基于單總線上的所有傳輸過(guò)程都是以初始化開(kāi)始的,初始化過(guò)程由主 機(jī)發(fā)出的復(fù)位脈沖和從機(jī)響應(yīng)的應(yīng)答脈沖組成。應(yīng)答脈沖使主機(jī)知道,總 線上有從機(jī),且準(zhǔn)備就緒。 在主機(jī)檢測(cè)到應(yīng)答脈沖后,就可以發(fā)出ROM 命令。這些命令與各個(gè)從 機(jī)設(shè)備的唯一64 位ROM 代碼相關(guān)。在主機(jī)發(fā)出ROM命令,以訪問(wèn)某個(gè)指 定的DS18B20,接著就可以發(fā)出DS
45、18B20 支持的某個(gè)功能命令。這些命令 26 允許主機(jī)寫(xiě)入或讀出DS18B20便箋式RAM 、啟動(dòng)溫度轉(zhuǎn)換。軟件實(shí)現(xiàn) DS18B20的工作嚴(yán)格遵守單總線協(xié)議: (1)主機(jī)首先發(fā)出一個(gè)復(fù)位脈沖,信號(hào)線上的DS18B20 器件被復(fù)位。 (2)接著主機(jī)發(fā)送ROM命令,程序開(kāi)始讀取單個(gè)在線的芯片ROM編碼并 保存在單片機(jī)數(shù)據(jù)存儲(chǔ)器中,把用到的DS18B20 的ROM 編碼離線 讀出,最后用一個(gè)二維數(shù)組保存ROM 編碼,數(shù)據(jù)保存在X25043 中。 (3)系統(tǒng)工作時(shí),把讀取了編碼的DS18B20 掛在總線上。發(fā)溫度轉(zhuǎn)換命 令,再總線復(fù)位。 (4)然后就可以從剛才的二維數(shù)組匹配在線的溫度傳感器,隨后發(fā)溫
46、度 讀取命令就可以獲得對(duì)應(yīng)的度值了。 在主機(jī)初始化過(guò)程,主機(jī)通過(guò)拉低單總線至少480us,來(lái)產(chǎn)生復(fù)位脈沖。 接著,主機(jī)釋放總線,并進(jìn)入接收模式。當(dāng)總線被釋放后,上拉電阻將單 總線拉高。在單總線器件檢測(cè)到上升沿后,延時(shí)1560us,接著通過(guò)拉低 總線60240us,以產(chǎn)生應(yīng)答脈沖。 寫(xiě)時(shí)序均起始于主機(jī)拉低總線,產(chǎn)生寫(xiě)1 時(shí)序的方式:主機(jī)在拉低總 線后,接著必須在15us之內(nèi)釋放總線。產(chǎn)生寫(xiě)0 時(shí)序的方式:在主機(jī)拉低 總線后,只需在整個(gè)時(shí)序期間保持低電平即可(至少60us)。在寫(xiě)字節(jié)程序中 的寫(xiě)一個(gè)bit 位的時(shí)候,沒(méi)有按照通常的分別寫(xiě)0時(shí)序和寫(xiě)1 時(shí)序,而是把 兩者結(jié)合起來(lái),當(dāng)主機(jī)拉低總線后在1
47、5us 之內(nèi)將要寫(xiě)的位 c 給DO:如果c 是高電平滿足15us 內(nèi)釋放總線的要求,如果c是低電平,則DOc這條語(yǔ)句 仍然是把總線拉在低電平,最后都通過(guò)延時(shí)58us 完成一個(gè)寫(xiě)時(shí)序( 寫(xiě)時(shí)序0 或?qū)憰r(shí)序1) 過(guò)程。 寫(xiě)時(shí)間時(shí)序:當(dāng)主機(jī)把數(shù)據(jù)從邏輯高電平拉到邏輯低電平的時(shí)候,寫(xiě) 時(shí)間隙開(kāi)始。有兩種寫(xiě)時(shí)間隙,寫(xiě)1 時(shí)間隙和寫(xiě)0 時(shí)間隙。所有寫(xiě)時(shí)間隙 必須最少持續(xù)60s,包括兩個(gè)寫(xiě)周期至少1s 的恢復(fù)時(shí)間。I/O線電平變 低后,DS18B20 在一個(gè)15 s 到60s 的窗口內(nèi)對(duì) I/O 線采樣。如果線上 事高電平,就是寫(xiě)1,如果是低電平,就是寫(xiě)0。主機(jī)要生成一個(gè)寫(xiě)時(shí)間隙, 必須把數(shù)據(jù)線拉到低電平然
48、后釋放,在寫(xiě)時(shí)間隙開(kāi)始后的15s 內(nèi)允許數(shù) 據(jù)線拉到高電平。主機(jī)要生成一個(gè)寫(xiě)0 時(shí)間隙,必須把數(shù)據(jù)線拉到低電平 并保存60s。 每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至少拉低總線1us,在主機(jī)發(fā)起讀時(shí)序之后, 單總線器件才開(kāi)始在總線上發(fā)送0 或1。所有讀時(shí)序至少需要60us。 27 源程序: 假設(shè)要寫(xiě)1 B 的數(shù)據(jù), 且數(shù)據(jù)放在A 中。 SETB TEM PDN NOP NOP WRITEDS1820LOP: CLRTEM PD IN MOV R6, # 08H ; 延時(shí)15 Ls DJN ZR6, RRCA ; 將要寫(xiě)數(shù) 據(jù)存入C MOV TEM PD IN , C ; 將數(shù)據(jù)寫(xiě) 入總線 MOV R6,
49、# 14H ; 延時(shí)40 Ls DJN ZR6, SETB TEM PD IN ; 釋放總線 DJN ZR7,WR ITEDS1820LO P ; 寫(xiě)8 位 RET 讀時(shí)間時(shí)序:當(dāng)從DS18B20 讀數(shù)據(jù)時(shí),主機(jī)生成讀時(shí)間隙。當(dāng)主機(jī)把 數(shù)據(jù)從高電平拉到低電平時(shí),寫(xiě)時(shí)間隙開(kāi)始,數(shù)據(jù)線必須保持至少1s; 從DS18B20輸出的數(shù)據(jù)在讀時(shí)間隙的下降沿出現(xiàn)后15s 內(nèi)有效。 因此,主機(jī)在讀時(shí)間隙開(kāi)始后必須把I/O 腳驅(qū)動(dòng)拉為的電平保持 15s,以讀取I/O 腳狀態(tài)。在讀時(shí)間隙的結(jié)尾,I/O 引腳將被外部上拉電 阻拉到高電平。所有讀時(shí)間隙必須最少60s,包括兩個(gè)讀周期至少 1s 的 恢復(fù)時(shí)間。 源程序:
50、 假設(shè)要讀1B 的數(shù)據(jù), 且數(shù)據(jù)放在A 中。 READDS1820:MOV R7, # 08H ; 1 個(gè)字節(jié)8 位 SETB TEM PD IN NO P NO P READDS1820LOO P: CLRTEM PD IN NO P SETBTEM PD IN ; 釋放總線 MOV R6, # 05H ; 延時(shí)10 Ls DJN ZR6, MOV C, TEM PD N ; 采樣總線 28 數(shù)據(jù) MOV R6, # 14H ; 延時(shí)40 Ls DJN ZR6, RRCA ; 采樣數(shù)據(jù) 存入A SETB TEM PD IN ; 釋放總線 DJN ZR7, READDS1820LOO P ;
51、采樣下一 位 MOV R6, # 14H ; 延時(shí)40 Ls DJN ZR6, RET 讀/寫(xiě)時(shí)序如圖 5.3如下: 29 圖 5.3 DS18B20的讀寫(xiě)時(shí)序圖 復(fù)位時(shí)序:復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放, DS18B20收到信號(hào)后等待 1660 微秒左右,后發(fā)出60240 微秒的存在低 脈沖,主CPU 收到此信號(hào)表示復(fù)位成功。 源程序: 其中TEM PD IN 定義為DS18B20 的數(shù)據(jù)管腳, 主機(jī)為A T89C2051。 N ITDS1820: SETBTEM PD N NO P NO P CLR TEM PD N MOV R6, # 0A 0H ; 延時(shí)640 Ls
52、DJN ZR6, MOV R6, # 0A 0H DJN ZR6, SETB TEM PD N ; 釋放總線 MOV R6, # 32H ; 延時(shí) 100 Ls, 等待回應(yīng) DJN ZR6, MOV R6, # 3CH LOO P1820: MOV C, TEM PD N ; 采樣總線信 號(hào) JCN ITDS1820OU T DJN ZR6,LOO P1820 MOV R6, # 064H DJN ZR6, 30 SJM PN ITDS1820 RET IN ITDS1820OU T: SETBTEM PD N RET 復(fù)位時(shí)序如圖 5.3所示: (四)、溫度報(bào)警電路 本設(shè)計(jì)采軟件處理報(bào)警,利
53、用有源蜂鳴器進(jìn)行報(bào)警輸出,采用直流供電。 當(dāng)所測(cè)溫度超過(guò)獲低于所預(yù)設(shè)的溫度時(shí),數(shù)據(jù)口相應(yīng)拉高電平,報(bào)警輸出。 (也可采用發(fā)光二級(jí)管報(bào)警電路,如過(guò)需要報(bào)警,則只需將相應(yīng)位置1,當(dāng) 參數(shù)判斷完畢后,再看報(bào)警模型單元ALARM 的內(nèi)容是否與預(yù)設(shè)一樣,如不 一樣,則發(fā)光報(bào)警)報(bào)警電路硬件連接見(jiàn)圖 5.10。 31 圖 5.10蜂鳴器電路連接圖 六、 軟件設(shè)計(jì) (一)、 概述 整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型后, 軟件的功能也就基本定下來(lái)了。從軟件的功能不同可分為兩大類:一是監(jiān) 控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門(mén)用來(lái)協(xié)調(diào)各執(zhí)行模塊 和操作者的關(guān)系。二是執(zhí)行軟件(子程
54、序),它是用來(lái)完成各種實(shí)質(zhì)性的 功能如測(cè)量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能 執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定 義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根 據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要 求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。 (二)、主程序模塊 主程序需要調(diào)用4 個(gè)子程序,分別為數(shù)碼管顯示程序,溫度測(cè)試及處 理子程序,報(bào)警子程序,中斷設(shè)定子程序。各模塊程序功能如下: 數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。 溫度測(cè)試及處理程序:對(duì)溫度芯片送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理,
55、進(jìn)行判 斷和顯示。 報(bào)警子程序:進(jìn)行溫度上下限判斷及報(bào)警輸出。 中斷設(shè)定程序:實(shí)現(xiàn)設(shè)定上下限報(bào)警功能。 主程序流程見(jiàn)圖6.1: 32 圖 6.1 DS18B20初始化流程圖 圖 6.2主程序流程 圖 (三)、各模塊流程設(shè)計(jì) 下面對(duì)主要子程序的流程圖做介紹 1、 溫度檢測(cè)流程 DS18B20在單片機(jī)控制下分三個(gè)階段: 33 18B20 初始化:初始化流程圖見(jiàn) 讀18B20時(shí)序:讀DS18B20流程見(jiàn)圖 6.3: 寫(xiě)18B20時(shí)序:寫(xiě)18B20 流程見(jiàn)圖6.4 圖 6.3讀DS18B20流程圖 圖 6.4寫(xiě)DS18B20流 程圖 2、報(bào)警模塊流程 流程見(jiàn)圖6.5 34 圖 6.5 報(bào)警模塊子程序流
56、程圖 3、 中斷設(shè)定流程 中斷模塊采用了外中斷和內(nèi)中斷套用方法。當(dāng)設(shè)計(jì)需要實(shí)現(xiàn)上下限報(bào) 警時(shí),利用 INT0口進(jìn)行中斷,set 鍵進(jìn)行上下限報(bào)警溫度設(shè)定,進(jìn)入溫度 35 設(shè)定狀態(tài)后(按一下溫度設(shè)定鍵),首先會(huì)提示顯示“UP”字母,表示要 用戶設(shè)定高溫報(bào)警溫度,按S3 鍵 ,表示本位數(shù)字+1,按S4 表示移向下一 位,如果4 位高溫設(shè)定完畢,則顯示“DO”,表示要用戶設(shè)定低溫報(bào)警溫 度。4位低溫設(shè)定完畢,如果用戶設(shè)置的高溫比設(shè)定的低溫高的話則顯示 “ERRO”表示錯(cuò)誤提示,同時(shí)會(huì)有蜂鳴器及時(shí)報(bào)警提示,然后自動(dòng)顯示 “UP”,讓用戶重新進(jìn)行溫度設(shè)定。中斷設(shè)定子程序流程圖見(jiàn)下圖 圖6.6 中斷設(shè)定子
57、程序流程圖 36 七、自我評(píng)價(jià) 本設(shè)計(jì)利用89S51 芯片控制溫度傳感器DS18B20,再輔之以部分外圍電 路實(shí)現(xiàn)對(duì)環(huán)境溫度的測(cè)控,性能穩(wěn)定,精度教高,而且擴(kuò)展性能很強(qiáng)大。 由于DS18B20 支持單總線協(xié)議,我們可以將多個(gè)DS18B20 可以并聯(lián)到3 根 或2 根線上,CPU 只需一根端口線就能與諸多DS18B20 通信,占用較少的 微處理器的端口就可以實(shí)現(xiàn)多點(diǎn)測(cè)溫監(jiān)控系統(tǒng)??梢约尤?302 時(shí)鐘芯片實(shí) 現(xiàn)對(duì)時(shí)間進(jìn)行顯示,加之AT24C16 存儲(chǔ)芯片來(lái)實(shí)現(xiàn)對(duì)時(shí)間和溫度數(shù)據(jù)的記 錄,利用MAX232芯片和計(jì)算機(jī)實(shí)現(xiàn)串口通訊,這樣就可以方便的統(tǒng)計(jì)出特 定時(shí)間內(nèi)的需要的時(shí)間和溫度數(shù)據(jù)。由于DS18
58、B20的測(cè)量精度只有0.5 度, 往往很多場(chǎng)合需要更加精確的溫度,在所測(cè)溫度精度不變的基礎(chǔ)上必須對(duì) 數(shù)據(jù)進(jìn)行校正。由于DS18B20 是基于帶隙結(jié)構(gòu)的數(shù)字式溫度傳感器,PN 結(jié) 增量電壓正比于IC 絕對(duì)溫度(PTAT),它的測(cè)溫精度較高,但存在著一定 的誤差.不過(guò),其誤差在時(shí)間和外部環(huán)境變化的條件下,保持相當(dāng)高的穩(wěn)定性。 針對(duì)這一特性,基于線性插補(bǔ)的數(shù)學(xué)思想,利用DSP技術(shù),對(duì)其進(jìn)行誤差校正 補(bǔ)償.這種誤差校正的補(bǔ)償方法,不需增加硬件電路,計(jì)算方法簡(jiǎn)單,軟件費(fèi) 用也很小,既提高了測(cè)量精度,又不需增加成本。它充分利用監(jiān)控計(jì)算機(jī)的 處理能力,在監(jiān)控計(jì)算機(jī)上用線性插補(bǔ)的數(shù)學(xué)方法對(duì)其進(jìn)行誤差校正補(bǔ)償,
59、 能輕易地將其提高其精度。 經(jīng)過(guò)將近一周的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì), 雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但從心底里說(shuō),還是高興的, 從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以 后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí) 用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng) 常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次課程設(shè) 計(jì)中的最大收獲。 37 八、致謝 在本畢業(yè)設(shè)計(jì)的設(shè)計(jì)和制作過(guò)程中,感謝老師給了我很大的幫助,同時(shí)也 離不開(kāi)很多的同學(xué)熱心幫助,是他們?cè)谖矣龅诫y題的時(shí)候給了我啟發(fā)。通過(guò)本 次畢業(yè)設(shè)計(jì),我在專業(yè)知識(shí)、專業(yè)技能和解決問(wèn)題方法方面得到很大的提高。 更深入了解并掌握了傳感器的基本理論知識(shí),并在單片機(jī)實(shí)際電路開(kāi)發(fā)和常用 編程設(shè)計(jì)思路掌握方面有了一定程度的掌握,盡管本次設(shè)計(jì)還不是很完善,但 這為我以后的設(shè)計(jì)之路積累了寶貴 38 指導(dǎo)老師評(píng)語(yǔ) 課程設(shè)計(jì)成績(jī) 指導(dǎo)老師簽字 2010 年 月 日
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代文閱讀之小說(shuō)人物形象課件
- 3第12課蘇東的艱難探索
- 《第二節(jié)--探究環(huán)境污染對(duì)生物的影響》課件-(同課異構(gòu))2022年課件
- 牛津譯林版七下英語(yǔ)7bunit1dreamhomesreading課件1
- 六年級(jí)語(yǔ)文《一個(gè)這樣的老師》教學(xué)課件
- 六年級(jí)安全教育-運(yùn)動(dòng)的自我監(jiān)控課件
- 五年級(jí)下冊(cè)數(shù)學(xué)優(yōu)秀教學(xué)課件《解決問(wèn)題》人教新課標(biāo)
- 27清澈的湖水 (2)
- 49稍復(fù)雜的分?jǐn)?shù)乘法應(yīng)用題練習(xí)
- 江蘇省高考物理二輪復(fù)習(xí)專題一力與物體的平衡課件
- 小松鼠找花生課件(教育精品)
- 22跨越海峽的生命橋 (2)
- 人力資源環(huán)境分析
- 《空氣》課件-(省優(yōu))2022年人教版化學(xué)課件-2
- 鐵路與城市軌道交通振動(dòng)與噪聲