版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章 引言隨著“信息時(shí)代”的到來(lái),作為獲取信息的手段傳感器技術(shù)得到了顯著的進(jìn)步,其應(yīng)用領(lǐng)域越來(lái)越廣泛,對(duì)其要求越來(lái)越高,需求越來(lái)越迫切。傳感器技術(shù)已成為衡量一個(gè)國(guó)家科學(xué)技術(shù)發(fā)展水平的重要標(biāo)志之一。因此,了解并掌握各類傳感器的基本結(jié)構(gòu)、工作原理及特性是非常重要的。由于傳感器能將各種物理量、化學(xué)量和生物量等信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào),使得人們可以利用計(jì)算機(jī)實(shí)現(xiàn)自動(dòng)測(cè)量、信息處理和自動(dòng)控制,但是它們都不同程度地存在溫漂和非線性等影響因素。傳感器主要用于測(cè)量和控制系統(tǒng),它的性能好壞直接影響系統(tǒng)的性能。因此,不僅必須掌握各類傳感器的結(jié)構(gòu)、原理及其性能指標(biāo),還必須懂得傳感器經(jīng)過(guò)適當(dāng)?shù)慕涌陔娐氛{(diào)整才能滿足信號(hào)的處理
2、、顯示和控制的要求,而且只有通過(guò)對(duì)傳感器應(yīng)用實(shí)例的原理和智能傳感器實(shí)例的分析了解,才能將傳感器和信息通信和信息處理結(jié)合起來(lái),適應(yīng)傳感器的生產(chǎn)、研制、開(kāi)發(fā)和應(yīng)用。另一方面,傳感器的被測(cè)信號(hào)來(lái)自于各個(gè)應(yīng)用領(lǐng)域,每個(gè)領(lǐng)域都為了改革生產(chǎn)力、提高工效和時(shí)效,各自都在開(kāi)發(fā)研制適合應(yīng)用的傳感器,于是種類繁多的新型傳感器及傳感器系統(tǒng)不斷涌現(xiàn)。溫度傳感器是其中重要的一類傳感器。其發(fā)展速度之快,以及其應(yīng)用之廣,并且還有很大潛力。為了提高對(duì)傳感器的認(rèn)識(shí)和了解,尤其是對(duì)溫度傳感器的深入研究以及其用法與用途,基于實(shí)用、廣泛和典型的原則而設(shè)計(jì)了本系統(tǒng)。本文利用單片機(jī)結(jié)合傳感器技術(shù)而開(kāi)發(fā)設(shè)計(jì)了這一溫度控制系統(tǒng)。文中傳感器理
3、論單片機(jī)實(shí)際應(yīng)用有機(jī)結(jié)合,詳細(xì)地講述了利用ds18b20溫度傳感器探測(cè)環(huán)境溫度的過(guò)程,以及實(shí)現(xiàn)熱電轉(zhuǎn)換的原理過(guò)程。本設(shè)計(jì)應(yīng)用性比較強(qiáng),設(shè)計(jì)系統(tǒng)可以作為熱水器溫度調(diào)節(jié)系統(tǒng)、實(shí)驗(yàn)室溫度監(jiān)控系統(tǒng)等等。課題主要任務(wù)是完成環(huán)境溫度檢測(cè),利用單片機(jī)實(shí)現(xiàn)溫度調(diào)節(jié)實(shí)施溫度監(jiān)控。設(shè)計(jì)后的系統(tǒng)具有操作方便,控制靈活等優(yōu)點(diǎn)。第二章 方案設(shè)計(jì)與論證一、 項(xiàng)目目的1、 學(xué)習(xí)和理解ds18b20的測(cè)量原理2、 了解ds18b20的內(nèi)部結(jié)構(gòu)和特性3、 掌握ds18b20與單片機(jī)接口方法和編程方法二、 項(xiàng)目要求1、 掌握的d/a轉(zhuǎn)換程序的設(shè)計(jì)方法2、 將采集到溫度通過(guò)數(shù)碼管顯示的方法3、 通過(guò)改變溫度高于和低于是會(huì)發(fā)生報(bào)警4
4、、 ds18b20構(gòu)成測(cè)溫系統(tǒng),測(cè)量的溫度精度達(dá)到0.1度,測(cè)量的溫度的范圍在20度到100度之間,用8位數(shù)碼管顯示出來(lái)。并具有上下限報(bào)警功能三、 項(xiàng)目方案采用led數(shù)碼管顯示,即將所有位的段選線相應(yīng)的并聯(lián)在一起,有一個(gè)8位i/o口控制,形成段選線的多路復(fù)用。而各位的共陽(yáng)極或共陰極分別由相應(yīng)的i/o線控制,實(shí)現(xiàn)各位的分時(shí)選通。其中段選線占用一個(gè)8位i/o口,而位選線占用一個(gè)4位i/o口。采用掃描顯示方式,即在某一時(shí)刻,只讓某一位的位選線狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段選線上輸出相應(yīng)位要顯示字節(jié)的段碼。在確定led不同位顯示的時(shí)間間隔,不能太短,因?yàn)榘l(fā)光二極管從導(dǎo)通到發(fā)光有一定的延
5、時(shí),導(dǎo)通時(shí)間太短,發(fā)光太弱人眼無(wú)法看清。但也不能太長(zhǎng),因?yàn)楫吘挂芟抻谂R界閃爍頻率,而且此時(shí)間越長(zhǎng),占用cpu時(shí)間也越多,另外,顯示位增多,也將占用大量的cpu時(shí)間,因此動(dòng)態(tài)顯示實(shí)質(zhì)是一犧牲c(diǎn)pu時(shí)間來(lái)?yè)Q取元件的減少。優(yōu)點(diǎn)是led數(shù)碼管價(jià)格便宜,顯示清晰并且編程較簡(jiǎn)單。1、電路方案:?jiǎn)纹瑱C(jī)復(fù)位電路報(bào)警點(diǎn)按鍵調(diào)時(shí)鐘振蕩電路lcd顯示電路繼電器控制電路溫度傳感器電路2、 溫度傳感器現(xiàn)場(chǎng)溫度數(shù)據(jù)溫度傳感器單片機(jī)溫度顯示 報(bào)警燈報(bào)警溫度傳感器原理圖首先通過(guò)ds18b20溫度傳感器采集現(xiàn)場(chǎng)的溫度數(shù)據(jù),經(jīng)過(guò)ds18b20自身的a/d轉(zhuǎn)換器為16數(shù)字代碼,再通過(guò)單片機(jī)利用數(shù)碼管顯示當(dāng)前的溫度,同時(shí)設(shè)置當(dāng)前超
6、過(guò)一定溫度報(bào)警。 溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào)) 結(jié)束nnyy 開(kāi)始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny圖13顯示數(shù)據(jù)刷新流程圖y發(fā)ds18b20復(fù)位命令發(fā)跳過(guò)rom命令發(fā)讀取溫度命令讀取操作,crc校驗(yàn)9字節(jié)完?crc校驗(yàn)正?確?移入溫度暫存器結(jié)束nny圖12計(jì)算溫度流程圖 初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開(kāi)始命令nyny發(fā)ds18b20復(fù)位命令發(fā)跳過(guò)rom命令發(fā)溫度轉(zhuǎn)換開(kāi)始命令 結(jié)束圖9 主程序流程圖 圖10讀溫度
7、流程圖第三章 硬件設(shè)計(jì)溫度報(bào)警器電路圖u at89c51圖31 是單片機(jī)at89c51的內(nèi)部結(jié)構(gòu)總框圖。它可以劃分為cpu、存儲(chǔ)器、并行口、串行口、定時(shí)/計(jì)數(shù)器和中斷邏輯幾個(gè)部分。圖31 at89c51 內(nèi)部結(jié)構(gòu)框圖at89c51主要特性 與mcs-51單片機(jī)產(chǎn)品兼容 4k字節(jié)在系統(tǒng)可編程flash存儲(chǔ)器 1000次擦寫周期 全靜態(tài)工作:0hz33mhz 32個(gè)可編程i/o口線 2個(gè)16位定時(shí)器/計(jì)數(shù)器 6個(gè)中斷源 全雙工uart串行通道 低功耗空閑和掉電模式 掉電后中斷可喚醒 看門狗定時(shí)器 雙數(shù)據(jù)指針 靈活的isp編程 4.0-5.5v電壓工作范圍 cpu由運(yùn)算器和控制邏輯構(gòu)成。其中包括若干
8、特殊功能寄存器(sfr) at89c51時(shí)鐘有兩種方式產(chǎn)生,即內(nèi)部方式和外部方式。(如圖32所示)at89c51中有一個(gè)構(gòu)成內(nèi)部震蕩器的高增益反向放大器,引腳xtal1和xtal2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英或陶瓷震蕩器一起構(gòu)成自激震蕩器震蕩電路如圖。外接石英晶體(或陶瓷震蕩器)及電容c1、c2接在放大器的震蕩回路中構(gòu)成并聯(lián)震蕩電路。對(duì)外接電容c1、c2雖然沒(méi)有非常嚴(yán)格的要求,但電容的大小會(huì)輕微影響震蕩頻率的高低、震蕩工作的穩(wěn)定性、起震的難易程序及溫度穩(wěn)定性,如果使用石英晶體,推薦使用30pf10pf,而如果使用陶瓷諧振器建議選擇40pf10pf。用戶還可
9、以采用外部時(shí)鐘,采用外部時(shí)鐘如圖所示。在這種情況下,外部時(shí)鐘脈沖接到xtal1端,既內(nèi)部時(shí)鐘發(fā)生器的輸入端,xtal2懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻的觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的所以外部時(shí)鐘的占空比沒(méi)有特殊要求,但最小高電平持續(xù)的時(shí)間和最大低電平持續(xù)的時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。 內(nèi)部震蕩電路 外部震蕩電路圖32 at89c51的時(shí)鐘電路 at89c51在物理上有四個(gè)存儲(chǔ)空間:片內(nèi)/片外程序存儲(chǔ)大路、片內(nèi)/片外數(shù)據(jù)存儲(chǔ)器。片內(nèi)有256b數(shù)據(jù)存儲(chǔ)器ram和4kb的程序存儲(chǔ)器rom。除此之外,還可以在片外擴(kuò)展ram和rom,并且和有64kb的尋址范圍。 at89c51內(nèi)部有一個(gè)可編程的、全
10、雙工的串行接口。它串行收發(fā)存儲(chǔ)在特殊功能寄存器sfr的串行數(shù)據(jù)緩沖器sbuf中的數(shù)據(jù)。 at89c51共有4個(gè)(p0、p1、p2、p3口)8位并行i/o端口,共32個(gè)引腳。p0口雙向i/o口,用于分時(shí)傳送低8位地址和8位數(shù)據(jù)信號(hào);p1、p2、p3口均為準(zhǔn)雙向i/o口;其中p2口還用于傳送高8位地址信號(hào);p3口每一引腳還具有特殊功能(圖3-3),用于特殊信號(hào)的輸入輸出和控制信號(hào)。 at89c51內(nèi)部有兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器t0、t1。最大計(jì)數(shù)值為216-1。工作方式和定時(shí)器或計(jì)數(shù)器的選擇由指令來(lái)確定。 中斷系統(tǒng)允許接受5個(gè)獨(dú)立的中斷源,即兩個(gè)外部中斷,兩個(gè)定時(shí)器/計(jì)數(shù)器中斷以及一個(gè)串行口
11、中斷。外部特性(引腳功能)at89c51芯片有40條引腳,雙列直插式封裝引腳圖如34所示: vcc(40):電源+5v vss(20): 接地 xtal1(19)和xtal2(18):使用內(nèi)部振蕩電路時(shí),用來(lái)接石英晶體和電容;使用外部時(shí)鐘時(shí),用來(lái)輸入時(shí)鐘脈沖。 p0口(3932):是一組8位漏極開(kāi)路行雙向i/o口,也既地址/數(shù)據(jù)總線復(fù)用口??勺鳛檩敵隹谑褂脮r(shí),每位可吸收電流的方式驅(qū)動(dòng)8個(gè)ttl邏輯電路,對(duì)端口寫“1”可作為高阻抗輸入輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在flash編程時(shí),po口接收指令字節(jié),而在程序校驗(yàn)時(shí),
12、輸出指令字節(jié),校驗(yàn)時(shí),要求接上拉電阻。 p1口(18):是一個(gè)內(nèi)部有上拉電阻的8位雙向i/o口,p1的輸入緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸出口。作輸入口時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)輸出一個(gè)電流(i)。flash編程和程序校驗(yàn)期間,p1口接收8位地址。 p2口(2128):是一個(gè)帶有內(nèi)部上拉電阻的8位雙向i/o口,p2的輸入緩沖極可以驅(qū)動(dòng)(輸入或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)和作為輸出口,作輸出口時(shí),因?yàn)榇嬖趦?nèi)部上拉電阻,某個(gè)引腳被外部信
13、號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪問(wèn)外部存儲(chǔ)器或1位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movxdptr指令)時(shí),p2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行movxri指令)時(shí),p2口線的內(nèi)容(也既特殊功能寄存器(sfr)區(qū)中r2寄存器的內(nèi)容),在整個(gè)訪問(wèn)期間不改變。flash編程或校驗(yàn)時(shí),p2亦接收高地址和其他控制信號(hào)。 p3口(1017):是一組帶有內(nèi)部上拉電阻的8位雙向i/o口,p1的輸入緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)p3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時(shí),被外部拉低的p3口將用上拉電阻輸出電流。p3口除可作為一般的i/
14、o口線外,更重要的用途是它的第二功能,如圖33所示:p3口還接收一些用于flas 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。圖33 p3口引腳的特殊功能 圖34 at89c51引腳圖 ale/(30):地址鎖存信號(hào)輸出端。在訪問(wèn)片外豐儲(chǔ)器時(shí),若ale為有效高電平,則p0口輸出地址低8位,可以用ale信號(hào)作外部地址鎖存信號(hào)。公式(21)fale=1/6fosc ,也可作系統(tǒng)中其它芯片的時(shí)鐘源。第二功能是對(duì)eprom編程時(shí)的編程脈沖輸入端。 rst/vpd(9):復(fù)位信號(hào)輸入端。at89s51接能電源后,在時(shí)鐘電路作用下,該腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平,使內(nèi)部復(fù)位。第二功能是vpd,即備用電源輸入端
15、。當(dāng)主電源vcc發(fā)生故障,降低到低電平規(guī)定值時(shí),vpd將為ram提供備用電源,發(fā)保證存儲(chǔ)在ram中的信號(hào)不丟失。at89s81通常采用上電自動(dòng)復(fù)位和開(kāi)關(guān)手動(dòng)復(fù)位,我們采用的就是這種方法。/vpp(31):內(nèi)部和外部程序存儲(chǔ)器選擇線。=0時(shí)訪問(wèn)外部rom 0000hffffh;=1時(shí),地址0000h0fffh空間訪問(wèn)內(nèi)部rom,地址1000hffffh空間訪問(wèn)外部rom。(29):片外程序存儲(chǔ)器選通信號(hào),低電平有效。u ds18b20外觀圖:使用集成芯片,能夠有效的減小外界的干擾,提高測(cè)量的精度,簡(jiǎn)化電路的結(jié)構(gòu)。使用集成芯片,已經(jīng)慢慢的成為設(shè)計(jì)電路的一種趨勢(shì)。本系統(tǒng)使用溫度芯片也正是順應(yīng)了這一趨
16、勢(shì)。ds18b20溫度傳感器是美國(guó)dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。ds18b20的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè)ds18b20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無(wú)須外部器件;可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機(jī)功耗;溫度以或位數(shù)字;用戶可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; 內(nèi)部結(jié)構(gòu)框圖如圖37所示。圖
17、37 ds18b20內(nèi)部結(jié)構(gòu)64位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ò)軟件寫入戶報(bào)警上下限。ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存和一個(gè)非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭個(gè)字節(jié)包含測(cè)得的溫度信息,第和第字節(jié)和的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)
18、各位的定義如圖38 所示。低位一直為,是工作模式位,用于設(shè)置ds18b20在工作模式還是在測(cè)試模式,ds18b20出廠時(shí)該位被設(shè)置為,用戶要去改動(dòng),r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crc圖38 ds18b20字節(jié)定義由表31可見(jiàn),ds18b20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存的第、字節(jié)保留未用,表現(xiàn)為全邏輯。第字節(jié)讀出前面所有字節(jié)的crc碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)ds18b20接收到溫度轉(zhuǎn)換命令
19、后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第、字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當(dāng)符號(hào)位時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表32是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表31 ds18b20溫度轉(zhuǎn)換時(shí)間表寄存器內(nèi)容 字節(jié)地址溫度值低位 (ls byte)0溫度值高位 (ms byte)1高溫限值(th)2低溫限值(tl)3配置寄存器4保留5保留6保留7crc校驗(yàn)值8ds18b2
20、0完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與ram中的th、tl字節(jié)內(nèi)容作比較。若th或ttl,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只ds18b20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位rom的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(crc)。主機(jī)rom的前56位來(lái)計(jì)算crc值,并和存入ds18b20的crc值作比較,以判斷主機(jī)收到的rom數(shù)據(jù)是否正確。ds18b20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器的脈沖輸入。器件中還
21、有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器、溫度寄存器中,計(jì)數(shù)器和溫度寄存器被預(yù)置在55所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器的預(yù)置值減到時(shí),溫度寄存器的值將加,減法計(jì)數(shù)器的預(yù)置將重新被裝入,減法計(jì)數(shù)器重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未
22、關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。表32一部分溫度對(duì)應(yīng)值表溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110
23、0110 1111fe6fh-551111 1100 1001 0000fc90h另外,由于ds18b20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)ds18b20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖39 所示單片機(jī)端口接單線總線,為保證在有效的ds18b20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)mosfet管來(lái)完成對(duì)總線的上拉。當(dāng)ds18b20處于寫
24、存儲(chǔ)器操作和溫度a/d轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)vdd端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。 圖39 ds18b20與單片機(jī)的接口電路ds18b20暫存寄存器分布 根據(jù)ds18b20的通訊協(xié)議,主機(jī)(單片機(jī))控制ds18b20完成溫度轉(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微秒的存在低
25、脈沖,主cpu收到此信號(hào)表示復(fù)位成功。u ds18b20數(shù)據(jù)輸出格式ds18b20讀出的溫度結(jié)果的數(shù)據(jù)為兩字節(jié),用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式提供。因此,在系統(tǒng)中要將得到的溫度數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,才能用于顯示。高8位中的高5位是符號(hào)位,表示溫度是零下還是零上。高8位中的低3位d6、d5、d4和低8位中的高4位d3、d2、d1、d0構(gòu)成溫度的整數(shù)部分,低8位中的d-1、d-2、d-3、d-4為溫度的小數(shù)部分(為0.5+0.25+0.125+0.0625)。ds18b20上點(diǎn)復(fù)位時(shí)的溫度固定值為0550h。第四章 軟件設(shè)計(jì)#include #include #define uchar unsign
26、ed char#define uint unsigned intsbit ds=p27; /18b20數(shù)據(jù)線sbit spk=p11; /蜂鳴器uint temp;float f_temp;uint warn_l1=300;uint warn_l2=250;uint warn_h1=300;uint warn_h2=320;/sbit led0=p10;/sbit led1=p11;/sbit led2=p12;/sbit led3=p13;unsigned char code table=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09, /
27、不帶小數(shù)點(diǎn)的0-90x02,0xf2,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08, /帶小數(shù)點(diǎn)的0-90x63; /溫度符號(hào)cvoid dis_temp(uint t);void delay(uint z)/延時(shí)函數(shù)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-); /延時(shí)時(shí)間大約為:z*1msvoid dsreset(void) /ds18b20復(fù)位,初始化,每次讀寫操作都要進(jìn)行初始化 uint i; ds=0; /數(shù)據(jù)線拉低延時(shí)范圍在480-960us之間 i=60; while(i0)i-;/延時(shí)480us左右 ds=1;
28、 i=60; while(i0)i-;/延時(shí)480us左右bit tempreadbit(void) /讀1位數(shù)據(jù) uint i; bit dat; ds=0; i+; /i+ 延時(shí)作用,讀數(shù)據(jù)前單片機(jī)要將數(shù)據(jù)線拉低1us,才釋放數(shù)據(jù)線 ds=1; /釋放總線,并進(jìn)行延時(shí)7us左右 i+; i+; dat=ds; /讀取數(shù)據(jù)位 i=8;while(i0)i-; /延時(shí)70us左右 return (dat);/每讀一次數(shù)據(jù)位,要保證在60us-120us之間時(shí)間內(nèi)完成.uchar tempread(void) /讀1個(gè)字節(jié)數(shù)據(jù) uchar i,j,dat; dat=0; for(i=1;i=8;
29、i+) j=tempreadbit(); dat=(j1); /讀取溫度數(shù)據(jù)是從低位讀起,經(jīng)過(guò)這樣8次讀操作可以按照從高到低排好數(shù)據(jù) return(dat);void tempwritebyte(uchar dat) /向ds18b20寫一個(gè)字節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫數(shù)據(jù)位 1,寫數(shù)據(jù)1時(shí),單片機(jī)先將數(shù)據(jù)線拉低,并在15us內(nèi)釋放數(shù)據(jù)線 ds=0; i+;i+; /延時(shí)7us左右 ds=1; i=7; while(i0)i-;/延時(shí)70us左右 else ds=0; /寫數(shù)據(jù)位 0 i=7; while(i
30、0)i-; /延時(shí)70us左右 ds=1;/釋放數(shù)據(jù)線 i+;i+; /每次循環(huán)寫數(shù)據(jù)都要有個(gè)時(shí)間間隔,這里就是延時(shí) void tempchange(void) /ds18b20啟動(dòng) dsreset(); /ds18b20初始化 / delay(1); /延時(shí)1ms tempwritebyte(0xcc); / 寫跳過(guò)讀rom指令 tempwritebyte(0x44); / 寫溫度開(kāi)始轉(zhuǎn)換指令uint get_temp() /讀取ds18b20寄存器中的溫度數(shù)據(jù) 6.01ms uchar a,b; dsreset(); /ds18b20初始化/ delay(1); /延時(shí)1ms tempwr
31、itebyte(0xcc); / 寫跳過(guò)讀rom指令 tempwritebyte(0xbe); /讀9字節(jié)溫度數(shù)據(jù),實(shí)際這里只需要讀取前2個(gè)字節(jié)數(shù)據(jù)即可 a=tempread(); /讀低8位數(shù)據(jù) b=tempread(); /讀高8位數(shù)據(jù) temp=b; temp1000|temp(num); /位選碼右移選通,總共要移4次。 p2=i; delay(1);void dis_temp(uint t) uchar j; if(t=100) while(1) for(j=0;j200;j+)/喇叭發(fā)聲的時(shí)間循環(huán),改變大小可以改變發(fā)聲時(shí)間長(zhǎng)短 delay(80);/參數(shù)決定發(fā)聲的頻率,估算值 spk=!spk; spk=1; /喇叭停止工作,間歇的時(shí)間,可更改 delay(20000); uchar i; i=t/100; /十位 display(0,i);/1.01ms i=t%100/10;/帶小數(shù)點(diǎn)的個(gè)位 display(1,i+10); i=t%100%10;/小數(shù)位 display(2,i); i=2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貉子毛皮購(gòu)銷合同
- 綠植擺放租賃合同示例
- 高級(jí)定制櫥柜購(gòu)銷協(xié)議
- 房屋交易合同終止協(xié)議
- 城中村房產(chǎn)交易合同樣本
- 純凈水設(shè)備買賣合同
- 戶外廣告投放合同范例
- 冷藏品購(gòu)買合同
- 施工招標(biāo)合同范本格式示例
- 承攬?jiān)O(shè)備日常維護(hù)服務(wù)合同
- 機(jī)械設(shè)計(jì)課程設(shè)計(jì)---榫槽成形半自動(dòng)切削機(jī)
- 自動(dòng)化立體庫(kù)貨架驗(yàn)收?qǐng)?bào)告
- 數(shù)學(xué)模型實(shí)驗(yàn)報(bào)告5
- 屋頂分布式光伏項(xiàng)目施工安全管理方案
- 新人教版高中物理課本必修1復(fù)習(xí)與提高AB組解析
- 東方航空《內(nèi)部異地調(diào)動(dòng)人員管理規(guī)定》
- 標(biāo)準(zhǔn)節(jié)流裝置計(jì)算
- 三管輪主管設(shè)備的維護(hù)周期(全)解讀
- 鋼結(jié)構(gòu)罩棚施工組織設(shè)計(jì)(共26頁(yè))
- 電力變壓器計(jì)算單
- 清朝年號(hào)干支紀(jì)年對(duì)照表
評(píng)論
0/150
提交評(píng)論