數(shù)字溫濕度計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
數(shù)字溫濕度計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
數(shù)字溫濕度計(jì)畢業(yè)設(shè)計(jì)_第3頁(yè)
數(shù)字溫濕度計(jì)畢業(yè)設(shè)計(jì)_第4頁(yè)
數(shù)字溫濕度計(jì)畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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、浙江工業(yè)職業(yè)技術(shù)學(xué)院畢業(yè)論文(2012 屆)學(xué)生姓名學(xué)號(hào)分院專(zhuān)業(yè)扌旨導(dǎo)教師 完成日期 2012年3月s基于單片 機(jī)技術(shù)的數(shù)字 溫濕度計(jì) 設(shè)計(jì)摘 要 本論文介紹了一種以單片機(jī)為主要控制器件,以dht91為溫濕度傳感器的數(shù)字溫濕度計(jì)。主要包括硬件電路的設(shè)計(jì)和軟件程序的設(shè)計(jì)。硬件電路主要包括主控制器,測(cè)溫濕度電路和顯示電路三部分組成。主控制器采用單片機(jī)at89c52 ,溫濕度傳感器采用,顯示電路采用位共陽(yáng)極led數(shù)碼管,驅(qū)動(dòng)電路用八個(gè) pnp型的三極管(s9012)。軟件程序主要包括主程序,測(cè)溫濕度子程序,顯示子程序和按鍵子程序等。另外,還介紹了軟件的調(diào)試分析。本設(shè)計(jì)中采用了溫濕度傳感器 dht91

2、作為檢測(cè)元件,該傳感器包括一個(gè) 電容性聚合體測(cè)濕敏感元件、一個(gè)用能隙材料制成的測(cè)溫元件,并在同一芯片上, 與14位的a/d轉(zhuǎn)換器以及串行接口電路實(shí)現(xiàn)無(wú)縫連接。因此,它具有品質(zhì)卓 越、超快響應(yīng)、抗干擾能力強(qiáng)、極高的性?xún)r(jià)比等優(yōu)點(diǎn)。每個(gè)傳感器芯片都在極為 精確的濕度腔室中進(jìn)行標(biāo)定,在標(biāo)定的過(guò)程中使用。傳感器在檢測(cè)信號(hào)的處理過(guò) 程中要調(diào)用這些校準(zhǔn)系數(shù)。兩線制的串行接口與內(nèi)部的電壓調(diào)整,使外圍系統(tǒng)集 成變得快速而簡(jiǎn)單。微小的體積、極低的功耗。它具有很好的發(fā)展前景。關(guān)鍵詞溫濕度測(cè)量 at89c52 dht91目錄第一章數(shù)字溫濕度計(jì)的設(shè)計(jì)依據(jù)和意義 11.1數(shù)字溫濕度計(jì)的設(shè)計(jì)依據(jù)11.2數(shù)字溫濕度計(jì)的設(shè)計(jì)意

3、義1第二章總體設(shè)計(jì)要求及方案論證分析 22.1 總體設(shè)計(jì)要求22.2方案論證分析 22.2.1方案論證22.2.2方案設(shè)計(jì)32.3元器件的選擇42.3.1 主控制器芯片42.3.2 數(shù)字溫濕度傳感器62.4 驅(qū)動(dòng)顯示電路62.5溫濕度測(cè)量的方法及分析7第三章 硬件電路的設(shè)計(jì) 93.1主控制電路和測(cè)溫濕控制電路 93.2驅(qū)動(dòng)顯示電路第四章軟件設(shè)計(jì)及分析4.1 dht91傳輸時(shí)序和指令集 4.1.1 通訊復(fù)位時(shí)序4.1.2 啟動(dòng)傳輸時(shí)序4.1.3 數(shù)據(jù)傳輸和指令集 4.1.4 濕度的測(cè)量時(shí)序4.1.5 輸出轉(zhuǎn)換為物理量 4.1.6 dht91 的 dc 特性。4.2 程序流程圖1 .7.4.3 程

4、序的設(shè)計(jì)4.3.1 通訊復(fù)位子程序4.3.2 傳輸啟動(dòng)子程序4.3.3 一個(gè)字節(jié)子程序4.3.4 讀一個(gè)字節(jié)子程序4.3.5 數(shù)據(jù)處理子程序2.0.4.3.6 顯示子程序2.0.4.3.7 按鍵子程序2.2.4.3.8 中斷刷新顯示數(shù)碼管子程序2.3.4.3.9 軟件在硬件上的調(diào)試分析2.4.結(jié)論2.6.致謝2.7.參考文獻(xiàn)2.8.附錄2.9 引 言溫度和濕度的測(cè)量和控制是目前眾多行業(yè)的重要工作目標(biāo)之一,可謂與我們的生活息息相關(guān)。無(wú)論是在工農(nóng)業(yè)生產(chǎn)、氣象部門(mén),還是 在環(huán)保、國(guó)防、科研等方面,常需對(duì)環(huán)境溫度與濕度進(jìn)行測(cè)量和控制?,F(xiàn)在準(zhǔn)確測(cè)量溫濕度在生物制藥、食品加工、造紙等行業(yè)更是至關(guān)重要的。測(cè)

