數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì)_第1頁(yè)
數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì)_第2頁(yè)
數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì)_第3頁(yè)
數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì)_第4頁(yè)
數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、浙江大學(xué)城市學(xué)院 實(shí) 驗(yàn) 報(bào) 告 紙 編號(hào):2011 -2012 學(xué)年第 2 學(xué)期實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)課程名稱 數(shù)字系統(tǒng)基礎(chǔ)實(shí)驗(yàn) 專 業(yè) 班 級(jí) 電信1002 學(xué)生姓名及學(xué)號(hào) 實(shí)驗(yàn)指導(dǎo)教師 實(shí)驗(yàn)項(xiàng)目名稱 基于51單片機(jī)的智能數(shù)字溫度計(jì)的設(shè)計(jì) 指導(dǎo)老師 肖鐸 成績(jī) 一、實(shí)驗(yàn)任務(wù) 設(shè)計(jì)89s51的數(shù)字溫度計(jì)系統(tǒng)二、實(shí)驗(yàn)要求 1基本要求a) 能夠測(cè)量的溫度范圍 -20100b) 精度=0.5c) 能對(duì)所測(cè)的溫度進(jìn)行數(shù)字顯示d) 采用ds18b20智能溫度傳感器e) 基于51單片機(jī)設(shè)計(jì) 2選項(xiàng)a) 用lcd顯示所測(cè)溫度b) 預(yù)置溫度并控制溫度(3*4鍵盤,加熱電阻)c) 所測(cè)溫度通過(guò)rs232傳到pc三

2、、器件1 器件簡(jiǎn)介單片機(jī)89s51vcc:電源電壓輸入端。 gnd:電源地。 p0口:p0口為一個(gè)8位漏級(jí)開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 pdip封裝的at89s51管腳圖p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上

3、拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(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)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙

4、向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口除了作為普通i/o口,還有第二功能: p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(t0定時(shí)器的外部計(jì)數(shù)輸入) p3.5 t1(t1定時(shí)器的外部計(jì)數(shù)輸入) p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器的寫選通) p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器的讀選通) p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 i/o口作為輸入口

5、時(shí)有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù),而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線,經(jīng)過(guò)某種運(yùn)算或變換后再寫回到端口鎖存器。只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線。89c51的p0、p1、p2、p3口作為輸入時(shí)都是準(zhǔn)雙向口。除了p1口外p0、p2、p3口都還有其他的功能。 rst:復(fù)位輸入端,高電平有效。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:地址鎖存允許/編程脈沖信號(hào)端。當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸

6、出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是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:外部程序存儲(chǔ)器訪問(wèn)允許。當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(000

7、0h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:片內(nèi)振蕩器反相放大器和時(shí)鐘發(fā)生器的輸入端。 xtal2:片內(nèi)振蕩器反相放大器的輸出端。1602lcd功能介紹1602采用標(biāo)準(zhǔn)的16腳接口,其中: 第1腳:vss為電源地 第2腳:vdd接5v電源正極 第3腳:v0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10k的電位器調(diào)整對(duì)比度)。 第4腳:rs為寄存器選擇

8、,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。 第5腳:rw為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。 第6腳:e(或en)端為使能(enable)端。 第714腳:d0d7為8位雙向數(shù)據(jù)端。 第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。1602lcd的特性n+5v電壓,對(duì)比度可調(diào) n內(nèi)含復(fù)位電路 n提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能 n有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器ddram n內(nèi)建有160個(gè)5x7點(diǎn)陣的字型的字符發(fā)生器cgrom n8個(gè)可由用戶自定義的5x7的字符發(fā)生器cgram1602通過(guò)d0d7的8位數(shù)據(jù)端傳輸

