基于51單片機的溫濕度測量儀課程設計_第1頁
基于51單片機的溫濕度測量儀課程設計_第2頁
基于51單片機的溫濕度測量儀課程設計_第3頁
基于51單片機的溫濕度測量儀課程設計_第4頁
基于51單片機的溫濕度測量儀課程設計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、重慶郵電大學單片機應用課程設計2013-2014(1)課設題目: 基于單片機的簡易溫濕度測量儀 指導教師: 黃 老 師 序號姓名班級學號性別工作量(%)分數(shù)1夏恒發(fā)01211012011210050男202文 翻01211012011210009女203羅春雪01211012011210010女154王 琎01211012011210043男155劉 藝01211012011210069女156李怡佳01211012011210072女15目錄第1章 摘要1第2章 設計任務分析及方案論證12.1設計要求12.2設計方案及其論證12.3器件選定22.4 at89c51單片機42.5顯示部分5第3

2、章 電路與程序設計63.1主控制電路和測溫時控制電路63.2主要模塊的電路7 3.2.1溫濕度采集模塊 7 3.2.2報警模塊 7 3.2.3顯示模塊 8第4章 測試方案與測試結果 104.1測試方案及測試條件 104.2測試結果及其完整性104.3測試結果分析10結論 11心得體會 12參考文獻 12附錄 13摘 要本次設計是采用msc-51系列單片機中的at89c51和dht11構成的低成本的溫濕度的檢測控制系統(tǒng)。單片機at89c51是一款低消耗、高性能的cmos8位單片機,由于它強大的功能和低價位,因此在很多領域都是用它。dht11溫濕度傳感器是一款含有已校準數(shù)字輸出的溫濕度復合傳感器,

3、傳感器包括一個電阻式感濕原件和一個ntc測溫元件,該產(chǎn)品具有品質(zhì)卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。設計主要包括硬件電路的設計和系統(tǒng)軟件的設計。硬件電路主要包括單片機、溫濕度傳感器、顯示模塊、報警器以及控制設備等5部分。其中由dht11溫濕度傳感器及1602字符型液晶模塊構成系統(tǒng)顯示模塊;測溫濕度控制電路由溫濕度傳感器和預設溫度值比較報警電路組成;用戶根據(jù)需要預先輸入預設值,當實際測量的溫濕度不符合預設的溫濕度標準時,發(fā)出報警信號(蜂鳴器蜂鳴),啟動相應控制。關鍵詞:at89c51;dht11;溫濕度傳感器第2章 設計任務分析及方案論證2.1設計要求 以mcs_51系列單片機at8

4、9c51學習板作為本次實驗的核心器件,外接報警電路,溫濕度采集電路,組成一個溫濕度采集報警系統(tǒng)。基本要求溫濕度采集使用dht11芯片,報警電路用有源蜂鳴器作為報警器件;測量空氣溫濕度;通過數(shù)碼管顯示溫度和濕度,顯示位數(shù)精確到個位,要求觀察時無閃爍;設置溫度和濕度的上下限,通過蜂鳴器報警;將溫度和濕度單位顯示在數(shù)據(jù)后面,溫度c 或f、濕度%rh。提升部分:采用液晶顯示,聲音告警、閃爍顯示告警項、按鍵設定上下限值,單位轉(zhuǎn)換。2.2設計方案及其論證本設計要實現(xiàn)的功能是:實時顯示當前環(huán)境的溫濕度,并且允許用戶設定溫濕度閥值,當環(huán)境溫濕度超過或低于標準值時,系統(tǒng)會以蜂鳴器鳴響的方式進行報警提示。 用于用

5、戶設定溫濕度準確值,1602用于數(shù)據(jù)顯示,蜂鳴器用于提示用戶。按照系統(tǒng)的設計功能所要求的,溫濕度監(jiān)控系統(tǒng)原理圖如下圖2.2.1所示:溫濕度傳感器lcd1602、數(shù)碼管溫濕度顯示 蜂鳴器 單片機 led燈圖2-2-1 溫濕度監(jiān)控系統(tǒng)原理圖方案1:利用dht11與單片機上的數(shù)碼管一起用來顯示室內(nèi)溫濕度。然后對當前的溫濕度進行判斷是否超出閾值。若超出閾值,通過三極管放大作用使蜂鳴器報警。方案2:利用dht11采集溫濕度,然后傳入單片機,通過擴展槽連接到lcd1602上,使用lcd1602顯示溫濕度,然后在溫濕度后面顯示閾值。若溫度或濕度超出閾值,通過三極管使蜂鳴器報警。方案3:利用dht11采集溫濕