5、量溫濕度的關(guān)鍵是溫濕度傳感器。過(guò)去測(cè)量溫度與濕度是分開(kāi) 的,隨著技術(shù)的進(jìn)步及人們生活的需要出現(xiàn)了溫濕度傳感器。溫度傳感器的發(fā)展經(jīng)歷了 3個(gè)階段:傳統(tǒng)的分立式溫度傳感器、模擬集成溫 度傳感器、智能集成溫度傳感器。目前,國(guó)際上新型溫度傳感器正從 模擬式向數(shù)字式、從集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。濕度傳感 器也是經(jīng)歷了這樣一個(gè)階段逐漸走向數(shù)字智能化??傊?,本次設(shè)計(jì)運(yùn)用 dht91傳感器,結(jié)合其優(yōu)點(diǎn),將制作一個(gè)便攜式常用數(shù)字溫濕度計(jì),必定對(duì)生產(chǎn)方面有一定作用。第一章數(shù)字溫濕度計(jì)的設(shè)計(jì)依據(jù)和意義1.1數(shù)字溫濕度計(jì)的設(shè)計(jì)依據(jù)溫度與濕度與人們的生活息息相關(guān)。在工農(nóng)業(yè)生產(chǎn)、氣象、環(huán)保、 國(guó)防、科研等部門(mén),經(jīng)

6、常需要對(duì)環(huán)境溫度與濕度進(jìn)行測(cè)量及控制。準(zhǔn) 確測(cè)量溫濕度在生物制藥、食品加工、造紙等行業(yè)更是至關(guān)重要的。1.2數(shù)字溫濕度計(jì)的設(shè)計(jì)意義傳統(tǒng)的溫度計(jì)是用水銀柱來(lái)顯示的,雖然結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜,但是它的精確度不高,不易讀數(shù)。傳統(tǒng)的濕度計(jì)采用干濕球顯示法, 不僅復(fù)雜而且測(cè)量精度不高。而采用單片機(jī)對(duì)溫濕度進(jìn)行控制,不僅 具有控制方便,簡(jiǎn)單和靈活等優(yōu)點(diǎn),而且可以大幅度提高溫度控制的 技術(shù)指標(biāo)。用led來(lái)顯示溫濕度的數(shù)字看起來(lái)更加直觀。dht91傳感器具有超快響應(yīng),抗干擾能力強(qiáng),性?xún)r(jià)比高等優(yōu)點(diǎn)。dht91傳感器可以直接讀出被測(cè)的溫濕度值。同時(shí)單片機(jī)可以把測(cè) 量出的數(shù)據(jù)通過(guò)串口傳到計(jì)算機(jī)上, 來(lái)完成工業(yè)中的自動(dòng)

7、控制,給工 業(yè)生產(chǎn)帶來(lái)了極大的便利。用單片機(jī)控制的溫濕度計(jì)不僅硬件電路簡(jiǎn) 單,而且測(cè)量精度比較高。用數(shù)碼管顯示測(cè)量值看起來(lái)比較美觀。無(wú)論在日常生活中還是在工業(yè)、 農(nóng)業(yè)方面都不可避免的對(duì)周?chē)h(huán) 境進(jìn)行溫濕度的測(cè)量。因此,研究溫濕度的控制和測(cè)量具有重要意義。第二章總體設(shè)計(jì)要求及方案論證分析2.1總體設(shè)計(jì)要求設(shè)計(jì)一個(gè)以單片機(jī)為核心的溫濕度測(cè)量系統(tǒng),可實(shí)現(xiàn)的功能為:(1) 測(cè)量溫度值精度為±0.4°c,測(cè)量濕度值精確±3%;(2) 系統(tǒng)允許的誤差范圍為"tc和1%以?xún)?nèi);(3) 系統(tǒng)可由用戶預(yù)設(shè)溫度值和濕度值,測(cè)溫范圍一40°c +128°c,