9、數(shù)據(jù)和指令。 顯示模式設(shè)置: (初始化) 0011 0000 0x38 設(shè)置162顯示,57點(diǎn)陣,8位數(shù)據(jù)接口; 顯示開關(guān)及光標(biāo)設(shè)置: (初始化) 0000 1dcb d顯示(1有效)、c光標(biāo)顯示(1有效)、b光標(biāo)閃爍(1有效) 0000 01ns n=1(讀或?qū)懸粋€(gè)字符后地址指針加1 &光標(biāo)加1), n=0(讀或?qū)懸粋€(gè)字符后地址指針減1 &光標(biāo)減1), s=1 且 n=1 (當(dāng)寫一個(gè)字符后,整屏顯示左移) s=0 當(dāng)寫一個(gè)字符后,整屏顯示不移動(dòng) 數(shù)據(jù)指針設(shè)置: 數(shù)據(jù)首地址為80h,所以數(shù)據(jù)地址為80h+地址碼(0-27h,40-67h) 其他設(shè)置: 01h(顯示清屏,數(shù)據(jù)指針=0,所有顯示=

10、0);02h(顯示回車,數(shù)據(jù)指針=0)ds18b20ds18b20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有l(wèi)tm8877,ltm8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的ds18b20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫(kù)測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。 1: 技術(shù)性能描述 、 獨(dú)特的單線接口方式,ds18b20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊

11、。 、測(cè)溫范圍 55+125,固有測(cè)溫分辨率0.5。 、支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個(gè),實(shí)現(xiàn)多點(diǎn)測(cè)溫,如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)牟环€(wěn)定。 、工作電源: 35v/dc 、在使用中不需要任何外圍元件 、 測(cè)量結(jié)果以912位數(shù)字量方式串行傳送 、不銹鋼保護(hù)管直徑 6 、適用于dn1525, dn40dn250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測(cè)溫 、 標(biāo)準(zhǔn)安裝螺紋 m10x1, m12x1.5, g1/2”任選 、pvc電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接。 接線說(shuō)明特點(diǎn) 獨(dú)特的一線接口,只需要一條口線通信 多

12、點(diǎn)能力,簡(jiǎn)化了分布式溫度傳感應(yīng)用 無(wú)需外部元件 可用數(shù)據(jù)總線供電,電壓范圍為3.0 v至5.5 v 無(wú)需備用電源 測(cè)量溫度范圍為-55 c至+125 。華氏相當(dāng)于是-67 f到257華氏度 -10 c至+85 c范圍內(nèi)精度為0.5 c 溫度傳感器可編程的分辨率為912位 溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒 用戶可定義的非易失性溫度報(bào)警設(shè)置 應(yīng)用范圍包括恒溫控制,工業(yè)系統(tǒng),消費(fèi)電子產(chǎn)品溫度計(jì),或任何熱敏感系統(tǒng) 描述該ds18b20的數(shù)字溫度計(jì)提供9至12位(可編程設(shè)備溫度讀數(shù)。信息被發(fā)送到/從ds18b20 通過(guò)1線接口,所以中央微處理器與ds18b20只有一個(gè)一條口線連接。為讀寫以及溫

13、度轉(zhuǎn)換可以從數(shù)據(jù)線本身獲得能量,不需要外接電源。 因?yàn)槊恳粋€(gè)ds18b20的包含一個(gè)獨(dú)特的序號(hào),多個(gè)ds18b20s可以同時(shí)存在于一條總線。這使得溫度傳感器放置在許多不同的地方。它的用途很多,包括空調(diào)環(huán)境控制,感測(cè)建筑物內(nèi)溫設(shè)備或機(jī)器,并進(jìn)行過(guò)程監(jiān)測(cè)和控制。 1、ds18b20的主要特性 1.1、適應(yīng)電壓范圍更寬,電壓范圍:3.05.5v,在寄生電源方式下可由數(shù) 據(jù)線供電 1.2、獨(dú)特的單線接口方式,ds18b20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊 1.3、 ds18b20支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫 1.

