基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)6700字【論文】_第1頁
基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)6700字【論文】_第2頁
基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)6700字【論文】_第3頁
基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)6700字【論文】_第4頁
基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)6700字【論文】_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于單片機(jī)的溫濕度檢測(cè)系統(tǒng)設(shè)計(jì)目錄TOC\o"1-3"\h\u6071緒論 2132831.1概述 2102871.2研究的主要內(nèi)容和目的 29472功能要求與方案論證 338712.1功能要求 3321002.2傳感器的選擇 3428方案二:數(shù)字溫濕度傳感器 3177922.3單片機(jī)的選擇 33631方案一:STC12C5A60S2 49484方案二:STC89C52 4177662.4顯示輸出模塊的選擇 4200843系統(tǒng)硬件設(shè)計(jì) 5271753.1STC89C52簡(jiǎn)介 5212213.2DHT11簡(jiǎn)介 69803.3接口說明 749913.4系統(tǒng)電路 944243.5DHT11傳感器電路 953753.6液晶顯示電路 10185174軟件設(shè)計(jì) 1045624.1系統(tǒng)主程序設(shè)計(jì) 10281734.2溫濕度檢測(cè)子程序設(shè)計(jì) 11178454.3液晶顯示子程序設(shè)計(jì) 12303114.4按鍵控制子程序 1318605結(jié)束語 1419970參考文獻(xiàn) 1410033附錄:控制程序 15摘要由于溫度與濕度是\t"/item/%E6%B8%A9%E6%B9%BF%E5%BA%A6/_blank"有著密不可分的關(guān)系,從物理量本身還是在實(shí)際生活的人們中都有著密切的關(guān)系,溫濕度的測(cè)量應(yīng)用范圍很廣,本課題針對(duì)國(guó)內(nèi)外對(duì)溫濕度測(cè)量系統(tǒng)發(fā)展趨勢(shì)和國(guó)內(nèi)外對(duì)溫濕度測(cè)量系統(tǒng)的研究,溫濕度傳感器是指能將溫度量和濕度量轉(zhuǎn)換成容易被測(cè)量處理的電信號(hào)的設(shè)備或裝置,對(duì)一些有著特殊要求溫度,還有濕度的地方實(shí)現(xiàn)長(zhǎng)期穩(wěn)定、實(shí)時(shí)、自動(dòng)的監(jiān)測(cè),設(shè)計(jì)一種基于單片機(jī)的溫濕度測(cè)量系統(tǒng)。本設(shè)計(jì)主要由硬件電路和軟件電路兩部分組成,此電路以STC89C52單片機(jī)為核心,選用DHT11數(shù)字信號(hào)輸出溫濕度傳感器,實(shí)現(xiàn)一種智能、簡(jiǎn)單的溫濕度測(cè)量系統(tǒng)把收集好的信號(hào)傳到單片機(jī),通過單片機(jī)來處理收集好的信號(hào)并通過LCD1602液晶屏顯示出來,如果溫濕度過高或過低,報(bào)警電路會(huì)自動(dòng)報(bào)警并通過蜂鳴器發(fā)出聲響。關(guān)鍵詞單片機(jī),DHT11,溫濕度傳感器1緒論科技的進(jìn)步和相關(guān)技術(shù)的創(chuàng)新,溫濕度測(cè)量技術(shù)被應(yīng)用到各行各業(yè)中,溫濕度量是一種能準(zhǔn)確的測(cè)量溫濕度技術(shù)標(biāo)準(zhǔn),具有方便、可靠性高、低功耗與低成本,它的目的在于運(yùn)用到各行各業(yè)以及在人們的生活中去測(cè)量溫度和濕度,所以溫濕度一體傳感器就會(huì)產(chǎn)生。設(shè)計(jì)以STC89C52控制,采集信號(hào)輸出溫濕度傳感器,利用單片機(jī)讀取DHT11傳感器的溫濕度后輸出到LCD1602液晶屏。并且可以通過按鍵對(duì)溫濕度的報(bào)警范圍進(jìn)行設(shè)置,超出范圍蜂鳴器鳴叫和對(duì)應(yīng)的指示燈點(diǎn)亮。1.1概述測(cè)量是現(xiàn)代檢測(cè)技術(shù)在生活中的重要部分。如溫濕度,需控制溫濕度保證產(chǎn)品質(zhì)量,在安全生產(chǎn)中起重要作用。為了保證快、準(zhǔn)測(cè)量溫濕度技術(shù)受到各國(guó)的重視。信息產(chǎn)業(yè)發(fā)展飛速和工業(yè)化不斷進(jìn)步,溫濕度不但表現(xiàn)在幾個(gè)方面中影響到生活,還表現(xiàn)在對(duì)食品、醫(yī)藥衛(wèi)生、工地建設(shè),農(nóng)植產(chǎn)品等方面的影響。針對(duì)各種發(fā)生的情況,對(duì)溫濕度的精準(zhǔn)測(cè)量顯的極其重要。1.2研究的主要內(nèi)容和目的首先,我們必須了解溫濕度檢測(cè)對(duì)生活重要性,我們才能夠作出更好的判斷,追求更好的提供用戶需求的問題。其次,該系統(tǒng)通過按鍵設(shè)置最適宜的溫濕度,DHT11傳感器向控制系統(tǒng)輸送監(jiān)控信號(hào),如果超過設(shè)定值的話,蜂鳴器就會(huì)報(bào)警提醒,如有控制溫、濕度的設(shè)備或者儀器即可及時(shí)做出調(diào)整,讓溫濕度各回到正常范圍,系統(tǒng)正常運(yùn)行。再次,在不同環(huán)境合適溫度進(jìn)行對(duì)溫室溫度調(diào)節(jié),低于時(shí)選用增溫,可以采用電發(fā)熱,然而電力發(fā)熱比較方便。如高于上限溫度則采用降溫措施,通常通過冰水和風(fēng)扇降溫說著冰塊降溫,冰水降溫比較方便;為滿足在不同環(huán)境場(chǎng)合下對(duì)濕度的要求,有效辦法是自動(dòng)噴霧裝置調(diào)整濕度。如潮濕,特別是回南天(我國(guó)南方地區(qū)的一種氣候),容易地滑,食物的腐爛,為了避免濕度和溫度過高或過低,為了滿足需求,例如:溫室,糧食儲(chǔ)存等,讓我們可以及時(shí)對(duì)溫、濕度進(jìn)行調(diào)節(jié),對(duì)于惡劣氣候和對(duì)某種作業(yè)對(duì)溫度和濕度的把控情況下能夠及時(shí)的顯示和反饋,并能夠采取相對(duì)應(yīng)的措施和方法提醒用戶進(jìn)行調(diào)整,以達(dá)到最適宜的溫濕度。2功能要求與方案論證2.1功能要求a、系統(tǒng)可檢測(cè)當(dāng)前環(huán)境的溫濕度,并采用液晶屏顯示。b、通過按鍵設(shè)置溫度、濕度報(bào)警值的上下限。c、系統(tǒng)有斷電記憶功能,下次啟動(dòng)時(shí),回到初始值。d、溫度下限低于報(bào)警值時(shí),LED綠燈亮,超出上限報(bào)警值時(shí),蜂鳴器響,LED紅燈亮。e、濕度下限低于報(bào)警值時(shí),LED亮綠燈,超出上限報(bào)警值時(shí),蜂鳴器響,LED紅燈亮。2.2傳感器的選擇方案一:電阻溫濕度傳感器電阻溫濕度傳感器采用濕敏元件在絕緣物浸泡吸濕性物質(zhì),通過脫濕和吸濕過程中,水分解出H+離子傳送發(fā)生變化,使元件電阻值隨濕度改變。它表面的導(dǎo)電性會(huì)不同,會(huì)導(dǎo)致傳感器的阻值不同。然后再通過A/D轉(zhuǎn)換器,將阻值變化而產(chǎn)生的電壓變化進(jìn)行采集。將電壓模擬量化為數(shù)字量給單片機(jī)進(jìn)行處理。方案二:數(shù)字溫濕度傳感器數(shù)字溫濕度傳感器是數(shù)字信號(hào)輸出的傳感器,用于傳感和數(shù)字采集。由NTC測(cè)溫和電阻式感濕組成。并且集成了數(shù)據(jù)處理電路,可以直接輸出數(shù)字信號(hào)給單片機(jī)進(jìn)行處理,常見的有DHT11、DHT12型號(hào)等。由于數(shù)字濕度傳感器采用串行通訊,所以只用一個(gè)數(shù)據(jù)口就可以與單片機(jī)相連,占用IO口相對(duì)較少,使系統(tǒng)集成變得簡(jiǎn)易快捷。體積小使用該類應(yīng)用中,在苛刻環(huán)境下的最佳選擇。綜上所述,方案一只有在濕潤(rùn)的情況下才能檢測(cè)濕度,且測(cè)量效率不高,防止誤差大,所以選用方案二可以在苛刻應(yīng)用場(chǎng)合和環(huán)境直接檢測(cè)空氣的濕度,測(cè)量速度快,高精度,低功耗,簡(jiǎn)捷適合在這次畢業(yè)設(shè)計(jì)中使用。因此這次畢業(yè)設(shè)計(jì)的濕度測(cè)量方案上采用方案二度數(shù)字型溫濕度傳感器。2.3單片機(jī)的選擇方案一:STC12C5A60S2它是增強(qiáng)型51單片機(jī),功能強(qiáng),抗干擾能力很強(qiáng),技術(shù)比價(jià)成熟各方面和硬件資源都比較多,外圍接口電路簡(jiǎn)單,寄存器配置方便,程序編寫簡(jiǎn)單,較強(qiáng)的應(yīng)用性,價(jià)格便宜成本低。方案二:STC89C52STC89C52RC在可編程Flash空閑下,CPU暫停工作,允許RAM、定時(shí)器、串口等中斷下繼續(xù)工作。掉電保護(hù)時(shí),RAM內(nèi)容保存,振蕩器停止,單片機(jī)工作停止,直到下一個(gè)中斷信號(hào)或硬件復(fù)位為止。綜上所述,因?yàn)楸驹O(shè)計(jì)中對(duì)單片機(jī)要求不高,方案二價(jià)格便宜,編程難度小,此單片機(jī)運(yùn)用廣泛,因此畢業(yè)設(shè)計(jì)我選用了方案二STC89C52作為主要控制芯片去控制溫濕度傳感器工作。2.4顯示輸出模塊的選擇方案一:LED數(shù)碼管顯示LED\t"/item/LED%E6%95%B0%E7%A0%81%E7%AE%A1/_blank"數(shù)碼管是由8個(gè)發(fā)光管組成,含小數(shù)點(diǎn)。由字母分別來表示A,B,C,D,E,F,G,DP,作用為顯露數(shù)字,用來計(jì)數(shù),例如:時(shí)鐘等場(chǎng)合。它有共陰和共陽,兩種極性。所以,數(shù)碼管經(jīng)常稱為八段發(fā)光二極管數(shù)碼管。但是共陽和共陰的編程方法不同,所以選擇的時(shí)候要額外的對(duì)此產(chǎn)品要求熟悉。數(shù)碼管的顯示有靜態(tài)和動(dòng)態(tài),顯示內(nèi)容簡(jiǎn)單。方案二:LCD1602顯示LCD1602是字符型液晶顯示模塊,由字符型液晶顯示屏、控制電路、擴(kuò)展電路等元件組成。根據(jù)其顯示的內(nèi)容量分為2種,一種是一行顯示16個(gè)字符,一種是兩行16個(gè)字符等等,其中2行顯示16個(gè)字符的是本畢業(yè)設(shè)計(jì)所使用的。其具有特點(diǎn)是功耗很低,體積較小,所顯示的內(nèi)容較豐富等,所以兩行顯示16個(gè)字符的LCD1602可以在功耗低的應(yīng)用設(shè)備和儀器儀表中得到了廣泛的應(yīng)用。綜上所述,因?yàn)榉桨敢坏腖ED數(shù)碼管顯示的數(shù)字還有文字都要占用一個(gè)數(shù)碼管的位置,但是方案二的LCD1602液晶顯示屏選擇兩行16個(gè)字符,因?yàn)榭梢怨?jié)省單片機(jī)的IO口,其實(shí)兩種方案功耗低,但是為了能顯示更多的東西,還是選擇LCD液晶屏好,所以選用方案二為本畢業(yè)設(shè)計(jì)的顯示模塊。3系統(tǒng)硬件設(shè)計(jì)溫濕度檢測(cè)系統(tǒng)采用STC89C52為核心元器件,電阻和電容,還有晶振等器件配合,組成單片機(jī)最小系統(tǒng)。剩下的模塊都在單片機(jī)最小系統(tǒng)上進(jìn)行。其中溫濕度傳感器輸采用DHT11溫濕度數(shù)字輸出傳感器,負(fù)責(zé)采集溫度和濕度的數(shù)據(jù)后轉(zhuǎn)化數(shù)字信號(hào)發(fā)給單片機(jī),是整個(gè)系統(tǒng)的關(guān)鍵的器件。按鍵部分是使用在學(xué)習(xí),生活中比較常見的輕觸按鍵作為檢測(cè)系統(tǒng)的輸入設(shè)置模塊。輸出模塊則是蜂鳴器+LED。電源為USB5V供電。系統(tǒng)框圖如下:LCD1602顯示模塊DHT11溫濕度數(shù)字輸出傳感器→單片機(jī)系統(tǒng)→LCD1602顯示模塊DHT11溫濕度數(shù)字輸出傳感器單片機(jī)系統(tǒng)↑↓按鈕設(shè)置模塊蜂鳴器按鈕設(shè)置模塊蜂鳴器圖1系統(tǒng)框圖3.1STC89C52簡(jiǎn)介STC89C52是一款由\t"/item/STC89C52/_blank"STC公司生產(chǎn)低功耗,性能高CMOS8位微控制器,采用MCS-51內(nèi)核,在基礎(chǔ)上做了改進(jìn)。擁有8位CPU和可編程Flash。標(biāo)準(zhǔn)功能如下:18kbit閃存512bit隨機(jī)存取記憶體與數(shù)據(jù)存儲(chǔ)空間32位I/O口WDT內(nèi)置4K字節(jié)可擦可編程只讀存儲(chǔ)器MAX810復(fù)位電路3個(gè)\t"/item/STC89C52/_blank"定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷一個(gè)7向量4級(jí)中斷結(jié)全雙工\t"/item/STC89C52/_blank"串行口。器件參數(shù)如下:圖2單片機(jī)引腳圖1.六時(shí)鐘,機(jī)器周期可以任意選擇,指令代碼兼容