8、測(cè)濕范圍 0 100%;(4) 超出預(yù)設(shè)值時(shí)系統(tǒng)會(huì)自動(dòng)報(bào)警,即發(fā)光二極管亮;(5) 系統(tǒng)采用數(shù)碼管顯示,能顯示設(shè)定溫濕度值和測(cè)得的實(shí)際 溫濕度值。濕度精度(只巴溫度精度(°c25)2.2方案論證分析2.2.1方案論證方案一,采用單片機(jī)at89c51與shtxx溫濕度傳感器相連組成外圍 電路。方案二,采用dht91數(shù)字溫濕度傳感器與單片機(jī)at89c52相連外圍 電路。經(jīng)過(guò)之前的知識(shí),我比較之后選擇采用第2個(gè)方案。由于采用dht91數(shù)字溫濕度傳感器與單片機(jī) at89c52相連外圍電路比較簡(jiǎn)單。dht91數(shù)字溫濕度傳感器作為檢測(cè)元件,能夠同時(shí)測(cè)試溫度和 濕度。這類(lèi)傳感器不僅易于焊接,而且只

9、有四針管腳,減少了外圍電 路的設(shè)計(jì)。且 at89c52與at89c51不同之處是,p1.0和p1.1還可 分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和輸入(p 1.1/t2ex),這樣可以方便報(bào)警系統(tǒng)的設(shè)計(jì)。 所以,本次設(shè)計(jì)以dht91 數(shù)字溫濕度傳感器為例,介紹基于單片機(jī)的數(shù)字溫濕度計(jì)的設(shè)計(jì)。2.2.2方案設(shè)計(jì)按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由 5個(gè)模塊組成:主控制器,數(shù) 字溫濕度傳感器,報(bào)警電路,按鍵電路及驅(qū)動(dòng)顯示電路。溫濕度傳感器圖2-1總體電路框圖主控制器的功能由單片機(jī)來(lái)完成,主要負(fù)責(zé)處理由數(shù)字溫濕度傳 感器送來(lái)數(shù)據(jù),并把處理好的數(shù)據(jù)送向顯示模塊。 數(shù)字溫濕傳感器主 要用來(lái)

10、采集周?chē)h(huán)境參數(shù),并把所采集來(lái)的參數(shù)送向主控制器。 按鍵電路主要用來(lái)完成單片機(jī)的復(fù)位操作和溫濕度初始值的設(shè)定。這里需要四個(gè)按鍵,一個(gè)用來(lái)完成單片機(jī)的復(fù)位操作,一個(gè)用來(lái)切換顯示的 數(shù)據(jù)(是設(shè)定值還是實(shí)際測(cè)得的值),另外兩個(gè)分別用來(lái)設(shè)定初始溫 度和初始濕度的個(gè)位和十位。報(bào)警電路就是用一個(gè)發(fā)光二極管來(lái)實(shí)現(xiàn) 的,用來(lái)判斷周?chē)h(huán)境的溫度或者濕度是否超出設(shè)定值了,任何一個(gè)超出設(shè)定值發(fā)光二極管就會(huì)被點(diǎn)亮。 驅(qū)動(dòng)顯示電路主要用來(lái)驅(qū)動(dòng)八位 數(shù)碼管發(fā)光的。由于單片機(jī)的輸出電流太?。ㄖ挥袔缀涟玻┎荒茯?qū)使 數(shù)碼管發(fā)光,所以這里必須增加一個(gè)驅(qū)動(dòng)顯示模塊。2.3元器件的選擇2.3.1主控制器芯片主控制器模塊選用單片機(jī) a

11、t89c52oat89c52是美國(guó)atmel公 司生產(chǎn)的低電平,高性能cmos 8位單片機(jī),片內(nèi)含8k bytes的可反 復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(perom)和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ) 器(ram ),器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 與標(biāo)準(zhǔn)mcs51指令系統(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)合。at89c52共有6個(gè)中斷向量:兩個(gè)外中斷(into和int1) , 3個(gè) 定時(shí)器中

12、斷(定時(shí)器0, 1,2),串行口中斷和四個(gè)雙向i/o 口。p0 口: p0 口是一組8位漏極開(kāi)路型雙向i/o 口,也即地址/數(shù)據(jù) 總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)ttl 邏輯門(mén)電路,對(duì)端口 p0寫(xiě)“出寸”可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)位,應(yīng)為輸出驅(qū)動(dòng)級(jí)的漏極開(kāi)路,所以必須外 接上拉電阻,否則不能正常工作。p1 口:p1是一個(gè)帶內(nèi)部上拉電阻的8位雙向i/o 口,p1的輸出緩 沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)tte邏輯門(mén)電路。對(duì)端口寫(xiě)“4”通 過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用

13、時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一 個(gè)電流(ill) o表2-1 p1.0和p1.1的第二功能引腳號(hào)功能特性p10t2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)忡輸出p1.1t2ex (定時(shí)/計(jì)數(shù)2捕獲/賀裝我觸發(fā)和方向控制)p2 口:p2是一個(gè)帶有內(nèi)部上拉電阻的 8位雙向i/o 口,p2的輸出 緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門(mén)電路。對(duì)端口 p2寫(xiě)“1, ”通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作 輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí) 會(huì)輸出一個(gè)電流(ill)。p3 口:p3 口是一組帶有內(nèi)部上拉電阻的 8位雙向i/o 口

14、。p3 口輸 出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門(mén)電路。對(duì)p3 口寫(xiě) 入“的”,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外led數(shù)碼管型號(hào)較多,規(guī)格尺寸也各異,顯示顏色有紅、綠、橙等。led數(shù)碼管的主要特點(diǎn)如下:(1) 發(fā)光響應(yīng)時(shí)間極短(小于0. 1s)高頻特性好,單色性好,亮度 高。(2) 能在低電壓、小電流條件下驅(qū)動(dòng)發(fā)光,能與cmos、itl電路兼容。(3) 壽命長(zhǎng),使用壽命在10萬(wàn)小時(shí)以上,甚至可達(dá)100萬(wàn)小時(shí)。成本 低。(4) 體積小,重量輕,抗沖擊性能好。因此它被廣泛用作數(shù)字儀器儀表、數(shù)控裝置、計(jì)算機(jī)的數(shù)顯器件。小電壓大電流的小功率放大三極管 s9012的放大倍數(shù)