14、4、ds18b20在使用中不需要任何外圍元件,全部 傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi) 1.5、溫范圍55+125,在-10+85時(shí)精度為0.5 1.6、可編程 的分辨率為912位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實(shí)現(xiàn)高精度測(cè)溫 1.7、在9位分辨率時(shí)最多在 93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快 1.8、測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以一 線總線串行傳送給cpu,同時(shí)可傳送crc校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力 1.9、負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀, 但不能正常工作。

15、 2、ds18b20的外形和內(nèi)部結(jié)構(gòu) ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl、配置寄存器。 ds18b20的外形及管腳排列如下圖1: ds18b20引腳定義: (1)dq為數(shù)字信號(hào)輸入/輸出端; (2)gnd為電源地; (3)vdd為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。 圖2: ds18b20內(nèi)部結(jié)構(gòu)圖 3、ds18b20工作原理 ds18b20的讀寫時(shí)序和測(cè)溫原理與ds1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s 減為750ms。 ds18b20測(cè)溫原理如圖3所示。圖中低溫度

16、系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在55所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì) 低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即 為所測(cè)溫度。圖3中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。 圖3:ds18b20測(cè)溫

17、原理框圖 ds18b20有4個(gè)主要的數(shù)據(jù)部件: (1)光刻rom中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該ds18b20的地址序列碼。64位光刻rom的排列是:開始8位 (28h)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該ds18b20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(crc=x8+x5+x4+1)。光刻rom的作用 是使每一個(gè)ds18b20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)ds18b20的目的。 (2)ds18b20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625/lsb形式表達(dá),其中s為符號(hào)位。 表1:

18、 ds18b20溫度值格式表 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18b20的兩個(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í)際 溫度。 例如+125的數(shù)字輸出為07d0h,+25.0625的數(shù)字輸出為0191h,-25.0625的數(shù)字輸出為fe6fh,-55的數(shù)字輸出為fc90h 。 表2: ds18b20溫度數(shù)據(jù)表 (3)ds18b20溫度傳感器的存儲(chǔ)器 ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存ram和一個(gè)非易

19、失性的可電擦除的eepram,后者存放高溫度和低溫度觸發(fā)器 th、tl和結(jié)構(gòu)寄存器。 (4)配置寄存器 該字節(jié)各位的意義如下: 表3:配置寄存器結(jié)構(gòu) tmr1r011111低五位一直都是1,tm是測(cè)試模式位,用于設(shè)置ds18b20在工作模式還是在測(cè)試模式。在ds18b20出廠時(shí)該位被設(shè)置為0,用 戶不要去改動(dòng)。r1和r0用來(lái)設(shè)置分辨率,如下表所示:(ds18b20出廠時(shí)被設(shè)置為12位) 表4:溫度分辨率設(shè)置表 r1r0分辨率溫度最大轉(zhuǎn)換時(shí)間009位93.75ms 0110位187.5ms 1011位375ms 1112位750ms 4、高速暫存存儲(chǔ)器 高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5

20、所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如表1所示。對(duì)應(yīng)的溫度計(jì)算: 當(dāng)符號(hào)位s=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)s=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。表 2是對(duì)應(yīng)的一部分溫度值。第九個(gè)字節(jié)是 冗余檢驗(yàn)字節(jié)。 表5:ds18b20暫存寄存器分布 寄存器內(nèi)容 字節(jié)地址溫度值低位 (ls byte)0溫度值高位 (ms byte)1高溫限值(th)2低溫限值(tl)3配置寄存器4保留5保留6保留7crc校驗(yàn)值8根據(jù)ds18b20的通訊協(xié)議,主機(jī)(單片機(jī))控制d

21、s18b20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫之前都要對(duì)ds18b20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對(duì)ds18b20進(jìn)行預(yù)定的操作。復(fù)位要求主cpu將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)ds18b20收到信號(hào)后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號(hào)表示復(fù)位成功。 表6:rom指令表 指 令 約定代碼功 能讀rom33h讀ds1820溫度傳感器rom中的編碼(即64位地址) 符合 rom 55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問(wèn)單總線上與該編碼相對(duì)應(yīng)的 ds1820 使之作出響應(yīng),為下一步對(duì)