6、度,將數(shù)據(jù)傳入單片機,通過擴展槽連接到lcd1602,并一起使用數(shù)碼管顯示溫濕度。閾值的顯示在lcd1602上顯示。若溫度或濕度超出閾值,通過三極管產(chǎn)生三種不同頻率,使蜂鳴器發(fā)出不同的報警聲音。2.3器件選定2.3.1測量部分:溫濕度傳感器dht11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的溫濕度傳感和數(shù)字模塊采集技術,具有很高的穩(wěn)定性和可靠性,dht11傳感器內(nèi)含一個ntc測溫和一個電阻式感濕元件,并與一個8位的高性能單片機相連接,在精確的濕度校驗室中dht11傳感器進行過校準,以程序的形式校準系數(shù)儲存在0tp內(nèi)存中,檢測信號的時候,在處理過程中傳感器內(nèi)部要

7、調(diào)用這些校準系數(shù),采用單線制的串行接口,使系統(tǒng)集成可以有較低的功耗,而且更加簡單快速,信號傳輸距離超過20米,作為一個數(shù)字溫濕度傳感器dht11具有響應快速、抗干擾強、性價比高等優(yōu)點,它的性能指標如下:濕度測量范圍為2090rh;濕度測量精度為±5rh;溫度測量范圍為050 ,溫度測量精度為±2,工作電壓3055 v,相應時間<5s,dht1l采用4針單排引腳封裝, 傳感器通電后,需要等待1s,這是因為要越過不穩(wěn)定的狀態(tài),在此期間不需發(fā)送指令,電源引腳(vdd,gnd)之間可增加一個100nf 的電容,用以去耦濾波。圖2-3-1典型的應用電路圖2-3-1 dht11實

8、物圖(1)dht11溫濕度傳感器產(chǎn)品參數(shù):相對濕度分 辨 率:16bit重 復 性:±1%rh精 度:25°c ±5%rh遲 滯:±0.3%rh長期穩(wěn)定性:±0.5%rh/yr溫度分 辨 率:16bit重 復 性:±0.2°c量程范圍:25°c ±2°c電氣特征供 電:dc 3.5-5.5v供電電流:測量0.3ma 待機60a采樣周期:次 大于2秒引腳說明(1)vdd 供電3.5-5.5v (2)data 串行數(shù)據(jù),單總線(3)nc 空腳(4)gnd 接地,電源負極2.3.2串行接口(單線雙向)

9、data 用于微處理器與 dht11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下:一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和。數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結果的末8位。dht11發(fā)送響應信號的時候總線為低電平 ,dht11把總線拉高80us之前,必須等到響應信號發(fā)送,準備發(fā)送數(shù)據(jù)時

10、,每一bit數(shù)據(jù)都以50us低電平時隙開始,數(shù)據(jù)位是0或1是由高電平的長或短來決定。假如響應信號的讀取為高電平,但是dht11無響應響應,這時候說明路線可能連接不正常,當最后一bit數(shù)據(jù)傳送結束后,dht11把總線拉低50us,接著總線由上拉電阻拉高進入空閑狀態(tài)。2.3.3引腳說明表2.3.5 dht11引腳說明pin名稱注釋1vdd供電35.5v2data串行數(shù)據(jù),單總線3nc空腳,懸空4gnd接地,電源負極2.3.7 封裝信息圖2-3-6 dht11的封裝信息:2.4單片機資料簡介at89c51是美國atmel公司生產(chǎn)的低電壓,高性能cmos8位單片機,片內(nèi)含4k bytes的可反復擦寫的

11、只讀程序存儲器(perom)和128 bytes的隨機存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術生產(chǎn),兼容標準mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(cpu)和flash存儲單元,功能強大at89c51單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域。2.5顯示部分:lcd顯示部分是lcd1602液晶顯示,圖2-8 正常工作lcd1602顯示2.5.1引腳功能說明 1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令編程來實現(xiàn)的。表2-8-3 引腳接口說明表lcd1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明