15、共分六級(jí):d 級(jí):64-91e 級(jí):7&x2f 級(jí):96-135g 級(jí):112-166h 級(jí):144-220i 級(jí):190-3002.5溫濕度測(cè)量的方法及分析dht91是一個(gè)兩線串行接口的數(shù)字溫濕度傳感器,一個(gè)接口是時(shí)鐘線,一個(gè)接口是數(shù)據(jù)線(支持雙向傳輸)。它是四針單排封裝, 一個(gè)接電源,一個(gè)接地線,另兩個(gè)直接和單片機(jī)的p0_5和p0_6相連。 不過(guò)數(shù)據(jù)線和時(shí)鐘線上需要接兩個(gè) 10k的上拉電阻,因?yàn)閍t89c52 的p0 口內(nèi)部沒(méi)有上拉電阻。單片機(jī)通過(guò) p0_5和p0_6向dht91發(fā) 送命令,dht91接收到命令后做出相應(yīng)的應(yīng)答。由于 dht91內(nèi)部包 含一個(gè)14位a/d轉(zhuǎn)換器,所以

16、單片機(jī)接收到就是數(shù)字信號(hào),只需要 做相應(yīng)的處理就能得到所需要的數(shù)據(jù)。這里減少了很多外部的電路的 連接,用起來(lái)比較方便。第三章硬件電路的設(shè)計(jì)3.1主控制電路和測(cè)溫濕控制電路本次硬件設(shè)計(jì)的核心就是 at89c52,其他部件都是圍繞它設(shè)計(jì) 的。數(shù)字溫濕度傳感器 dht91的data 口和sck 口分別與at89c52 的p0_5 口和p0_6 口相連。因?yàn)閜0 口內(nèi)部沒(méi)有上拉電阻,所以這里 在data和sck傳輸線上分別加了一個(gè)10k的上拉電阻。預(yù)置數(shù)電 路就是三個(gè)按鍵分別與 at89c52的p0_1,p0_2和p0_3 口相連,為了 降低at89c52的功耗在按鍵和單片機(jī)的端口間加了個(gè)10k的限流

17、電阻。當(dāng)有按鍵按下時(shí)單片機(jī)收到有效的信號(hào),s1鍵用來(lái)切換顯示的模式(分別顯示實(shí)際所測(cè)得的溫濕度,預(yù)置的溫度值和預(yù)置的濕度 值),s2鍵用來(lái)設(shè)置初始溫度或者濕度的十位,s3鍵用來(lái)設(shè)置初始溫 度或者濕度的個(gè)位。報(bào)警電路就是把個(gè)發(fā)光二極管和at89c52的p0_4 口相連,當(dāng)p0_4 口為低電平時(shí)放光二極管被點(diǎn)亮。發(fā)光二極管 的壓降一般為1.52.0 v,其工作電流一般取1020 ma為宜。使用 led作指示電路時(shí),應(yīng)該串接限流電阻,該電阻的阻值大小應(yīng)根據(jù) 不同的使用電壓和led所需工作電流來(lái)選擇。這個(gè)電流能使放光二 極管正常放光。如果電流小于10ma放光二極管的亮度會(huì)減弱,如果 電流大于20ma發(fā)

18、光二極管亮度會(huì)更強(qiáng),但是會(huì)有損發(fā)光二級(jí)管的壽 命有時(shí)候甚至?xí)苯訜龤Оl(fā)光二極管。單片機(jī)復(fù)位有兩種:一種是上電復(fù)位,一種是按鍵復(fù)位。下圖用 的就是按鍵復(fù)位,當(dāng)按鍵按下時(shí)單片機(jī)的rst 口從低電平變?yōu)楦唠娖?,從而進(jìn)入復(fù)位狀態(tài)。當(dāng)按鍵松開(kāi)后, vcc給電容c3充電,從而 把rst 口拉至電平,單片機(jī)進(jìn)入工作狀態(tài)。只要把下圖的 reset按鍵和r2電阻去掉就成了上電復(fù)位了。at89c52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳xtal1和xtal2分別是該放大器的輸入端和輸出端。這個(gè)放大 器與作為反饋元件的片外石英晶體或陶瓷諧振器構(gòu)成自激振蕩器。夕卜接石英晶體(或陶瓷諧振器)及電容 c1.

19、c2接在放大器的反饋回路 中構(gòu)成并聯(lián)振蕩電路,對(duì)外接電容c1> c2雖然沒(méi)有十分嚴(yán)格的要求, 但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定 性、起振的難易程度及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用30pf± 10pf,而如果使用陶瓷諧振器,建議選擇40pf± lopfo這里用到的是12m的石英晶體振蕩器和兩個(gè)30pf的電容。3.2驅(qū)動(dòng)顯示電路數(shù)碼管的顯示有兩種方法:一種是靜態(tài)顯示,一種是動(dòng)態(tài)掃描顯 示。靜態(tài)顯示就是數(shù)碼管的段選端一對(duì)一與單片機(jī)的i/o相連,位選端則根據(jù)數(shù)碼管的極型來(lái)接地(gnd)或者是高電平(vcc)。靜態(tài) 顯示實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單