22、該 ds1820 的讀寫作準(zhǔn)備。 搜索 rom 0foh用于確定掛接在同一總線上 ds1820 的個(gè)數(shù)和識(shí)別 64 位 rom 地址。為操作各器件作好準(zhǔn)備。 跳過(guò) rom 0cch忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令。適用于單片工作。 告警搜索命令 0ech執(zhí)行后只有溫度超過(guò)設(shè)定值上限或下限的片子才做出響應(yīng)。 表6:ram指令表 指 令 約定代碼功 能溫度變換44h啟動(dòng)ds1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)ram中。 讀暫存器 0beh 讀內(nèi)部ram中9字節(jié)的內(nèi)容 寫暫存器 4eh 發(fā)出向內(nèi)部ram的3、

23、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。 復(fù)制暫存器 48h 將ram中第3 、4字節(jié)的內(nèi)容復(fù)制到eeprom中。 重調(diào) eeprom 0b8h 將eeprom中內(nèi)容恢復(fù)到ram中的第3 、4字節(jié)。 讀供電方式 0b4h 讀ds1820的供電模式。寄生供電時(shí)ds1820發(fā)送“ 0 ”,外接電源供電 ds1820發(fā)送“ 1 ”。 5、ds18b20的應(yīng)用電路ds18b20測(cè)溫系統(tǒng)具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn)。下面就是ds18b20幾個(gè)不同應(yīng)用方式下的 測(cè)溫電路圖: 5.1、ds18b20寄生電源供電方式電路圖如下面圖4所示,在寄生電源供電方式

24、下,ds18b20從單線信號(hào)線上汲取能量:在信號(hào)線dq處于高電平期間把能量?jī)?chǔ)存在內(nèi)部 電容里,在信號(hào)線處于低電平期間消耗電容上的電能工作,直到高電平到來(lái)再給寄生電源(電容)充電。 獨(dú)特的寄生電源方式有三個(gè)好處: 1)進(jìn)行遠(yuǎn)距離測(cè)溫時(shí),無(wú)需本地電源 2)可以在沒(méi)有常規(guī)電源的條件下讀取rom 3)電路更加簡(jiǎn)潔,僅用一根i/o口實(shí)現(xiàn)測(cè)溫 要想使ds18b20進(jìn)行精確的溫度轉(zhuǎn)換,i/o線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由 于每個(gè)ds18b20在溫度轉(zhuǎn)換期間工作電流達(dá)到1ma,當(dāng)幾個(gè)溫度傳感器掛在同一根i/o線上進(jìn)行多點(diǎn)測(cè)溫時(shí),只靠4.7k上拉電阻就無(wú)法提供足夠的 能量,會(huì)造成無(wú)法轉(zhuǎn)換溫度或溫度誤

25、差極大。 因此,圖4電路只適應(yīng)于單一溫度傳感器測(cè)溫情況下使用,不適宜采用電池供電系統(tǒng)中。并 且工作電源vcc必須保證在5v,當(dāng)電源電壓下降時(shí),寄生電源能夠汲取的能量也降低,會(huì)使溫度誤差變大。 圖4圖4 5.2、ds18b20寄生電源強(qiáng)上拉供電方式電路圖改進(jìn)的寄生電源供電方式如下面圖5所示,為了使ds18b20在動(dòng)態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應(yīng),當(dāng)進(jìn)行溫度轉(zhuǎn)換或拷貝到 e2存儲(chǔ)器操作時(shí),用mosfet把i/o線直接拉到vcc就可提供足夠的電流,在發(fā)出任何涉及到拷貝到e2存儲(chǔ)器或啟動(dòng)溫度轉(zhuǎn)換的指令后,必須在最 多10s內(nèi)把i/o線轉(zhuǎn)換到強(qiáng)上拉狀態(tài)。在強(qiáng)上拉方式下可以解決電流供應(yīng)不走的問(wèn)題,因此也適