12、符號引腳說明1vss地2vdd正極3vl液晶顯示偏壓4rs寄存器選擇5r/w讀/寫選擇6en使能信號7d0數(shù)據(jù)8d1數(shù)據(jù)9d2數(shù)據(jù)10d3數(shù)據(jù)11d4數(shù)據(jù)12d5數(shù)據(jù)13d6數(shù)據(jù)14d7數(shù)據(jù)15bla背光源正極16blk背光源負極圖2-8-3 lcd1602的管腳圖圖2-8-3 1602字符型液晶顯示器實物圖第3章 電路與程序設計 單片機是整個系統(tǒng)的控制中樞,它指揮外圍器件協(xié)調(diào)工作,從而完成特定的功能,硬件實現(xiàn)上采用模塊化設計,每一模塊只實現(xiàn)一個特定功能,最后再將各個模塊搭接在一起,這種設計方法可以降低系統(tǒng)設計的復雜性,本系統(tǒng)主要硬件設計包括電源電路、蜂鳴器電路、晶振電路,lcd顯示電路以及溫

13、濕度傳感器電路。3.1主控制電路和測溫時控制電路 本次硬件的核心就是at89c511,其他的外圍電路都是圍繞它所設計的。數(shù)字溫濕度傳感器的dht11的data口連接單片機at89c51的p1.7口。顯示電路就是把lcd1602和單片機的p2口分別相連,當溫度或濕度高于預設值的時候蜂鳴器蜂鳴報警,代表控制系統(tǒng)的指示燈閃爍。3.2主要模塊的電路3.2.1系統(tǒng)的蜂鳴器電路圖3-2-1 蜂鳴器電路開始(rhh|rhl)&&(ht|lt)hxd=0,蜂鳴器報警hxd=1,蜂鳴器不報警報警電路流程圖void warning() /報警函數(shù) uchar i; hxd=1; /蜂鳴器不報警 i

14、f(rhh|rhl)&&(ht|lt) for(i=0;i<5;i+) hxd=0;delay(2000); hxd=1;delay(2000); hxd=0;delay(2000); hxd=1; /溫濕度都超標時,頻率1報警 報警模塊子程序3.2.2傳感器電路 dht11是數(shù)字型溫濕度傳感器,可直接以數(shù)字方式傳輸所采集的當前環(huán)境溫濕度,dht11采用的是單總線通信,因此只需將單片機的一個io端口與dht11的通信接口連接就可以實現(xiàn)數(shù)據(jù)的采集和傳送,相對于其他電路來說比較簡單。如圖3.4所示:圖3-2-5 傳感器電路3.2.3顯示電路 顯示模塊選用1602字符型液晶模塊

15、,它是目前工控系統(tǒng)中使用最廣泛的液晶屏之一,由于它顯示的質(zhì)量高,電路圖如圖3.4所示,1602字符型液晶模塊是點陣型液晶,驅(qū)動方便,經(jīng)過編程后顯示內(nèi)容多樣化。圖3-2-4 顯示電路顯示子程序開始初始化p0=0;p1=0x0c段選/位選seq_tab/dig_tab 結束數(shù)碼管顯示流程圖lcd模塊開始lcd_init初始化,清屏設置輸入指令函數(shù)lcd_write_command設置輸入數(shù)據(jù)函數(shù)lcd_write_data單數(shù)據(jù)顯示函數(shù)lcd_disp整體顯示函數(shù)lcd_display結束lcd顯示流程圖void display() /數(shù)碼管顯示函數(shù) uint j=0; p0=0xff;digce

16、=1;digce=0; p0=seg_tab10;segce=1; segce=0; p0=dig_tab4;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tab11; segce=1;segce=0; p0=dig_tab0;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tab12;segce=1;segce=0;p0=dig_tab1;digce=1;digce=0;for(j=0;j<500;j+);