20、,但是浪費(fèi)了單片機(jī)的i/o 口資源。動(dòng)態(tài)掃描顯示就是幾個(gè)數(shù)碼管的段選端可以同時(shí)接到單片機(jī)的i/o 口,位選端一對(duì)一的接到單片機(jī)的其它i/o 口,當(dāng)位選信號(hào)選中某個(gè)數(shù)碼管時(shí), 那個(gè)數(shù)碼管就被點(diǎn)亮,而其它數(shù)碼管不亮。動(dòng)態(tài)掃描顯示節(jié)省了單片 機(jī)的i/o資源。 采用動(dòng)態(tài)顯示方案,設(shè)計(jì)中使用八個(gè)共陰極數(shù)碼管作為顯示載體,通過(guò)八路并口傳輸,共使用了十六個(gè) i/o 口。顯示時(shí)采用循環(huán)移 位法,即八位數(shù)碼管依次循環(huán)點(diǎn)亮,利用人眼睛的視覺(jué)暫留效果達(dá)到 連續(xù)顯示,主程序每運(yùn)行一遍便調(diào)用一次顯示子程序,將數(shù)據(jù)顯示出 來(lái)。顯示部分為八位共陽(yáng)極數(shù)碼管(四位一組),數(shù)碼管的段端a,b,c,d,e,f,g和dp與ta89c

21、52的p1 口相連,順序可以根據(jù)硬件接 線方便而定。數(shù)碼管的字段通過(guò)八個(gè) pnp型的小功率放大三極管s9012與ta89c52的p2 口相連。因?yàn)閍t89c52的端口輸出電流太?。ㄖ挥袔譵a)不能點(diǎn)亮這八位數(shù)碼管,所以這里用了八個(gè) s9012來(lái)驅(qū)動(dòng)它們。具體原理圖見(jiàn)附錄一。圖4/通訊復(fù)位時(shí)序第四章 軟件設(shè)計(jì)及分析4.1 dht91傳輸時(shí)序和指令集4.1.1通訊復(fù)位時(shí)序data串行時(shí)鐘輸入(sck)用于微處理器與dth91之間的通訊同步。 由于接口包含了完全靜態(tài)邏輯,因而不存在最小sck頻率。串行數(shù)據(jù)(data)三態(tài)門(mén)用于數(shù)據(jù)的讀取。data在sck時(shí)鐘下降沿到來(lái) 之后改變狀態(tài),并僅在sck時(shí)鐘

22、上升沿有效。數(shù)據(jù)傳輸期間,在sck 時(shí)鐘高電平時(shí),data必須保持穩(wěn)定。為避免信號(hào)沖突,微處理器應(yīng) 驅(qū)動(dòng)data在低電平。需要一個(gè)外部的上拉電阻(例如:10k q)將信號(hào)提拉至高電平。如果與dth91通訊中斷,下列信號(hào)時(shí)序可以復(fù)位串口:當(dāng)data 保持高電平時(shí),觸發(fā)sck時(shí)鐘9次或更多。這些時(shí)序只復(fù)位串口, 狀態(tài)寄存器內(nèi)容仍然保留。圖4-2啟動(dòng)傳輸時(shí)序4.1.2啟動(dòng)傳輸時(shí)序datasck用一組“啟動(dòng)傳輸”時(shí)序,來(lái)表示數(shù)據(jù)傳輸?shù)某跏蓟?。它包括:?dāng) sck時(shí)鐘高電平時(shí)data翻轉(zhuǎn)為低電平,緊接著sck變?yōu)榈碗娖剑?隨后是在sck時(shí)鐘高電平時(shí) data翻轉(zhuǎn)為高電平。在下一次指令 前,發(fā)送一個(gè)“傳輸啟