26、合于多點(diǎn)測(cè)溫應(yīng)用,缺 點(diǎn)就是要多占用一根i/o口線進(jìn)行強(qiáng)上拉切換。 圖5圖5 注意:在圖4和圖5寄生電源供電方式中,ds18b20的vdd引腳必須接地 5.3、ds18b20的外部電源供電方式在外部電源供電方式下,ds18b20工作電源由vdd引腳接入,此時(shí)i/o線不需要強(qiáng)上拉,不存在電源電流不足的問(wèn)題,可以保證 轉(zhuǎn)換精度,同時(shí)在總線上理論可以掛接任意多個(gè)ds18b20傳感器,組成多點(diǎn)測(cè)溫系統(tǒng)。注意:在外部供電的方式下,ds18b20的gnd引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85。 圖6:外部供電方式單點(diǎn)測(cè)溫電路 圖6. . . . . 圖7:外部供電方式的多點(diǎn)測(cè)溫電路圖 圖7外

27、部電源供電方式是ds18b20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn)單,可以開發(fā)出穩(wěn)定可靠的多點(diǎn)溫度 監(jiān)控系統(tǒng)。站長(zhǎng)推薦大家在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根vcc引線。在外接電源方式下, 可以充分發(fā)揮ds18b20寬電源電壓范圍的優(yōu)點(diǎn),即使電源電壓vcc降到3v時(shí),依然能夠保證溫度量精度。 6、ds1820使用中注意事項(xiàng) ds1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: 6.1、較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于ds1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對(duì)ds

28、1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用pl/m、c等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì) ds1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 6.2、在ds1820的有關(guān)資料中均未提及單總線上所掛ds1820數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè) ds1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛ds1820超過(guò)8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí) 要加以注意。 6.3、連接ds1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的 測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距

29、離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正 常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在用ds1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考 慮總線分布電容和阻抗匹配問(wèn)題。 6.4、在ds1820測(cè)溫程序設(shè)計(jì)中,向ds1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待ds1820的返回信號(hào),一旦 某個(gè)ds1820接觸不好或斷線,當(dāng)程序讀該ds1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行ds1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予 一定的重視。 測(cè)溫電纜線建議采用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接vcc和地線,屏蔽層在源端單點(diǎn)接

30、地。圖片 引腳介紹第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給rs-232串口電平的需要。 第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。 其中13腳(r1in)、12腳(r1out)、11腳(t1in)、14腳(t1out)為第一數(shù)據(jù)通道。 8腳(r2in)、9腳(r2out)、10腳(t2in)、7腳(t2out)為第二數(shù)據(jù)通道。 ttl/cmos數(shù)據(jù)從t1in、t2in輸入轉(zhuǎn)換成rs-232數(shù)據(jù)從t1out、t2out送到電腦db9插頭;db9插頭的rs-232數(shù)據(jù)從r1in、r2in

31、輸入轉(zhuǎn)換成ttl/cmos數(shù)據(jù)后從r1out、r2out輸出。 第三部分是供電。15腳gnd、16腳vcc(+5v)。 主要特點(diǎn)1、符合所有的rs-232c技術(shù)標(biāo)準(zhǔn) 2、只需要單一 +5v電源供電 3、片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10v和-10v電壓v+、v- 4、功耗低,典型供電電流5ma 5、內(nèi)部集成2個(gè)rs-232c驅(qū)動(dòng)器 6、高集成度,片外最低只需4個(gè)電容即可工作。2 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)整體硬件電路包括:傳感器數(shù)據(jù)采集電路、溫度顯示電路、上下限報(bào)警調(diào)整電路、單片機(jī)主板電路等6。2.1 主板電路主板電路如圖1 所示。圖中有3 個(gè)獨(dú)立式按鍵,可以分別調(diào)整溫度計(jì)的上下限報(bào)警