2.工作電壓:6V~2.5V3.\t"/item/STC89C52/_blank"工作頻率范圍為0~38MHz4.通用I/O口,復(fù)位后P1為弱上拉并準(zhǔn)雙向口,P0為漏極開路輸出,當(dāng)作總線擴(kuò)展時(shí),不需用上拉電阻,當(dāng)作I/O口時(shí),要用上拉電阻。5.無須專用\t"/item/STC89C52/_blank"編程器與\t"/item/STC89C52/_blank"仿真器,可通過串口下載程序,10s內(nèi)直接完成6.帶電可擦可編程ROM7.可用定時(shí)器軟件完成多個(gè)通用異步\t"/item/STC89C52/_blank"串行口8.工業(yè)級(jí)工作溫度范圍:-45~+80℃9.商業(yè)級(jí)工作溫度范圍:0~70℃10.塑料雙列直插式芯片封裝3.2DHT11簡(jiǎn)介DHT11是已校準(zhǔn)數(shù)字信號(hào)輸出的傳感器,穩(wěn)定性好、可靠性高。該產(chǎn)品具有品質(zhì)好、抗干擾好、性價(jià)比高。元件封裝:圖3DHT11元件封裝3.3接口說明連接線長(zhǎng)度在20米內(nèi)用5K上拉電阻,超過20米根據(jù)情況選合適的上拉電阻。圖4典型應(yīng)用電路pin名稱注釋1VDD直流電3-5V2DATA數(shù)據(jù)3NC沒有用途4GND接地線DATA用微處理器與DHT11的同步與通訊,數(shù)據(jù)分兩類:小數(shù)和整數(shù),具體在下面說明,通訊單總線數(shù)據(jù)一次時(shí)間為3ms,當(dāng)前小數(shù)部分用于以后擴(kuò)展,現(xiàn)讀出為0.操作流程如下:數(shù)據(jù)公式:8字節(jié)濕度整數(shù)與小數(shù)之和+8字節(jié)溫度整數(shù)與小數(shù)之和的總和,取末8位數(shù)。用戶發(fā)送信號(hào)后,轉(zhuǎn)換高速模式,等信號(hào)結(jié)束,DHT11發(fā)送響應(yīng)信號(hào),送出一次字節(jié)數(shù)據(jù)并采集。接收完一次信號(hào)使溫濕度采集,如果沒有信號(hào),不會(huì)運(yùn)行采集溫濕度.采集完后轉(zhuǎn)換低耗模式。過程如下圖5所示圖5高電平時(shí)總線為停止?fàn)顟B(tài),主機(jī)使總線拉低時(shí)等待響應(yīng),確保讓傳感器檢測(cè)到開始信號(hào)。接收開始信號(hào)后,等信號(hào)結(jié)束,然后發(fā)送反應(yīng)信號(hào)。開始信號(hào)結(jié)束后可以切輸出高電平或輸入模式,總線由上拉電阻拉高,延時(shí)等待讀取傳感器響應(yīng)信號(hào)。圖6總線低電平時(shí),傳感器響應(yīng)信號(hào)已發(fā)送后,再用上拉電阻拉高總線,數(shù)據(jù)發(fā)送時(shí)每字節(jié)以50us低電平傳送,.若是高電平的響應(yīng)信號(hào),不會(huì)運(yùn)作,請(qǐng)檢查線路的正常連接.當(dāng)傳送完后,傳感器拉低,然后總線由上拉電阻拉高進(jìn)入非工作狀態(tài)。數(shù)字0信號(hào)表示如下圖7所示圖7數(shù)字1信號(hào)表示如下圖8所示 圖83.4系統(tǒng)電路系統(tǒng)如下圖9,系統(tǒng)分成四個(gè)部分:復(fù)位、P0口輸出、晶振電路、EA口拉高。用2個(gè)22pF的電容C2和C3組成晶振電路,也可以用30pF的電容代替,以及1個(gè)10MHz的晶振。晶振電路中兩個(gè)電容為負(fù)載,其作用是讓電能轉(zhuǎn)換為其他形式的能。若沒這兩個(gè)負(fù)載電容,振蕩部分會(huì)沒有回路導(dǎo)致停振。電路不能正常工作了,所以在此電路中兩個(gè)電容起到起振作用,使晶振起振,電容取值范圍為10-30pF。晶振提供工作信號(hào)脈沖給單片機(jī),脈沖是單片機(jī)的工作速度,所以晶振的取值越高,單片機(jī)的工作速度越快。單片機(jī)復(fù)位電路用重啟,防止單片機(jī)系統(tǒng)在工作時(shí),受到外界干擾導(dǎo)致程序亂碼的時(shí)候,按下復(fù)位按鈕自動(dòng)重新執(zhí)行內(nèi)部程序。電路由一個(gè)10uF電容和一個(gè)10K電阻還有一個(gè)按鈕組成。系統(tǒng)供電時(shí),RES腳會(huì)高電平,會(huì)持續(xù)一段時(shí)間,這段時(shí)間是由你選擇電容和電阻的值大小。所以選擇合適電容和電阻的取值就可以確保可靠的復(fù)位。注意的是,EA接高電平,ROM從內(nèi)部開始執(zhí)行;接低電平時(shí),ROM直接從外部開始執(zhí)行。因?yàn)楸鞠到y(tǒng)程序是存儲(chǔ)在單片機(jī)內(nèi)部,所以EA要接高電平,保證單片機(jī)是從內(nèi)部讀取程序。圖9系統(tǒng)電路圖3.5DHT11傳感器電路DHT11的1腳與2腳DATA接高電平,2腳串聯(lián)單片機(jī)的P3.3(INT1)腳,R3是上拉電阻,當(dāng)單片機(jī)引腳輸出低電平時(shí),外部電路供電給引腳。DHT11的4腳接GND。如下面的圖10。圖10DHT11連接圖3.6液晶顯示電路本液晶電路的連接圖如下圖11所示,2腳和15腳接入了VCC,1腳VSS和3腳VO串聯(lián)接地,然而VO腳要加一個(gè)下拉電阻,可調(diào)節(jié)液晶的對(duì)比度。第4腳是寄存器控制,接到了P1.0口。5腳是讀寫控制,接單片機(jī)P1.1口。6腳是使能端,接到了P1.2口。7~14腳是雙向數(shù)據(jù)端,分別接P0.0~P0.7口。背光電源是16和15腳,A為背光正極,K為背光負(fù)極,直接連接VCC和GND。圖11液晶電路的連接圖4軟件設(shè)計(jì)4.1系統(tǒng)主程序設(shè)計(jì)本系統(tǒng)流程如下圖12所示,最開始先進(jìn)行液晶屏的初始化,包括液晶屏功能初始化和液晶屏顯示內(nèi)容初始化,接著開始溫濕度的檢測(cè),然后判斷與讀取到的溫濕度是否在報(bào)警范圍之內(nèi),如果超出范圍,則蜂鳴器鳴叫,并且對(duì)應(yīng)的指示燈亮。檢測(cè)溫濕度數(shù)據(jù)完,就判斷是否按鍵被按下,是的話,則進(jìn)入了報(bào)警范圍設(shè)置界面,否則進(jìn)行一段時(shí)間的延時(shí)后,就進(jìn)入下一個(gè)循環(huán)從新檢測(cè)溫濕度數(shù)據(jù)。圖12程序流程圖4.2溫濕度檢測(cè)子程序設(shè)計(jì)在溫濕度監(jiān)控系統(tǒng)中,濕度檢測(cè)采用DHT11溫濕傳感器,DHT11芯片是通過單總線的方式與單片機(jī)進(jìn)行通訊,在單片機(jī)獲取數(shù)據(jù)時(shí),需要先將DHT11喚醒,使其從待機(jī)狀態(tài)進(jìn)入工作狀態(tài),啟動(dòng)流程是總線拉低,然后再拉高,DHT11在得到此信號(hào)之后,將進(jìn)入濕度檢測(cè)狀態(tài)。然后單片機(jī)向濕度傳感器進(jìn)行通信,首先將其設(shè)置為輸入模式,使傳感器可以實(shí)現(xiàn)數(shù)據(jù)的讀取,然后單片機(jī)等待傳感器的響應(yīng)信號(hào),如果一段時(shí)間后沒有收響應(yīng)信號(hào),將重復(fù)向傳感器發(fā)出需要讀取濕度值的指令,直到其響應(yīng)為止。當(dāng)單片機(jī)得到響應(yīng)信號(hào)之后,說明傳感器已經(jīng)做好輸出濕度數(shù)據(jù)的準(zhǔn)備,開始向單片機(jī)發(fā)送攜帶濕度數(shù)據(jù)的40位二進(jìn)制數(shù)據(jù)。因此單片機(jī)此時(shí)檢測(cè)數(shù)據(jù)引腳的高低電平,獲取二進(jìn)制數(shù)據(jù),再將其進(jìn)行數(shù)量處理,換算出溫濕度值。溫濕檢測(cè)子程序程序設(shè)計(jì)流程如下圖13所示:圖13濕度檢測(cè)子程序流程圖4.3液晶顯示子程序設(shè)計(jì)本設(shè)計(jì)采用的顯示屏型號(hào)為L(zhǎng)CD1602顯示屏,其采用的是8位并口通信協(xié)議。首先是LCD1602的初始化,然后通過寫數(shù)據(jù)和寫命令設(shè)置顯示坐標(biāo),然后索引整個(gè)字庫,調(diào)用相應(yīng)字符的字碼,將字符顯示到顯示屏。當(dāng)?shù)谝粋€(gè)字符顯示完畢子后,將按同上所訴原理的顯示下一字符,直到全部字符顯示完成截止。液晶屏顯示程序流程如下圖14所示:圖14液晶顯示子程序流程圖4.4按鍵控制子程序在本設(shè)計(jì)中為了可以使溫濕度監(jiān)控系統(tǒng)具有設(shè)置溫度上限的功能,增加按鍵電路,在設(shè)計(jì)中使用按鍵功能較少,所以選用了獨(dú)立按鍵,其硬件電路結(jié)構(gòu)簡(jiǎn)單,在程序控制方面也比較簡(jiǎn)單。首先按鍵設(shè)置子程序放在定時(shí)器中斷中被實(shí)時(shí)掃描,當(dāng)按鍵中的某一個(gè)按鍵被按下時(shí),就會(huì)被檢測(cè)到。系統(tǒng)在“設(shè)置”按鍵沒有按下時(shí),系統(tǒng)為正常測(cè)溫狀態(tài)及模式0,“Setup”鍵按下時(shí),系統(tǒng)運(yùn)行模式1和溫度上限設(shè)置,然后再次按下一次,系統(tǒng)進(jìn)入溫度下限設(shè)置及模式2,再次按下“Setup”鍵恢復(fù)正常狀態(tài)。當(dāng)“+”鍵按下時(shí),連接“+”鍵的單片機(jī)IO口就會(huì)被拉低,這時(shí)單片機(jī)會(huì)判斷這時(shí)為什么模式,如果為模式1,則使溫度上限加一,若為模式2,則使溫度下限加一,若為模式0,則什么都不做,按鍵無效。同理,當(dāng)“減”鍵按下時(shí),系統(tǒng)會(huì)判斷這時(shí)為什么模式,如果為模式1,則使溫度上限減一,若為模式2,則使溫度下限減一,若為模式0,則什么都不做,按鍵無效。在按鍵設(shè)置結(jié)束之后,系統(tǒng)會(huì)將新設(shè)置完成的溫度上限值更新到系統(tǒng)中去,按鍵控制子程序流程如下圖15所示。圖15按鍵設(shè)置子程序流程圖5結(jié)束語大學(xué)生生活時(shí)光總是短暫,而帶有回憶的地方,在校園的學(xué)習(xí)生活,老師們的細(xì)心教導(dǎo),使我在這大學(xué)生活感覺很充實(shí),每天都可以學(xué)習(xí)到新的知識(shí)。雖然自己的論文跟其他的比起來還有不足之處,但是也獲得了經(jīng)驗(yàn),也成長(zhǎng)了許多,感謝這兩年內(nèi)幫助過我的老師們,同學(xué)們,友誼是我在著大學(xué)生活內(nèi)不可或缺的一部分,希望在將來的道路上,能越走越好。參考文獻(xiàn)[1]郭天祥.51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社,2009.[2]張艷麗,楊仁弟.數(shù)字溫濕度傳感器及其應(yīng)用[J].工礦自動(dòng)化,2007.6第3期[3]謝維成.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2009.附錄:控制程序sbitkey1=P2^0; //接口定義sbitkey2=P2^1;sbitkey3=P2^2;sbitbuzzer=P1^4;sbitrelayF=P1^0;sbitrelayJ=P1^1;unsignedcharReadTempFlag=0;//定義讀時(shí)間標(biāo)志inttemp1; //溫度讀取值floattemperature;//實(shí)際溫度unsignedlongtime_20ms=0; //定時(shí)計(jì)數(shù)unsignedchari;xdataunsignedchardis0[16];//數(shù)據(jù)暫存xdataunsignedchardis1[16];//數(shù)據(jù)暫存xdataunsignedchardis2[16];//數(shù)據(jù)暫存unsignedintsetR=5;//設(shè)置溫度unsignedintsetF1=5;//設(shè)置濕度unsignedintsetF2=5;bitstartFlag=0;//開始運(yùn)行unsignedinttimeLater=0;//初始化時(shí)間unsignedcharstep=0;//運(yùn)行步驟bitdisFlag=0;//顯示標(biāo)志unsignedcharSetFlag=0;//設(shè)置標(biāo)志voidInit_Timer0(void);//函數(shù)命令voidCheckKey(void);voiddealYunXing(void);voidmain(void){ Init_Timer0();//定時(shí)器0初始化 relayF=0; //繼電器和蜂鳴器上電動(dòng)作下方便檢測(cè)硬件 relayJ=0; buzzer=0; DelayMs(200);//延時(shí)有助于穩(wěn)定 relayF=1; relayJ=1; buzzer=1; LCD_Init();//初始化液晶 DelayMs(20);//延時(shí)有助于穩(wěn)定 LCD_Clear();//清屏 while(1)//主循環(huán) { CheckKey();//按鍵處理 dealYunXing(); //運(yùn)行過程 if(ReadTempFlag==1) //讀取溫度標(biāo)志 { ReadTempFlag=0; temp1=ReadTemperature(); //讀取溫度 temperature=(float)temp1*0.0625; //溫度值轉(zhuǎn)換 sprintf(dis0,"T:%4.1fC",temperature); LCD_Write_String(0,0,dis0);//顯示時(shí)間及溫度 } if(disFlag==1) { disFlag=0; sprintf(dis1,"J%02dA%02dB%02d",(int)setR,(int)setF1,(int)setF2); LCD_Write_String(0,1,dis1); //初始化顯示 if(SetFlag==0)//按鍵設(shè)置標(biāo)志 { LCD_Write_Char(0,1,'');LCD_Write_Char(4,1,'');LCD_Write_Char(8,1,'');//更新顯示標(biāo)志 } elseif(SetFlag==1)//按鍵設(shè)置標(biāo)志 { LCD_Write_Char(0,1,'S');LCD_Write_Char(4,1,'');LCD_Write_Char(8,1,'');//更新顯示標(biāo)志 } elseif(SetFlag==2)//按鍵設(shè)置標(biāo)志 { LCD_Write_Char(0,1,'');LCD_Write_Char(4,1,'S');LCD_Write_Char(8,1,'');//更新顯示標(biāo)志 } elseif(SetFlag==3)//按鍵設(shè)置標(biāo)志 { LCD_Write_Char(0,1,'');LCD_Write_Char(4,1,'');LCD_Write_Char(8,1,'S');//更新顯示標(biāo)志 } if(step==0) //查看運(yùn)行步驟 { sprintf(dis2,"STP-%2.1f",(float)timeLater/10); //顯示 } elseif(step==1) //查看運(yùn)行步驟 { sprintf(dis2,"JR-%2.1f",(float)timeLater/10); //顯示 } elseif(step==2) //查看運(yùn)行步驟 { sprintf(dis2,"FS1-%2.1f",(float)timeLater/10); //顯示 } elseif(step==3) //查看運(yùn)行步驟 { sprintf(dis2,"JR-%2.1f",(float)timeLater/10); //顯示 } elseif(step==4) //查看運(yùn)行步驟 { sprintf(dis2,"FS2-%2.1f",(float)timeLater/10); //顯示 } elseif(step==5) //查看運(yùn)行步驟 { sprintf(dis2,"JR-%2.1f",(float)timeLater/10); //顯示 } LCD_Write_String(9,0,dis2);//顯示 } }}voidCheckKey(void){ staticunsignedcharrekey=0; if((key1==0)||(key2==0)||(key3==0)) //檢測(cè)到按鍵按下 { DelayMs(10);//小抖動(dòng) if(rekey==0) { if(key1==0)//檢測(cè)是否按下 { rekey=1; SetFlag++;//設(shè)置標(biāo)志 if(SetFlag>=4)SetFlag=0; } elseif(key2==0)//設(shè)置值鍵 { rekey=1; if(SetFlag==1)//處于設(shè)置1 { if(setF1>0) {setR=setR-1;} } elseif(SetFlag==2)//處于設(shè)置2 { if(setF1>0) {setF1=setF1-1;} } elseif(SetFlag==3)//處于設(shè)置3 { if(setF2>0) {setF2=setF2-1;} } } elseif(key3==0)//設(shè)置值鍵 { rekey=1; if(SetFlag==1)//處于設(shè)置1 { if(setR<10) {setR=setR+1;} } elseif(SetFlag==2)//處于設(shè)置2 { if(setF1<10) {setF1=setF1+1;} } elseif(SetFlag==3)//處于設(shè)置3 { if(setF2<10) {setF2=setF2+1;} } else { startFlag=1;//開始運(yùn)行 timeLater=setR*10;//初始化時(shí)間 step=1;//運(yùn)行步驟 relayF=1; relayJ=0; } } } } else

溫馨提示

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