23、動(dòng)”時(shí)序。啟動(dòng)傳輸時(shí)序如上圖42所示。4.1.3數(shù)據(jù)傳輸和指令集后續(xù)命令包含三個(gè)地址位(目前只支持“ 000), ”和五個(gè)命令位。dth 91會(huì)以下述方式表示已正確地接收到指令:在第 8個(gè)sck時(shí) 鐘的下降沿之后,將data下拉為低電平(ack位)。在第9個(gè)sck 時(shí)鐘的下降之后,釋放 data (恢復(fù)高電平)。發(fā)布一組測(cè)量命令( 00000101表示相對(duì)濕度 rh, '000000t1表示溫度t)后,控制器要等待測(cè)量結(jié)束。這個(gè)過(guò)程需要大約20/80/320ms ,分別對(duì)應(yīng)8/12/14bit測(cè)量。確切時(shí)間隨內(nèi)部晶振速度的變化而變化,最多可能 有30%的變化。dth91通過(guò)下拉data

24、至低電平并進(jìn)入空閑模式, 表示測(cè)量的結(jié)束??刂破髟谠俅斡|發(fā)sck時(shí)鐘前,必須等待這個(gè)數(shù) 據(jù)備妥”信號(hào)來(lái)讀出數(shù)據(jù)。檢測(cè)數(shù)據(jù)可以先被存儲(chǔ),這樣控制器可以 繼續(xù)執(zhí)行其它任務(wù)在需要時(shí)再讀出數(shù)據(jù)。 接著傳輸2個(gè)字節(jié)的測(cè)量數(shù) 據(jù)和1個(gè)字節(jié)的crc奇偶校驗(yàn)。uc需要通過(guò)下拉data為低電平, 以確認(rèn)每個(gè)字節(jié)。所有的數(shù)據(jù)從 msb開(kāi)始,右值有效(例如:對(duì)于 12bit數(shù)據(jù),從第5個(gè)sck時(shí)鐘起算作msb;而對(duì)于8bit數(shù)據(jù),首 字節(jié)則無(wú)意義)。用crc數(shù)據(jù)的確認(rèn)位,表明通訊結(jié)束。如果不使用 crc-8校 驗(yàn),控制器可以在測(cè)量值 lsb后,通過(guò)保持確認(rèn)位ack高電平,來(lái) 中止通訊。在測(cè)量和通訊結(jié)束后,dth91

25、自動(dòng)轉(zhuǎn)入休眠模式。4.1.4濕度的測(cè)量時(shí)序圖4-3測(cè)量濕度的時(shí)序4.1.5輸出轉(zhuǎn)換為物理量由能隙材料ptat (正比于絕對(duì)溫度)研發(fā)的溫度傳感器具有極 好的線性。為了補(bǔ)償濕度傳感器的非線性以獲取準(zhǔn)確數(shù)據(jù),建議使用如下公式1修正輸出數(shù)值:2rhiinear = c1 + c2 .sorh + c3 sorh(4-1)",c2和c3值如下表4-1所示。表4/濕度轉(zhuǎn)換系數(shù)iorh irnprnrnf 12 bit00405-2.8* 10-6 i| 8bit |0.64872訶 |濕度傳感器相對(duì)濕度的溫度補(bǔ)償實(shí)際測(cè)量溫度與25°c (-77°f)相差較大時(shí),應(yīng)考慮濕度傳

26、感器的溫度修正系數(shù):rhtrue = (t c-25).(t1 + t2 .sorh) + rhiineart1和t2的值如下表42所示。表42溫度補(bǔ)償系數(shù)sorh |tit2|12 bit ii 0.010.00008 i8 bit | 0010.00128 |rhtrue:測(cè)量的濕度值。4.1.6 dht91 的 dc 特性。dht91的dc特性如下表43所示。表43 dht91的dc特性4-2程序流程圖啟動(dòng)傳輸定時(shí)器初始化sck=o;_nop_();sck=1;_nop_();data=o;_nop_();sck=o;_nop_();_nop_();_nop_();sck=1;_nop_

27、();data=1;_nop_();sck=o;傳輸啟動(dòng)子程序是用來(lái)表示數(shù)據(jù)傳輸?shù)某跏蓟?。每次?duì)傳感器進(jìn)行寫(xiě)命令或者讀命令前先進(jìn)行以上程序方可。4.3.3一個(gè)字節(jié)子程序char s_write_byte(unsigned char value)unsigned char i,error=0;for(i=0x80;i>0;i/=2)if(i&value)data=1;elsedata=o;sck=1;_nop_();_nop_();_nop_();sck=o;data=1;sck=1;error=data;sck=o;return error;可以通過(guò)寫(xiě)一個(gè)字節(jié)子程序?qū)鞲衅鬟M(jìn)行寫(xiě)

28、指令操作。若想讀岀濕度值就向傳感器寫(xiě)入'0000010讀出溫度值就向傳感器寫(xiě)入'00000011 '4.3.4讀一個(gè)字節(jié)子程序char s read_byte(unsigned char ack) unsigned char i,val=o;data=1;for(i=0x80;i>0;i/=2)sck=1;if (data)val=(val|i);sck=o;data=!ack;sck=1;_nop_();_nop_();_nop_();sck=o;data=1;return val;把相應(yīng)的通過(guò)讀一個(gè)字節(jié)子程序從傳感器讀出溫度值或濕度值,數(shù)據(jù)送到單片機(jī)的寄存器中

29、。4.3.5數(shù)據(jù)處理子程序void calc_sth 11 (float *p_humidity,float *p_temperature)const float 6=40;const float c2=0.0405;const float c3=-0.000002&const float t1 =0.01;const float t2=0.00008;float rh=*p_humidity;float t=*p_temperature;float rhji n; float rh_true;float t_c; t_c=t*0.01-40;rh_lin=c3*rh*rh+c2*rh