32、設(shè)置,當(dāng)被測(cè)溫度不在上下限范圍內(nèi)時(shí),圖中的蜂鳴器可以發(fā)出報(bào)警鳴叫聲音,led 數(shù)碼管可以顯示測(cè)出的溫度值;圖中的按健復(fù)位電路是上電復(fù)位加手動(dòng)復(fù)位,使用比較方便,在程序跑飛時(shí)可以手動(dòng)復(fù)位,這樣,不用再重啟單片機(jī)電源就可以實(shí)現(xiàn)復(fù)位。圖1 單片機(jī)主板電路2.2 顯讀取溫度ds18b20模塊流程圖3詳細(xì)的軟調(diào)試程序編輯及注解系統(tǒng)程序主要包括c程序主函數(shù)、ds18b20復(fù)位函數(shù)、ds18b20寫字節(jié)函數(shù)、ds18b20讀字節(jié)函數(shù)、溫度計(jì)算轉(zhuǎn)換函數(shù)、顯示函數(shù)等等。以下是ds18b20溫度計(jì)c語(yǔ)言程序清單:/*/ / ds18b20溫度計(jì)c程序/ 2012.3.6通過(guò)調(diào)試/*/使用at89c2051單片機(jī),

33、12mhz晶振,用共陽(yáng)led數(shù)碼管/p1口輸出段碼,p3口掃描/#pragma src(d:aa.asm)#include reg51.h#include intrins.h /_nop_();延時(shí)函數(shù)用#define disdata p1 /段碼輸出口#define discan p3 /掃描口#define uchar unsigned char#define uint unsigned intsbit dq=p37; /溫度輸入口sbit din=p17; /led小數(shù)點(diǎn)控制uint h;/*溫度小數(shù)部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x

34、02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/uchar code dis_712=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/* 共陽(yáng)led段碼表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列掃描控制字uchar data temp_data2=0x00,0x00; / 讀出溫度暫放uchar data display5=0x00,0

35、x00,0x00,0x00,0x00;/顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù),一個(gè)運(yùn)算暫存用/*11微秒延時(shí)函數(shù)*/void delay(uint t)for(;t0;t-);/*顯示掃描函數(shù)*/scan()char k; for(k=0;k0; i-) /dq=1;_nop_();_nop_(); dq = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usdq = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位dq = 1;delay(1); /*18b20讀1個(gè)字節(jié)函數(shù)*/從總線上讀取一個(gè)字節(jié)uchar rea

36、d_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)dq=1;_nop_();_nop_();value=1;dq = 0; /_nop_();_nop_();_nop_();_nop_(); /4usdq = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(dq)value|=0x80;delay(6); /66usdq=1;return(value);/*讀出溫度函數(shù)*/read_temp()ow_reset(); /總線復(fù)位write_byte(0xcc); / 發(fā)skip rom命令write_by

