




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、浙江工業(yè)職業(yè)技術學院電氣工程分院畢業(yè)設計浙江工業(yè)職業(yè)技術學院畢業(yè)論文(2012 屆)基于單片機技術的數(shù)字溫濕度計設計學生姓名 學 號 分 院 專 業(yè) 指導教師 完成日期 2012年3月 日 基于單片機技術的數(shù)字溫濕度計設計摘 要 本論文介紹了一種以單片機為主要控制器件,以DHT91為溫濕度傳感器的數(shù)字溫濕度計。主要包括硬件電路的設計和軟件程序的設計。硬件電路主要包括主控制器,測溫濕度電路和顯示電路三部分組成。主控制器采用單片機AT89C52,溫濕度傳感器采用,顯示電路采用8位共陽極LED數(shù)碼管,驅(qū)動電路用八個PNP型的三極管(S9012)。軟件程序主要包括主程序,測溫濕度子程序,顯示子程序和按
2、鍵子程序等。另外,還介紹了軟件的調(diào)試分析。 本設計中采用了溫濕度傳感器DHT91作為檢測元件,該傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14 位的A/D 轉換器以及串行接口電路實現(xiàn)無縫連接。因此,它具有品質(zhì)卓越、超快響應、抗干擾能力強、極高的性價比等優(yōu)點。每個傳感器芯片都在極為精確的濕度腔室中進行標定,在標定的過程中使用。傳感器在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。兩線制的串行接口與內(nèi)部的電壓調(diào)整,使外圍系統(tǒng)集成變得快速而簡單。微小的體積、極低的功耗。它具有很好的發(fā)展前景。 關鍵詞 溫濕度測量 AT89C52 DHT91目 錄第一章 數(shù)字溫濕
3、度計的設計依據(jù)和意義11.1 數(shù)字溫濕度計的設計依據(jù)11.2 數(shù)字溫濕度計的設計意義1第二章 總體設計要求及方案論證分析22.1 總體設計要求22.2 方案論證分析22.2.1 方案論證22.2.2 方案設計32.3元器件的選擇42.3.1 主控制器芯片42.3.2 數(shù)字溫濕度傳感器62.4 驅(qū)動顯示電路62.5 溫濕度測量的方法及分析7第三章 硬件電路的設計93.1主控制電路和測溫濕控制電路93.2驅(qū)動顯示電路10第四章 軟件設計及分析124.1 DHT91傳輸時序和指令集124.1.1 通訊復位時序124.1.2 啟動傳輸時序134.1.3 數(shù)據(jù)傳輸和指令集134.1.4 濕度的測量時序1
4、44.1.5 輸出轉換為物理量144.1.6 DHT91的DC特性。164.2 程序流程圖174.3 程序的設計184.3.1 通訊復位子程序184.3.2 傳輸啟動子程序184.3.3 一個字節(jié)子程序194.3.4 讀一個字節(jié)子程序194.3.5 數(shù)據(jù)處理子程序204.3.6 顯示子程序204.3.7 按鍵子程序224.3.8 中斷刷新顯示數(shù)碼管子程序234.3.9 軟件在硬件上的調(diào)試分析24結 論26致 謝27參考文獻28附 錄29引 言溫度和濕度的測量和控制是目前眾多行業(yè)的重要工作目標之一,可謂與我們的生活息息相關。無論是在工農(nóng)業(yè)生產(chǎn)、氣象部門,還是在環(huán)保、國防、科研等方面,常需對環(huán)境溫
5、度與濕度進行測量和控制?,F(xiàn)在準確測量溫濕度在生物制藥、食品加工、造紙等行業(yè)更是至關重要的。測量溫濕度的關鍵是溫濕度傳感器。過去測量溫度與濕度是分開的,隨著技術的進步及人們生活的需要出現(xiàn)了溫濕度傳感器。溫度傳感器的發(fā)展經(jīng)歷了3個階段:傳統(tǒng)的分立式溫度傳感器、模擬集成溫度傳感器、智能集成溫度傳感器。目前,國際上新型溫度傳感器正從模擬式向數(shù)字式、從集成化向智能化、網(wǎng)絡化的方向發(fā)展。濕度傳感器也是經(jīng)歷了這樣一個階段逐漸走向數(shù)字智能化??傊?,本次設計運用DHT91傳感器,結合其優(yōu)點,將制作一個便攜式常用數(shù)字溫濕度計,必定對生產(chǎn)方面有一定作用。第一章 數(shù)字溫濕度計的設計依據(jù)和意義1.1 數(shù)字溫濕度計的設計
6、依據(jù) 溫度與濕度與人們的生活息息相關。在工農(nóng)業(yè)生產(chǎn)、氣象、環(huán)保、國防、科研等部門,經(jīng)常需要對環(huán)境溫度與濕度進行測量及控制。準確測量溫濕度在生物制藥、食品加工、造紙等行業(yè)更是至關重要的。1.2 數(shù)字溫濕度計的設計意義 傳統(tǒng)的溫度計是用水銀柱來顯示的,雖然結構簡單、價格便宜,但是它的精確度不高,不易讀數(shù)。傳統(tǒng)的濕度計采用干濕球顯示法,不僅復雜而且測量精度不高。而采用單片機對溫濕度進行控制,不僅具有控制方便,簡單和靈活等優(yōu)點,而且可以大幅度提高溫度控制的技術指標。用LED來顯示溫濕度的數(shù)字看起來更加直觀。DHT91傳感器具有超快響應,抗干擾能力強,性價比高等優(yōu)點。DHT91傳感器可以直接讀出被測的溫
7、濕度值。同時單片機可以把測量出的數(shù)據(jù)通過串口傳到計算機上,來完成工業(yè)中的自動控制,給工業(yè)生產(chǎn)帶來了極大的便利。用單片機控制的溫濕度計不僅硬件電路簡單,而且測量精度比較高。用數(shù)碼管顯示測量值看起來比較美觀。無論在日常生活中還是在工業(yè)、農(nóng)業(yè)方面都不可避免的對周圍環(huán)境進行溫濕度的測量。因此,研究溫濕度的控制和測量具有重要意義。第二章 總體設計要求及方案論證分析2.1 總體設計要求設計一個以單片機為核心的溫濕度測量系統(tǒng),可實現(xiàn)的功能為:(1)測量溫度值精度為±0.4,測量濕度值精確3%;(2)系統(tǒng)允許的誤差范圍為1和1%以內(nèi);(3)系統(tǒng)可由用戶預設溫度值和濕度值,測溫范圍40128,測濕范圍
8、 0 100%; (4)超出預設值時系統(tǒng)會自動報警,即發(fā)光二極管亮;(5)系統(tǒng)采用數(shù)碼管顯示,能顯示設定溫濕度值和測得的實際溫濕度值。濕度精度(%RH) 溫度精度(°C25) 2.2 方案論證分析2.2.1 方案論證方案一,采用單片機AT89C51與SHTxx溫濕度傳感器相連組成外圍電路。方案二,采用DHT91數(shù)字溫濕度傳感器與單片機AT89C52相連外圍電路。經(jīng)過之前的知識,我比較之后選擇采用第2個方案。由于采用DHT91數(shù)字溫濕度傳感器與單片機AT89C52相連外圍電路比較簡單。DHT91數(shù)字溫濕度傳感器作為檢測元件,能夠
9、同時測試溫度和濕度。這類傳感器不僅易于焊接,而且只有四針管腳,減少了外圍電路的設計。且AT89C52與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和輸入(P 1.1/T2EX),這樣可以方便報警系統(tǒng)的設計。 所以,本次設計以DHT91數(shù)字溫濕度傳感器為例,介紹基于單片機的數(shù)字溫濕度計的設計。2.2.2 方案設計按照系統(tǒng)設計功能的要求,確定系統(tǒng)由5個模塊組成:主控制器,數(shù)字溫濕度傳感器,報警電路,按鍵電路及驅(qū)動顯示電路。驅(qū)動顯示模塊模塊報警電路按鍵電路溫濕度傳感器主控制器圖2-1 總體電路框圖主控制器的功能由單片機來完成,主要負責處理由數(shù)
10、字溫濕度傳感器送來數(shù)據(jù),并把處理好的數(shù)據(jù)送向顯示模塊。數(shù)字溫濕傳感器主要用來采集周圍環(huán)境參數(shù),并把所采集來的參數(shù)送向主控制器。按鍵電路主要用來完成單片機的復位操作和溫濕度初始值的設定。這里需要四個按鍵,一個用來完成單片機的復位操作,一個用來切換顯示的數(shù)據(jù)(是設定值還是實際測得的值),另外兩個分別用來設定初始溫度和初始濕度的個位和十位。報警電路就是用一個發(fā)光二極管來實現(xiàn)的,用來判斷周圍環(huán)境的溫度或者濕度是否超出設定值了,任何一個超出設定值發(fā)光二極管就會被點亮。驅(qū)動顯示電路主要用來驅(qū)動八位數(shù)碼管發(fā)光的。由于單片機的輸出電流太小(只有幾毫安)不能驅(qū)使數(shù)碼管發(fā)光,所以這里必須增加一個驅(qū)動顯示模塊。2.
11、3元器件的選擇2.3.1 主控制器芯片主控制器模塊選用單片機AT89C52。AT89C52是美國ATMEL公司生產(chǎn)的低電平,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的只讀程序存儲器(PEROM)和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM ),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),與標準MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,32個可編程I/O口線, 3個16位定時/計數(shù)器, 低功耗空閑和掉電模式。功能強大的AT89C52單片機適合于許多較為復雜控制應用場合。AT89C52共有6個中斷向量:兩
12、個外中斷(INT0和INT1),3個定時器中斷(定時器0, 1, 2),串行口中斷和四個雙向I/0口。 P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線復位,應為輸出驅(qū)動級的漏極開路,所以必須外接上拉電阻,否則不能正常工作。P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTE邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時
13、可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(ILL)。表2-1 P1.0和P1.1的第二功能P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(ILL)。P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,
14、被外部拉低的P3口將用上拉電阻輸出電流(ILL)。2.3.2 數(shù)字溫濕度傳感器測溫濕模塊選用數(shù)字溫濕度傳感器DHT91?,F(xiàn)今國內(nèi)外用的最多的溫濕度傳感器是SHTxx系列。不過很多客戶都反應SHTxx不方便手工焊接,很容易在焊接的時候,由于溫度過高造成傳感器直接損害,因此利用SHTxx傳感器重新在國內(nèi)封裝得到了DHT 9x系列。SHTxx系列單芯片傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專利的工業(yè)COMS過程微加工技術(CMOSens®),具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電容式聚合體測濕元件和一個能隙式測溫元件,并與一個14位的A/D器以及串行接口
15、電路在同一芯片上實現(xiàn)無縫鏈接,從而具有超快響應,抗干擾能力強,性價比高等優(yōu)點。2.4 驅(qū)動顯示電路驅(qū)動顯示模塊選用八位共陽極數(shù)碼管和八個小功率放大三極管S9012。由于單片機的端口輸出電流太小,這里必須由外界電路來驅(qū)動數(shù)碼管顯示。S9012就是用來驅(qū)動這八位數(shù)碼管顯示的。LED數(shù)碼管也稱半導體數(shù)碼管,是目前數(shù)字電路中最常用的顯示器件。它是以發(fā)光二極管作段并按共陰極方式或共陽極方式連接后封裝而成的。圖2-2所示是兩種LED數(shù)碼管的外形與內(nèi)部結構,、分別表示公共陽極和公共陰極,ag是7個段電極,DP為小數(shù)點。LED數(shù)碼管型號較多,規(guī)格尺寸也各異,顯示顏色有紅、綠、橙等。LED數(shù)碼管的主要特點如下:
16、(1) 發(fā)光響應時間極短(小于01s),高頻特性好,單色性好,亮度高。(2)能在低電壓、小電流條件下驅(qū)動發(fā)光,能與CMOS、ITL電路兼容。 (3) 壽命長,使用壽命在10萬小時以上,甚至可達100萬小時。成本低。 (4)體積小,重量輕,抗沖擊性能好。 因此它被廣泛用作數(shù)字儀器儀表、數(shù)控裝置、計算機的數(shù)顯器件。小電壓大電流的小功率放大三極管S9012的放大倍數(shù)共分六級:D級:64-91 E級:78-112 F級:96-135 G級:112-166 H級:144-220 I級:190-3002.5 溫濕度測量的方法及分析 DHT91是一個兩線串行接口的數(shù)字溫濕度傳感器,一個接口是時鐘線,一個接口
17、是數(shù)據(jù)線(支持雙向傳輸)。它是四針單排封裝,一個接電源,一個接地線,另兩個直接和單片機的P0_5和P0_6相連。不過數(shù)據(jù)線和時鐘線上需要接兩個10K的上拉電阻,因為AT89C52的P0口內(nèi)部沒有上拉電阻。單片機通過P0_5和P0_6向DHT91發(fā)送命令,DHT91接收到命令后做出相應的應答。由于DHT91內(nèi)部包含一個14位A/D轉換器,所以單片機接收到就是數(shù)字信號,只需要做相應的處理就能得到所需要的數(shù)據(jù)。這里減少了很多外部的電路的連接,用起來比較方便。第三章 硬件電路的設計 3.1主控制電路和測溫濕控制電路本次硬件設計的核心就是AT89C52,其他部件都是圍繞它設計的。數(shù)字溫濕度傳感器DHT9
18、1的DATA口和SCK口分別與AT89C52的P0_5口和P0_6口相連。因為P0口內(nèi)部沒有上拉電阻,所以這里在DATA和SCK傳輸線上分別加了一個10K的上拉電阻。預置數(shù)電路就是三個按鍵分別與AT89C52的P0_1,P0_2和P0_3口相連,為了降低AT89C52的功耗在按鍵和單片機的端口間加了個10K的限流電阻。當有按鍵按下時單片機收到有效的信號,S1鍵用來切換顯示的模式(分別顯示實際所測得的溫濕度,預置的溫度值和預置的濕度值),S2鍵用來設置初始溫度或者濕度的十位,S3鍵用來設置初始溫度或者濕度的個位。報警電路就是把個發(fā)光二極管和AT89C52的P0_4口相連,當P0_4口為低電平時放
19、光二極管被點亮。發(fā)光二極管的壓降一般為1.52.0 V,其工作電流一般取1020 mA為宜。使用LED作指示電路時,應該串接限流電阻,該電阻的阻值大小應根據(jù)不同的使用電壓和LED所需工作電流來選擇。這個電流能使放光二極管正常放光。如果電流小于10mA放光二極管的亮度會減弱,如果電流大于20mA發(fā)光二極管亮度會更強,但是會有損發(fā)光二級管的壽命有時候甚至會直接燒毀發(fā)光二極管。單片機復位有兩種:一種是上電復位,一種是按鍵復位。下圖用的就是按鍵復位,當按鍵按下時單片機的RST口從低電平變?yōu)楦唠娖?,從而進入復位狀態(tài)。當按鍵松開后,VCC給電容C3充電,從而把RST口拉至電平,單片機進入工作狀態(tài)。只要把下
20、圖的RESET按鍵和R2電阻去掉就成了上電復位了。AT89C52中有一個用于構成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器構成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構成并聯(lián)振蕩電路,對外接電容C1、C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用30pF士10pF,而如果使用陶瓷諧振器,建議選擇40pF士l0pF。這里用到的是12M的石英晶體振蕩器和兩個30
21、pF的電容。3.2驅(qū)動顯示電路數(shù)碼管的顯示有兩種方法:一種是靜態(tài)顯示,一種是動態(tài)掃描顯示。靜態(tài)顯示就是數(shù)碼管的段選端一對一與單片機的I/O相連,位選端則根據(jù)數(shù)碼管的極型來接地(GND)或者是高電平(VCC)。靜態(tài)顯示實現(xiàn)起來比較簡單,但是浪費了單片機的I/O口資源。動態(tài)掃描顯示就是幾個數(shù)碼管的段選端可以同時接到單片機的I/O口,位選端一對一的接到單片機的其它I/O口,當位選信號選中某個數(shù)碼管時,那個數(shù)碼管就被點亮,而其它數(shù)碼管不亮。動態(tài)掃描顯示節(jié)省了單片機的I/O資源。采用動態(tài)顯示方案,設計中使用八個共陰極數(shù)碼管作為顯示載體,通過八路并口傳輸,共使用了十六個I/O口。顯示時采用循環(huán)移位法,即八
22、位數(shù)碼管依次循環(huán)點亮,利用人眼睛的視覺暫留效果達到連續(xù)顯示,主程序每運行一遍便調(diào)用一次顯示子程序,將數(shù)據(jù)顯示出來。顯示部分為八位共陽極數(shù)碼管(四位一組),數(shù)碼管的段端A,B,C,D,E,F,G和DP與TA89C52的P1口相連,順序可以根據(jù)硬件接線方便而定。數(shù)碼管的字段通過八個PNP型的小功率放大三極管S9012與TA89C52的P2口相連。因為AT89C52的端口輸出電流太?。ㄖ挥袔譵A)不能點亮這八位數(shù)碼管,所以這里用了八個S9012來驅(qū)動它們。具體原理圖見附錄一。 第四章 軟件設計及分析4.1 DHT91傳輸時序和指令集4.1.1 通訊復位時序圖4-1通訊復位時序串行時鐘輸入 (SCK)
23、用于微處理器與DTH91之間的通訊同步。由于接口包含了完全靜態(tài)邏輯,因而不存在最小SCK 頻率。串行數(shù)據(jù) (DATA) 三態(tài)門用于數(shù)據(jù)的讀取。DATA 在SCK 時鐘下降沿到來之后改變狀態(tài),并僅在SCK 時鐘上升沿有效。數(shù)據(jù)傳輸期間,在SCK 時鐘高電平時,DATA 必須保持穩(wěn)定。為避免信號沖突,微處理器應驅(qū)動DATA 在低電平。需要一個外部的上拉電阻(例如:10k)將信號提拉至高電平。如果與DTH91 通訊中斷,下列信號時序可以復位串口:當DATA 保持高電平時,觸發(fā)SCK 時鐘9 次或更多。這些時序只復位串口,狀態(tài)寄存器內(nèi)容仍然保留。4.1.2 啟動傳輸時序圖4-2啟動傳輸時序用一組“啟動
24、傳輸”時序,來表示數(shù)據(jù)傳輸?shù)某跏蓟Kǎ寒擲CK 時鐘高電平時DATA 翻轉為低電平,緊接著SCK 變?yōu)榈碗娖剑S后是在SCK 時鐘高電平時DATA 翻轉為高電平。在下一次指令前,發(fā)送一個“傳輸啟動”時序。啟動傳輸時序如上圖4-2所示。4.1.3 數(shù)據(jù)傳輸和指令集后續(xù)命令包含三個地址位(目前只支持“000”),和五個命令位。DTH 91 會以下述方式表示已正確地接收到指令:在第8個SCK 時鐘的下降沿之后,將DATA 下拉為低電平(ACK 位)。在第9個SCK 時鐘的下降之后,釋放DATA(恢復高電平)。發(fā)布一組測量命令(00000101 表示相對濕度RH,00000011 表示溫度T)后
25、,控制器要等待測量結束。這個過程需要大約20/80/320ms ,分別對應8/12/14bit 測量。確切時間隨內(nèi)部晶振速度的變化而變化,最多可能有-30%的變化。DTH91 通過下拉DATA 至低電平并進入空閑模式,表示測量的結束??刂破髟谠俅斡|發(fā)SCK 時鐘前,必須等待這個“數(shù)據(jù)備妥”信號來讀出數(shù)據(jù)。檢測數(shù)據(jù)可以先被存儲,這樣控制器可以繼續(xù)執(zhí)行其它任務在需要時再讀出數(shù)據(jù)。接著傳輸2個字節(jié)的測量數(shù)據(jù)和1個字節(jié)的CRC 奇偶校驗。uC 需要通過下拉DATA 為低電平,以確認每個字節(jié)。所有的數(shù)據(jù)從MSB開始,右值有效(例如:對于12bit 數(shù)據(jù),從第5個SCK 時鐘起算作MSB;而對于 8bit
26、 數(shù)據(jù),首字節(jié)則無意義)。用CRC 數(shù)據(jù)的確認位,表明通訊結束。如果不使用CRC-8 校驗,控制器可以在測量值LSB 后,通過保持確認位ack 高電平,來中止通訊。在測量和通訊結束后,DTH91自動轉入休眠模式。4.1.4 濕度的測量時序圖4-3測量濕度的時序4.1.5 輸出轉換為物理量由能隙材料PTAT (正比于絕對溫度) 研發(fā)的溫度傳感器具有極好的線性。為了補償濕度傳感器的非線性以獲取準確數(shù)據(jù),建議使用如下公式1修正輸出數(shù)值: RHlinear = c1 + c2 .SORH + c3 .SORH (4-1)c1,c2和c3值如下表4-1所示。表4-1 濕度轉換系數(shù)濕度傳感器相對濕度的溫度
27、補償實際測量溫度與25 (77)相差較大時,應考慮濕度傳感器的溫度修正系數(shù):RHtrue = (T°C -25).(t1 + t2 .SORH) + RHlineart1和t2的值如下表4-2所示。表4-2 溫度補償系數(shù)RHtrue:測量的濕度值。4.1.6 DHT91的DC特性。DHT91的DC特性如下表4-3所示。表4-3 DHT91的DC特性4.2 程序流程圖初始化通訊復位啟動傳輸定時器初始化寫濕度指令成功error=0失敗 error=1讀濕度值成功error=0失敗 error=1寫溫度指令成功error=0失敗 error=1讀溫度值成功error=0失敗 error=1
28、Error=1?Y數(shù)據(jù)處理顯示處理通訊復位啟動傳輸N圖4-4主程序流程圖回到中斷點刷新數(shù)碼管設置初始值定時器時間到中斷其它程序圖4-5報警程序流程圖4.3 程序的設計4.3.1 通訊復位子程序void s_connectionreset(void)unsigned char i;DATA=1;SCK=0;for(i=0;i<9;i+)SCK=1;SCK=0; 通訊復位子程序用來復位串口的,當傳輸中斷或者傳輸過程中發(fā)生了錯誤時就需要從新對串口進行復位操作。4.3.2 傳輸啟動子程序void s_transstart(void)DATA=1;SCK=0;_nop_();SCK=1;_nop_
29、();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;傳輸啟動子程序是用來表示數(shù)據(jù)傳輸?shù)某跏蓟?。每次對傳感器進行寫命令或者讀命令前先進行以上程序方可。4.3.3 一個字節(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=0;SCK=1;_nop_();_nop_();_nop_();SCK=0;DA
30、TA=1;SCK=1;error=DATA;SCK=0;return error;可以通過寫一個字節(jié)子程序?qū)鞲衅鬟M行寫指令操作。若想讀出濕度值就向傳感器寫入00000101如想讀出溫度值就向傳感器寫入00000011。4.3.4 讀一個字節(jié)子程序char s_read_byte(unsigned char ack)unsigned char i,val=0;DATA=1;for(i=0x80;i>0;i/=2)SCK=1;if(DATA) val=(val|i);SCK=0;DATA=!ack;SCK=1;_nop_();_nop_();_nop_();SCK=0;DATA=1; re
31、turn val; 通過讀一個字節(jié)子程序從傳感器讀出溫度值或濕度值,把相應的數(shù)據(jù)送到單片機的寄存器中。4.3.5 數(shù)據(jù)處理子程序 void calc_sth11(float *p_humidity,float *p_temperature)const float C1=-4.0;const float C2=0.0405; const float C3=-0.0000028; const float T1=0.01; const float T2=0.00008; float rh=*p_humidity; float t=*p_temperature; float rh_lin; float
32、 rh_true; float t_c; t_c=t*0.01-40; rh_lin=C3*rh*rh+C2*rh+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;把從傳感器讀出的二進制數(shù)轉換成相應的十進制數(shù)。4.3.6 顯示子程序void display(float humi,float temp)int humi1,temp1;humi1=(humi*10); temp1=(temp*10);if(temp1<
33、0)dispbuf0=10;temp1=abs(temp1);elsedispbuf0=11;if(cnt=0)dispbuf1=temp1/100;dispbuf2=temp1/10%10;dispbuf3=temp1%10;dispbuf4=11;dispbuf5=humi1/100;dispbuf6=humi1/10%10;dispbuf7=humi1%10;if(humi>humiset)|(temp>tempset)P0_4=0;elseP0_4='Z'elseif(cnt=1)if(temph>9)dispbuf0=10;elsedispbuf0=
34、11;dispbuf1=temph%10;dispbuf2=templ%10;dispbuf3=11;dispbuf4=11;dispbuf5=11;dispbuf6=11;dispbuf7=11;elsedispbuf0=11;dispbuf1=11;dispbuf2=11;dispbuf3=11;dispbuf4=11;dispbuf5=humih%10;dispbuf6=humil%10;dispbuf7=11;當cnt=0時數(shù)碼管顯示實際的溫濕度值,當cnt=1時數(shù)碼管顯示設定溫度值,當cnt=2時數(shù)碼管顯示設定濕度值。4.3.7 按鍵子程序 void key() if(P0_0=0)
35、for(i=5;i>0;i-)for(j=248;j>0;j-);if(P0_0=0)cnt+;if(cnt>2)cnt=0;while(P0_0=0);if(cnt=1)if(P0_1=0)for(i=5;i>0;i-)for(j=248;j>0;j-);if(P0_1=0)temph+;if(temph=15)temph=0;while(P0_1=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);else
36、if(cnt=2)if(P0_1=0)for(i=5;i>0;i-)for(j=248;j>0;j-);if(P0_1=0)humih+; if(humih=10)humih=0;while(P0_1=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;else tempset=(10-temph)-templ;humiset=humih*10+hum
37、il;S1鍵對應P0_0,S2鍵對應P0_1,S3鍵對應P0_2。每按一次S1鍵,變量cnt加1,當cnt>2時cnt=0。當cnt=1時每按一次S2鍵,temph加1,當temph>14時temph=0,當temph為10,11,12,13,14時分別對應的是-,-1,-2,-3,-4,每按一次S3鍵,templ加1,當templ>9時templ=0。當cnt=2時S2,S3鍵調(diào)的是humih和humil。4.3.8 中斷刷新顯示數(shù)碼管子程序void t0(void) interrupt 1 mstcnt+;if(mstcnt=8)mstcnt=0;if(dispbitcn
38、t=2)|(dispbitcnt=6)P1=dispcodedispbufdispbitcnt&0xfb;elseP1=dispcodedispbufdispbitcnt;P2=dispbitcodedispbitcnt;dispbitcnt+;if(dispbitcnt=8)dispbitcnt=0;每2mS刷新數(shù)碼管一次,人眼的視覺暫留時間大概是0.1S,所以可以讓人感覺到每個數(shù)碼管都在顯示。第三和七個數(shù)碼管分別為溫度和濕度的個位,所以讓這兩個數(shù)碼管的小數(shù)點位一直顯示。4.3.9 軟件在硬件上的調(diào)試分析軟件在Keil里編譯通過以后還得在硬件電路上調(diào)試,讓數(shù)碼管顯示正確的溫濕度值,按
39、鍵能夠設定初始值,led發(fā)光二極管能夠指示報警,這些功能都實現(xiàn),本設計才能算基本完成。硬件電路是我本著連線簡單的原則焊接的,數(shù)碼管的段選信號端(A,B,C,D,E,F,G,DP)并不是與單片機的P1口(從0-7)正好相互對應的。所以這里我們需要對數(shù)碼管所要顯示的0,1,2,3,4,5,6,7,8,9,-和“不顯示”從新編碼。在開始調(diào)試的時候我就忽略了這一點,我用的是資料書中常用到那種,所以數(shù)碼管顯示的是亂碼。我以為是硬件電路出了錯誤,我用萬用表把每根線從新測了一遍,發(fā)現(xiàn)硬件電路一切正常啊。這時我才忽然想到,是編碼這邊出現(xiàn)了錯誤。我根據(jù)硬件的連線從新對0,1,2,3,4,5,6,7,8,9,-和
40、“不顯示”進行了編碼。顯示的數(shù)值還是不正確,但是數(shù)碼管中顯示的數(shù)和我想要顯示的數(shù)有幾分相似。在編碼時我又忽略的一點,我們總是習慣性的從左往右寫數(shù),我就在紙上從左往右一次寫了P1_0, P1_1,P1_2, P1_3, P1_4, P1_5, P1_6和 P1_7 。所以編出的結果與實際所要的結果高位與低位正好錯了位置。這次畢業(yè)設計讓我認識到了一般的設計流程以及設計中所要注意到的一些細節(jié)。在設計開始,應該先要認識到這次設計所要完成的功能。接著大致分析一下所要用到的元器件??傮w思路清晰以后就要畫原理圖。根據(jù)原理圖焊接電路板,焊接的時候應該怎樣布線簡單怎樣焊接,盡量達到布線少,布線短,跳線少,美觀大
41、方。硬件電路沒有任何問題后就可以根據(jù)我們所設計好的電路進行軟件編程了。結 論本次單片機的數(shù)字溫濕度的設計,包括硬件和軟件設計兩部分。我先是在軟件上完全做好的基礎上再實行硬件電路的設計。在軟件設計過程中我是先編出數(shù)字鐘控制程序后,我才開始根據(jù)DHT91的時序圖進行軟件的編寫程序。在軟件設計過程中我也遇到了問題,經(jīng)過柳老師的指點和同學之間的討論,終于解決并學到了編程技巧及一些編程思想。由于材料有限,本設計中的有些電容和電阻的數(shù)值并不是原理圖中設計的大小,但是不影響結果。在畫原理圖和制作PCB版圖的過程中我熟練掌握了ALTIUM designer的基本應用。在制作PCB版圖方面,我的PCB版圖在布線
42、方面還不夠完美,但是我會不斷努力爭取做的更好。經(jīng)過軟件在硬件電路上的調(diào)試后,基本功能都能實現(xiàn)。溫度和濕度都是顯示到小數(shù)點后一位。如果手放到數(shù)字溫濕度傳感器DTH 91上,數(shù)碼管上顯示的溫度和濕度會立即發(fā)生變化,測出其溫度和濕度。本電路還是存在一些不足及需要改進的地方,如可以加計算機串口傳輸,掉電存儲等模塊。致 謝本畢業(yè)設計是在柳老師的精心指導下完成,首先我要對柳斌老師表示最真誠的謝意。在論文設計這幾個月來的學習過程中柳老師在設計上給予我耐心的指導,同時我也學會了如何把專業(yè)知識應用于實際當中,為今后走上工作崗位打下了堅實的基礎。在我即將結束大學學習之際,我真心感謝三年來所有教過我的老師們,謝謝你
43、們給予我的指導和關懷;同時我也感謝三年來在一起學習、生活的同窗好友們,謝謝你們給予我的照顧和關心。畢業(yè)設計結束后,我將踏上工作崗位,三年時間學習到的知識與經(jīng)驗將成為我走向崗位的墊腳石。相信我定會更加努力拼搏,創(chuàng)造出我的世界。最后,懇請所有讀到本畢業(yè)設計的老師多提寶貴意見,不吝賜教。再次表示衷心的感謝!參考文獻1 靳桅,潘育山,鄔芝權.單片機原理及應用.西南交通大學出版社,2002.2 李光飛,樓然苗,胡佳文等.單片機課程設計實例指導.北京:北京航空航天大學出版社,2004.3 凌玉華.單片機原理及應用系統(tǒng)設計.長沙:中南大學出版社,2006.4 劉華東.單片機原理與應用.北京:電子工業(yè)出版社,
44、2003.5 高鵬,安濤,寇懷成等.電路設計與制版-Protel99入門與提高.北京:人民郵電出版社,2004.6 王守剛.電路原理圖與電路板設計教程.北京:北京希望電子出版社,2000.7 姚四改.Protel99SE電子線路設計教程.上海:上海交通大學出版社,2000.8 余家春.Protel99SE電路設計實用教程.北京:中國鐵道出版社,2004.9 肖金球.單片機原理與接口技術.北京:清華大學出版社,2004.10 余永權.FLASH單片機原理及應用.北京: 電子工業(yè)出版社,1997.11 何立民.單片機應用技術選編.北京: 北京航空航天大學出版社,1996.附 錄附錄1 電路原理圖F
45、ootprintCommentLibRefDesignatorDescriptionQuantityVP32-3.2CapCapC1, C2, C5Capacitor3CAPPR5-5x5Cap Pol2Cap Pol2C3Polarized Capacitor (Axial)1CAPR5-4X5Cap Pol2Cap Pol2C4Polarized Capacitor (Axial)1B-88HDSP-B03GHDSP-B03GD1, D214.22 mm Tinted Green, 88:88 4-Digit 7-Segment Display: CC, Gray Surface2LED-1LED1LED1D3Typical RED GaAs LED1LED-1LED2LED1D4Typical RED GaAs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京混凝土合同范本
- 各種合同范本app
- 廚房墻壁維修合同范本
- 種植水稻農(nóng)村土地出租合同范本
- 醫(yī)院租賃合同范本
- 發(fā)廊給干股 合同范本
- 買賣合同范本 中日
- 沖擊鉆合同范本
- 古董繼承合同范例
- 單位之間贈與合同范例
- 2024年OTC焊接機器人基本操作培訓
- 參考消息電子版在線閱讀(角度區(qū))
- 小學五年級《美術》上冊知識點匯總
- 2024年湖南高速鐵路職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 2016-2023年湖南鐵路科技職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 2023南頭古城項目簡介招商手冊
- 機修知識培訓教材課件
- 跨云平臺的DevOps集成
- 小學綜合實踐活動《察探究活動跟著節(jié)氣去探究》課教案
- 高空作業(yè)事故安全經(jīng)驗分享
- 勞動用工協(xié)議書范本正規(guī)范本(通用版)1
評論
0/150
提交評論