30、+c1;rh_true=(t_c-25)*(t1+t2*rh)+rh_lin;if(rh_true<0.1) rh_true=0.1;*p_temperature=t_c;*p_humidity=rh_true;把從傳感器讀出的二進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的十進(jìn)制數(shù)。4.3.6顯示子程序void display(float humi,float temp)int humil,tempi; humi1=(humi*10); tempi =(temp*10);if(temp1<0)dispbuf0=10;tempi =abs(temp1);elsedispbuf0=11; if(cnt=o)di

31、spbuf1=temp1/100; dispbuf2=temp1/10% 10;dispbuf3=temp1%10; dispbuf4=11;dispbuf5=humi1/100;dispbuf6=humi1/10% 10;dispbuf7=humi1%10; if(humi>humiset)|(te mp>tempset)p0_4=0;elsep0_4=,z,;elif(cnt=1)if(temph>9)dispbuf0=10;elsedispbuf0=11;dispbuf1=temph%10;dispbuf2=templ%10;dispbuf3=11;dispbuf4=1

32、1;dispbuf5=11;dispbuf6=11;dispbuf7=11;elsedispbuf0=11;dispbuf1=11;dispbuf2=11;dispbuf3=11;dispbuf4=11; dispbuf5=humih%10;dispbuf6=humil%10; dispbuf7=11;當(dāng)cnt=0時(shí)數(shù)碼管顯示實(shí)際的溫濕度值,當(dāng) cnt=1時(shí)數(shù)碼管顯示設(shè)定溫度值,當(dāng)cnt=2時(shí)數(shù)碼管顯示設(shè)定濕度值。4.3.7按鍵子程序void key()if(po_o=o) for(i=5;i>0;i-) for(j=248;j>0;j-); if(po_o=o)cnt+; if(

33、cnt>2) cnt=0; while(p0_0=0);if(cnt=1) jf(po_1=o) for(i=5;i>0;i-) for(j=248;j>0;j-); if(po_l=o)temph+; if(temph=15) temph=0; while(p0_ 仁=0); if(p0_2=0) for(i=5;i>0;i-) for(j=248;j>0;j-); if(p0_2=0) templ+; if(templ=10) templ=0; while(p0_2=0);elseif(cnt=2)if(po_ 仁=0)for(i=5;i>0;i-) f

34、or(j 二248;j>0;j); if(p0_1=0)humih+;if(humih=10)humih=o;while(po_ 仁=0);if(p0_2=0)for(i=5;i>0;i-)for(j=248;j>0;j-);if(p0_2=0)humil+;if(humil=10)humil=0;while(p0_2=0);if(temph<10)tempset=temph*10+templ; elsetempset=(10-temph)-templ;humiset=humih*10+humil;s1鍵對(duì)應(yīng)p0_0,s2鍵對(duì)應(yīng)p0_1 ,s3鍵對(duì)應(yīng)p0_2o每按一次s

35、1鍵,變量ent加1,當(dāng)cnt>2時(shí)cnt=0o當(dāng)cnt=1時(shí)每按一次s2鍵,temph加 當(dāng) temph>14 時(shí) temph=0,當(dāng) temph 為 10, 11, 12, 13, 14 時(shí)分別對(duì)應(yīng)的是-1, -2, -3, -4,每按一次s3鍵,tempi力口 1,當(dāng)templ>9時(shí) templ=0o 當(dāng) cnt=2 時(shí) s2,s3 鍵調(diào)的是 humih 和 humil4.3.中斷刷新顯示數(shù)碼管子程序void to(void) interrupt 1mstcnt+;if(mstcnt=8)mstcnt=0;if(dispbitcnt=2)|(dispbitcnt=6)p

36、1= dispcodedispbufdispbitcnt&oxfb;elsep1 =dispcodedispbufdispbitc nt; p2=dispbitcodedispbitcnt;dispbitcnt+; if(dispbitcnt=8)dispbitcnt=0;每2ms刷新數(shù)碼管一次,人眼的視覺(jué)暫留時(shí)間大概是 0.1s,所以可以讓人感覺(jué)到每個(gè)數(shù)碼管都在顯示。第三和七個(gè)數(shù)碼管分別為溫 度和濕度的個(gè)位,所以讓這兩個(gè)數(shù)碼管的小數(shù)點(diǎn)位一直顯示。4.3.9軟件在硬件上的調(diào)試分析軟件在keil里編譯通過(guò)以后還得在硬件電路上調(diào)試,讓數(shù)碼管 顯示正確的溫濕度值,按鍵能夠設(shè)定初始值,led發(fā)

37、光二極管能夠指 示報(bào)警,這些功能都實(shí)現(xiàn),本設(shè)計(jì)才能算基本完成。硬件電路是我本 著連線簡(jiǎn)單的原則焊接的,數(shù)碼管的段選信號(hào)端(a,b,c,d,e,f,g,dp) 并不是與單片機(jī)的p1 口(從0-7)正好相互對(duì)應(yīng)的。所以這里我們需 要對(duì)數(shù)碼管所要顯示的0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 和“不顯示” 從新編碼。在開(kāi)始調(diào)試的時(shí)候我就忽略了這一點(diǎn),我用的是資料書(shū)中 常用到那種,所以數(shù)碼管顯示的是亂碼。我以為是硬件電路出了錯(cuò)誤, 我用萬(wàn)用表把每根線從新測(cè)了一遍, 發(fā)現(xiàn)硬件電路一切正常啊。這時(shí)我才忽然想到,是編碼這邊出現(xiàn)了錯(cuò)誤。我根據(jù)硬件的連線從新對(duì)0,1, 2,3, 4, 5, 6