37、te(0xbe); / 發(fā)讀命令temp_data0=read_byte(); /溫度低8位temp_data1=read_byte(); /溫度高8位ow_reset();write_byte(0xcc); / skip romwrite_byte(0x44); / 發(fā)轉(zhuǎn)換命令/*溫度數(shù)據(jù)處理函數(shù)*/work_temp()uchar n=0; /if(temp_data1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/負(fù)溫度求補(bǔ)碼display4=temp_data0&0x0f;display0=ditabd

38、isplay4;display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0x0a;if(!display2)display2=0x0a;/最高位為0時(shí)都不顯示if(n)display3=0x0b;/負(fù)溫度時(shí)最高位顯示-/ /*主函數(shù)*/main()disdata=0xff; /初始化端口discan=0xff;for(h=0;h4;h+)

39、displayh=8;/開機(jī)顯示8888ow_reset(); / 開機(jī)先轉(zhuǎn)換一次write_byte(0xcc); / skip romwrite_byte(0x44); / 發(fā)轉(zhuǎn)換命令for(h=0;h500;h+) scan(); /開機(jī)顯示88882秒while(1) read_temp(); /讀出18b20溫度數(shù)據(jù) work_temp(); /處理溫度數(shù)據(jù) for(h=0;h500;h+) scan(); /顯示溫度值2秒 /*結(jié)束*/贊同ds18b20程序 /將dq與vcc之間接入4.7k上拉電阻#include reg52.h#include intrins.h#include

40、 1602.c#define uchar unsigned char#define uint unsigned int/#define clearscreen lcd_en_command(0x01) 1602清屏sbit dq=p10;/*操作命令代碼 跳過(guò)rom 0xcc 發(fā)送溫度轉(zhuǎn)換 0xbe 寫eeprom 0x4e*/低層驅(qū)動(dòng)子程序/void init18b20(void); /初始化void write18b20(uchar ch);/寫數(shù)據(jù)unsigned char read18b20(void);/讀數(shù)據(jù) void delay15(uchar n); void delay10m

41、s(uint delay_num);void display(void);/ code uchar decimalh=00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93;code uchar decimall=00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75;uint resulttemperatureh ,resulttemperaturelh,resulttemperaturell;/整數(shù),小數(shù)高位,小數(shù)低位uint resultsignal;/符號(hào)位 main() uint temh,teml,de

42、lay,k=0; for(; ; ) init18b20(); write18b20(0xcc);/跳過(guò)rom _nop_(); /write18b20(0x4e);/寫eeprom / write18b20(0x00);/th /write18b20(0x00);/tl write18b20(0x7f);/12 bits溫度分辨率 init18b20(); write18b20(0xcc);/跳過(guò)rom _nop_(); write18b20(0x44);/發(fā)送溫度轉(zhuǎn)換指令 delay10ms(25); delay10ms(25); delay10ms(25); delay10ms(25);

43、/等待1s轉(zhuǎn)換 init18b20(); write18b20(0xcc);/跳過(guò)rom write18b20(0xbe);/發(fā)送溫度轉(zhuǎn)換指令 teml=read18b20(); /讀低位溫度值 temh=read18b20(); /讀高位溫度值 delay10ms(2); temh=(temh4); teml=teml&0x0f; /取低4位 if(temh&0x80) temh=temh; teml=teml+1; resultsignal=1; /負(fù) else resultsignal=0; /正 resulttemperaturelh=decimalhteml; resulttempe

44、raturell=decimallteml; resulttemperatureh=temh; display(); for(delay=0;delay60000;delay+); for(delay=0;delay20000;delay+); void display(void) uint i,j,q; lcd_init(); clearscreen; lcd_en_command(0x01); delay_nms(2); q=resulttemperatureh/100; i=(resulttemperatureh%100)/10; j=resulttemperatureh-(i*10+q

45、*100); lcd_write_string(0,line1, jaq1217 18b20 ); if(resultsignal) lcd_write_string(0,line2, t is:- . ); else lcd_write_string(0,line2, t is:+ . ); lcd_write_char(0x07,line2,q|0x30); lcd_write_char(0x08,line2,i|0x30); lcd_write_char(0x09,line2,j|0x30); lcd_write_char(0x0b,line2,(resulttemperaturelh/

46、10)|0x30); lcd_write_char(0x0c,line2,(resulttemperaturelh%10)|0x30); lcd_write_char(0x0d,line2,(resulttemperaturell/10)|0x30); lcd_write_char(0x0e,line2,(resulttemperaturell%10)|0x30); unsigned char read18b20(void) unsigned char ch; unsigned char q ; for(q=0;q1; dq=0; _nop_(); dq=1; _nop_();_nop_();

47、_nop_();_nop_(); if(dq=1) ch=ch|0x80; else ch=ch&0x7f; delay15(3); dq=1; return (ch); void write18b20(uchar ch) uchar i; for(i=0;i1; _nop_(); void init18b20(void) dq=0; delay15(33);/至少延時(shí)480us dq=1; delay15(10);/至少延時(shí)100us /*if(dq=1) return 0; /初始化失敗 else return 1; dq=1; delay15(18); */ void delay15(uchar n) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()

溫馨提示

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