17、 p0=0xff;digce=1;digce=0;p0=seg_tabd4;segce=1;segce=0;p0=dig_tab2;digce=1;digce=0;for(j=0;j<500;j+);p0=seg_tabd3;segce=1;segce=0; /*lcd液晶屏函數(shù)部分*void lcd_write_command(uchar dat) /寫指令 lcd_db=dat; lcd_rs=0;/指令 lcd_rw=0;/寫入 lcd_e=1;/允許 delay_n40us(1); lcd_e=0; delay_n40us(1); 顯示模塊子程序第4章 測試方案與測試結果4.1測

18、試方案及測試條件Ø 軟件調(diào)試將整個硬件電路通過學習板上的接口與電腦上的軟件keil uvision4連接,運行程序,此時學習板上的數(shù)碼管顯示的為測量的當前溫濕度值(室溫)。Ø 改變測量溫濕度值用手握住dht11,人為改變芯片所處環(huán)境溫度,觀察數(shù)碼管上顯示的溫度值是否有改變。超出初始設定溫度上下限時,蜂鳴器發(fā)出響聲報警;對著dht11哈氣,改變濕度,觀察數(shù)碼管上顯示的濕度度值是否有改變。超出初始設定濕度上下限時,蜂鳴器發(fā)出響聲報警Ø 軟件設定報警溫濕度上下限值在keil uvision4中直接改變初始設定的報警溫濕度值,運行程序,觀察顯示效果。超出新設的報警溫濕度,

19、蜂鳴器發(fā)出響聲報警。4.2測試結果及其完整性Ø 能正常顯示dht11測量到的溫濕度。顯示無閃爍,有效值精確到小數(shù)點后一位;Ø 超出設定的報警溫濕度值,蜂鳴器發(fā)出不同頻率響聲報警;Ø 當顯示溫度值在設定溫度值之內(nèi)時,蜂鳴器不發(fā)出聲音;Ø 多次改變報警溫度上下限值,蜂鳴器能在每次顯示溫度值超出設定報警值時發(fā)出聲音報警。4.3測試結果分析Ø 穩(wěn)定無閃爍顯示當前環(huán)境溫濕度值,有效值精確到小數(shù)點后一位。改變環(huán)境溫濕度,顯示改變;Ø 蜂鳴器在顯示溫濕度超出設定的上下限值時發(fā)出響聲報警,顯示溫濕度在設定范圍之內(nèi)時,不發(fā)出聲音;Ø 多次改變

20、報警溫度上下限值,改變dht11所處環(huán)境溫度,每次超出新設報警溫度值時,蜂鳴器都可以準確發(fā)出聲音報警。根據(jù)溫濕度監(jiān)控系統(tǒng)功能,系統(tǒng)軟件流程圖如圖41所示:ny圖4-1系統(tǒng)流程圖結 論本文設計的是糧庫的溫濕度監(jiān)測報警、控制系統(tǒng)。由高性價比單片機對數(shù)字溫濕度傳感器控制,通過溫、濕度傳感器,實現(xiàn)對溫濕度數(shù)據(jù)采集,并對數(shù)據(jù)處理、lcd1602顯示屏顯示即時溫、濕度值。當溫濕度數(shù)據(jù)超出設定溫、濕度值時,由單片機驅(qū)動報警裝置,實現(xiàn)現(xiàn)場報警功能,控制系統(tǒng)自行啟動,調(diào)節(jié)不在范圍內(nèi)的溫、濕度,使其恢復正常。首先,介紹了設計的核心組成部分單片機at89s51的的基本構成和原理,簡要的說明了單片機的最小系統(tǒng),中斷系

21、統(tǒng),復位電路和時鐘電路。然后介紹了顯示部分lcd1602的各個引腳和指令說明,為下面的編程做準備。其次,介紹了本次設計的傳感器:dht11溫濕度傳感器。然后給出了主要模塊電路的結構,在硬件連接以后,初步的硬件運行結果,以實物圖的形式進行了說明。介紹了控制溫、濕度的設備,在根據(jù)不同環(huán)境下的應用和選擇。最后,說明了用到的軟件,給出了總體的原理圖和流程圖和proteus運行結果,以便更好的理解。最后程序檢查正常,焊接成品,硬件運行正常,滿足了初步設計要求,達到了糧庫溫、濕度控制的目的。在設計中還有不足的部分,在現(xiàn)場控制時,保證傳感器不受條件因素的影響是很重要的,由于研究時間和條件的限制,糧庫溫、濕度

22、還有許多地方需要深入研究。心得體會這次的課程設計是要求做一個dht11的溫濕度傳感器,才拿到這個任務的時候,看著上面的要求,覺得好像是一個挺大的工程的,當時感覺還是比較迷茫的。于是我們從找資料到買器材就花了一周的時間,這期間對于dht11的一些性能有了初步的了解,也對一些實際的電路器材有了認識,但畢竟都是第一次做這種項目,所以光是完全確認原理電路和元件清單就用了很久,不過還好最后基本上準備齊全了。做項目的第一步,我們組是在一起討論了一個比較完善的焊接電路圖,因為只是51板的一個外拓模塊,且元器件也不是很多,所以留給我們的設計空間很大,最后我們決定了一個充分利用板子大小的方案來作為最終的方案。然

23、后第二步,我們則是焊電路和編程一塊進行的。在焊電路過程中,因為有設計圖做參考,所以比較順利,而在程序編寫過程中,則遇到了一些困難。比如dht11的數(shù)據(jù)傳輸有嚴格的時間標準,但是我們設計的延時程序總是與傳輸標準存在誤差,導致無法正確接收數(shù)據(jù)。還有數(shù)據(jù)處理上面,因為沒有進行字符型轉(zhuǎn)化,所以一開始在lcd液晶屏上顯示的是亂碼。再就是對于按鍵設置上面,一開始是準備添加按鍵功能的,然后在編程過程中發(fā)現(xiàn)對于單一的溫度或者濕度的按鍵調(diào)整比較好編,但是模式轉(zhuǎn)換和將兩者結合在一起的地方感覺思路很混亂,最終因為其他模塊還亟待改善,就放棄了這個模塊的添加。最后在全部設計完了以后做硬件調(diào)試時還發(fā)現(xiàn)了蜂鳴器一直會叫,檢

24、查了幾遍也沒發(fā)現(xiàn)錯誤,結果后來換了一個端口就沒事了,一開始用的是p0口,后來是把led燈的端口用來做蜂鳴器端口,發(fā)現(xiàn)鳴叫正常了,而且led燈也會亮起報警,是意料之外的驚喜。最后,這一次的課程設計真的讓我們學到了很多,從一開始的資料查找,到購買原件,再到設計電路和編寫程序,讓我們切實的感受到了一個項目的完成需要做很多的準備和付出很多的精力。不過在這同時我們收獲的也很多,總之這次課程設計讓我們對單片機這一塊有了很大的提高,很有意義。參考文獻1 電子發(fā)燒友網(wǎng).2 譚浩強.c語言程序設計(第三版)     清華大學出版社.3 胡漢才.單片機原來及其接口

25、技術(第三版)清華大學出版社.4 百度文庫:最全面的dht11中文資料 5 百度文庫 :單片機驅(qū)動蜂鳴器原理與設計 6 百度文庫 :dht11數(shù)據(jù)手冊 附錄附錄a硬件原理圖附錄b 代碼#include<regx51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define lcd_db p2uchar seg_tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39,0x76,0x77,0

26、x63;/uchar seg1_tab=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uchar dig_tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar temp_h,temp_l,humi_h,humi_l;uchar value,check,bt,sum,bt_temp,keynum,flag;uchar th,tl,hh,hl,rhh,rhl,ht,lt;uchar warning_rhhl2=65,20;uchar warning_thl2=25,16;uchar m,n,d1,d

27、2,d3,d4,d5,d6;uchar td=0;uchar s15;uchar s25;sbit segce=p10;sbit digce=p11;sbit keyce=p13;sbit lcd_rs=p14;sbit lcd_rw=p15;sbit lcd_e=p16;sbit dht11=p17;sbit hxd=p12;/*延時函數(shù)部分*void delay(uint j)/(j/10)ms uchar i; for(;j>0;j-) for(i=0;i<27;i+); void delay_10us(void)/10us uchar i; i-; i-; i-; i-;

28、i-; i-;void delay_n40us(uint n) uint i; uchar j; for(i=n;i>0;i-) for(j=0;j<2;j+); /*dht11數(shù)據(jù)接收處理與數(shù)碼管顯示部分*void inter_init() /初始化函數(shù) p0=0; p1=0x0c; tmod=0x01; th0=-50000/256; tl0=-50000%256; ea=1; et0=1;void com(void) /dht11的bit讀取 uchar i; for(i=0;i<8;i+) flag=2; while(!dht11)&&flag+);

29、delay_10us(); delay_10us(); delay_10us(); bt=0; if(dht11)bt=1; flag=2; while(dht11)&&flag+); /超時則跳出for循環(huán) if(flag=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預定0高電平值則數(shù)據(jù)位為 1 value<<=1; /dht11數(shù)據(jù)是從高位開始傳的,于是用左移,進行數(shù)據(jù)處理 value|=bt; void rh(void) /dht11的數(shù)據(jù)讀取 /主機拉低18ms dht11=0; delay(180); dht11=1; /總線由上拉電阻拉高

30、 主機延時20us delay_10us(); delay_10us(); delay_10us(); delay_10us(); /主機設為輸入 判斷從機響應信號 dht11=1; /判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行 if(!dht11) /t ! flag=2; /判斷從機是否發(fā)出 80us 的低電平響應信號是否結束 while(!dht11)&&flag+); flag=2; /判斷從機是否發(fā)出 80us 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while(dht11)&&flag+); /數(shù)據(jù)接收狀態(tài) com(); humi_h=

31、value; /第一次出濕度的整數(shù)值 com(); humi_l=value; /第二次出濕度的小數(shù)值 com(); temp_h=value; /第三次出溫度的整數(shù)值 com(); temp_l=value; /第四次出溫度的小數(shù)值 com(); check=value; / 第五次出效驗碼 dht11=1; /數(shù)據(jù)校驗 bt=(humi_h+humi_l+temp_h+temp_l);/當前四次數(shù)據(jù)相加等于第五次的效驗碼時,數(shù)據(jù)正確 if(bt=check) hh=humi_h; hl=humi_l; th=temp_h; tl=temp_l; bt_temp=bt; void deal(

32、) /數(shù)據(jù)處理函數(shù) m=th; /溫度整數(shù)位d1=m/10; /溫度十位d2=m%10; /溫度個位n=hh; /濕度整數(shù)位d3=n/10; /濕度十位d4=n%10; /濕度個位d5=tl/10; /溫度小數(shù)位d6=hl/10; /濕度小數(shù)位 if(n>= warning_rhhl0) rhh=1 ; else rhh=0; /濕度與最大值相比 if(n<= warning_rhhl1) rhl=1 ; else rhl=0; /濕度與最小值相比 if(m>= warning_thl0) ht=1 ; else ht=0; /溫度與最大值相比 if(m<= warni

33、ng_thl1) lt=1 ; else lt=0; /溫度與最小值相比s10 = (char)(0x30+d3); s11 = (char)(0x30+d4); /濕度整數(shù)部分 s12 = (char)(0x30+d6); /濕度小數(shù)部分 s20 = (char)(0x30+d1); s21 = (char)(0x30+d2); /溫度整數(shù)部分 s22 = (char)(0x30+d5); /溫度小數(shù)部分void warning() /報警函數(shù) uchar i; hxd=1; /蜂鳴器不報警 if(rhh|rhl)&&(ht|lt) for(i=0;i<5;i+) hx

34、d=0; delay(2000); hxd=1; delay(2000); hxd=0; delay(2000); hxd=1; /溫濕度都超標時,頻率1報警 else if(rhh|rhl)|(ht&&lt) for(i=0;i<5;i+) hxd=0; delay(1000); hxd=1; delay(1000); hxd=0; delay(1000); hxd=1; / 只有濕度超標時,頻率2報警 else if(rhh&&rhl)|(ht|lt) for(i=0;i<5;i+) hxd=0; delay(500); hxd=1; delay

35、(500); hxd=0; delay(500); hxd=1; / 只有溫度超標時,頻率3報警 / 蜂鳴器報警void display() /數(shù)碼管顯示函數(shù) uint j=0; p0=0xff;digce=1;digce=0; p0=seg_tab10;segce=1; segce=0; p0=dig_tab4;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tab11; segce=1;segce=0; p0=dig_tab0;digce=1;digce=0;for(j=0;j<500;j+);

36、 p0=0xff;digce=1;digce=0;p0=seg_tab12;segce=1;segce=0;p0=dig_tab1;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tabd4;segce=1;segce=0;p0=dig_tab2;digce=1;digce=0;for(j=0;j<500;j+);p0=seg_tabd3;segce=1;segce=0; p0=dig_tab3;digce=1;digce=0;for(j=0;j<500;j+);p0=seg_tab13;se

37、gce=1;segce=0;p0=dig_tab5;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tabd2;segce=1;segce=0;p0=dig_tab6;digce=1;digce=0;for(j=0;j<500;j+); p0=0xff;digce=1;digce=0;p0=seg_tabd1;segce=1;segce=0;p0=dig_tab7;digce=1;digce=0;for(j=0;j<500;j+); /*lcd液晶屏函數(shù)部分*void lcd_write_co

38、mmand(uchar dat) /寫指令 lcd_db=dat; lcd_rs=0;/指令 lcd_rw=0;/寫入 lcd_e=1;/允許 delay_n40us(1); lcd_e=0; delay_n40us(1); void lcd_write_data(uchar dat) /寫數(shù)據(jù) lcd_db=dat; lcd_rs=1;/數(shù)據(jù) lcd_rw=0;/寫入 lcd_e=1;/允許 delay_n40us(1); lcd_e=0; delay_n40us(1); void lcd_disp_char(uchar x,uchar y,uchar dat) /字符顯示 uchar address; if(y=1) address=0x80+x; else address=0xc0+x; lcd_write_command(addre

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論