38、, 7,9, 和“不顯示”進(jìn)行了編碼。顯示的數(shù)值還是不正確,但是數(shù)碼管中顯示的數(shù)和我想要顯示的數(shù)有幾分相似。在編碼時(shí)我又忽略的一點(diǎn),我們總是習(xí)慣性的從左往右寫(xiě)數(shù),我就在 紙上從左往右一次寫(xiě)了 p1_0, p1_1,p1_2, p1_3, p1_4, p1_5, p1_6和p1_7 o所以編出的結(jié)果與實(shí)際所要的結(jié)果高位與低位正好錯(cuò)了位so這次畢業(yè)設(shè)計(jì)讓我認(rèn)識(shí)到了一般的設(shè)計(jì)流程以及設(shè)計(jì)中所要注意到的一些細(xì)節(jié)。在設(shè)計(jì)開(kāi)始,應(yīng)該先要認(rèn)識(shí)到這次設(shè)計(jì)所要完成的 功能。接著大致分析一下所要用到的元器件。總體思路清晰以后就要畫(huà)原理圖。根據(jù)原理圖焊接電路板,焊接的時(shí)候應(yīng)該怎樣布線簡(jiǎn)單怎 樣焊接,盡量達(dá)到布線少,

39、布線短,跳線少,美觀大方。硬件電路沒(méi) 有任何問(wèn)題后就可以根據(jù)我們所設(shè)計(jì)好的電路進(jìn)行軟件編程了。結(jié)論本次單片機(jī)的數(shù)字溫濕度的設(shè)計(jì),包括硬件和軟件設(shè)計(jì)兩部分。我先是在軟件上完全做好的基礎(chǔ)上再實(shí)行硬件電路的設(shè)計(jì)。在軟件設(shè)計(jì)過(guò)程中我是先編出數(shù)字鐘控制程序后,我才開(kāi)始根據(jù)dht91的時(shí)序圖進(jìn)行軟件的編寫(xiě)程序。在軟件設(shè)計(jì)過(guò)程中我也遇到 了問(wèn)題,經(jīng)過(guò)柳老師的指點(diǎn)和同學(xué)之間的討論,終于解決并學(xué)到了編 程技巧及一些編程思想。由于材料有限,本設(shè)計(jì)中的有些電容和電阻 的數(shù)值并不是原理圖中設(shè)計(jì)的大小,但是不影響結(jié)果。在畫(huà)原理圖和 制作pcb版圖的過(guò)程中我熟練掌握了 altium designer的基本應(yīng)用。 在制作p

40、cb版圖方面,我的pcb版圖在布線方面還不夠完美,但是 我會(huì)不斷努力爭(zhēng)取做的更好。經(jīng)過(guò)軟件在硬件電路上的調(diào)試后,基本功能都能實(shí)現(xiàn)。溫度和濕 度都是顯示到小數(shù)點(diǎn)后一位。如果手放到數(shù)字溫濕度傳感器 dth 91 上,數(shù)碼管上顯示的溫度和濕度會(huì)立即發(fā)生變化, 測(cè)出其溫度和濕度。本電路還是存在一些不足及需要改進(jìn)的地方,如可以加計(jì)算機(jī)串 口傳輸,掉電存儲(chǔ)等模塊。致謝本畢業(yè)設(shè)計(jì)是在柳老師的精心指導(dǎo)下完成,首先我要對(duì)柳斌老師表示最真誠(chéng)的謝意。在論文設(shè)計(jì)這幾個(gè)月來(lái)的學(xué)習(xí)過(guò)程中柳老師在設(shè) 計(jì)上給予我耐心的指導(dǎo),同時(shí)我也學(xué)會(huì)了如何把專(zhuān)業(yè)知識(shí)應(yīng)用于實(shí)際 當(dāng)中,為今后走上工作崗位打下了堅(jiān)實(shí)的基礎(chǔ)。在我即將結(jié)束大學(xué)學(xué)習(xí)之際,我真心感謝三年來(lái)所有教過(guò)我的老 師們,謝謝你們給予我的指導(dǎo)和關(guān)懷;同時(shí)我也感謝三年來(lái)在一起學(xué) 習(xí)、生活的同窗好友們,謝謝你們給予我的照顧和關(guān)心。畢業(yè)設(shè)計(jì)結(jié)束后,我將踏上工作崗位,三年時(shí)間學(xué)習(xí)到的知識(shí)與 經(jīng)驗(yàn)將成為我走向崗位的墊腳石。相信我定會(huì)更加努力拼搏,創(chuàng)造出 我的世界。最后,懇請(qǐng)所有讀到本畢業(yè)設(shè)計(jì)的老

溫馨提示

  • 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)論