基于單片機(jī)溫濕度控制(Protel圖visio圖)-精品_第1頁
基于單片機(jī)溫濕度控制(Protel圖visio圖)-精品_第2頁
基于單片機(jī)溫濕度控制(Protel圖visio圖)-精品_第3頁
基于單片機(jī)溫濕度控制(Protel圖visio圖)-精品_第4頁
基于單片機(jī)溫濕度控制(Protel圖visio圖)-精品_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)控制設(shè)計(jì)課程設(shè)計(jì)報(bào)告班級B電氣092姓名劉 佳 園學(xué)號0910601204課程設(shè)計(jì)題目:倉庫溫濕度控制系統(tǒng)設(shè)計(jì)本課程設(shè)計(jì)要求設(shè)計(jì)倉庫溫濕度控制系統(tǒng)設(shè)計(jì)倉庫的溫濕度是保存貨物的重要參數(shù),如果不能對其進(jìn)行良好的控制,直接導(dǎo)致貨物損壞或者變質(zhì),造成重大損失!本設(shè)計(jì)通過使用STC89C52單片機(jī)、DHT11傳感器模塊、1602液晶顯示屏模塊以及報(bào)警模塊。簡單明了的實(shí)現(xiàn)的可提要求。DHT11數(shù)字溫濕度傳感器把采集到的溫濕度數(shù)據(jù)傳給單片機(jī)。經(jīng)過單片機(jī)的處理。準(zhǔn)確的顯示到液晶屏上。并對溫濕度設(shè)置上下限。越限報(bào)警。技術(shù)參數(shù)和設(shè)計(jì)任務(wù):1、利用單片機(jī)89C52實(shí)現(xiàn)對溫濕度的控制,以實(shí)現(xiàn)對倉庫進(jìn)行溫濕度控制

2、;2、為準(zhǔn)確檢測控制倉庫的溫濕度,采用DHT11傳感器采集的溫濕度;3、達(dá)到方便人工監(jiān)控和觀察記錄,采用LCD液晶屏設(shè)計(jì);4、使電路更穩(wěn)定運(yùn)行,采用保護(hù)電路;5、為了及時(shí)控制溫濕度,采用報(bào)警設(shè)計(jì);6、避免一些瞬間干擾量,軟件設(shè)計(jì)中采用延時(shí)設(shè)計(jì)。一、本課程設(shè)計(jì)系統(tǒng)概述溫度、濕度和人類的生產(chǎn)、生活有著密切的關(guān)系,同時(shí)也是工業(yè)生產(chǎn)中最常見最基本的工藝參數(shù),例如機(jī)械、電子、石油、化工等各類工業(yè)中廣泛需要對溫度濕度的檢測與控制。并且隨著人們生活水平的提高,人們對自己的生存環(huán)境越來越關(guān)注。而空氣中溫濕度的變化與人體的舒適度和情緒都有直接的影響,所以對溫度濕度的檢測及控制就非常有必要了。隨著科技的飛速發(fā)展和

3、普及,高性能設(shè)備越來越多,各行各業(yè)對溫濕度的要求也越來越高。傳統(tǒng)的溫濕度檢測模式是以人為基礎(chǔ),依靠人工輪流值班,人工巡回查看等方式來測量和記錄環(huán)境狀況信息。在這種模式下,不僅效率低不利于人才資源的充分利用,而且缺乏科學(xué)性,許多重大事故都是由人為因素造成的,人工維護(hù)缺乏完整的管理系統(tǒng)。而問世監(jiān)控系統(tǒng)就可以解決這樣人才資源浪費(fèi),管理不及時(shí)的問題,這是由于它的智能化設(shè)計(jì)所決定的。故本次設(shè)計(jì)對于類似項(xiàng)目還具有普遍意義。1、系統(tǒng)原理本設(shè)計(jì)最關(guān)鍵部分是關(guān)于溫度和濕度的采集以及檢測、顯示。STC單片機(jī)執(zhí)行指令的速度很快,對工作環(huán)境的要求比較低;傳感器模塊我選擇了DHT11數(shù)字溫濕度傳感器。告別了以前的單獨(dú)測

4、量溫度以及濕度的方式,更簡潔,更方便。連接好外圍電路。通過DHT11準(zhǔn)確的檢測出當(dāng)前環(huán)境下的溫濕度,并且將所測數(shù)據(jù)交給STC單片機(jī)進(jìn)行分析和處理。再將所得數(shù)據(jù)有單片機(jī)發(fā)送給HJ1602A液晶屏。成功完成顯示??刂颇K采用蜂鳴器報(bào)警方式。預(yù)先設(shè)置好所需溫度和濕度的限值,將蜂鳴器接入電路。通過溫度和濕度的上下限值控制蜂鳴器的報(bào)警。若逾越限值,實(shí)現(xiàn)蜂鳴器鳴響。但是需要注意的是溫度超標(biāo)和濕度超標(biāo)需設(shè)置兩種不同的鳴響方式,用來加以區(qū)別。提醒工作人員此時(shí)溫度濕度數(shù)據(jù)出現(xiàn)異常、需及時(shí)調(diào)整,及時(shí)啟用升溫器、加濕器、降溫風(fēng)扇以及噴霧器來有效的調(diào)整實(shí)驗(yàn)室內(nèi)溫濕度。從而簡單實(shí)現(xiàn)了控制??傮w來說,本次設(shè)計(jì)主要涉及了溫

5、濕度的測量以及實(shí)現(xiàn)簡單控制。硬件方面有四個(gè)模塊,即傳感器模塊、STC89C52單片機(jī)主控模塊、LCD1602液晶顯示模塊以及報(bào)警模塊,從硬件制作方面。也相對簡便。原理清晰、連線方便,不需要額外的焊接等技術(shù)。給硬件的制作帶來了極大的便捷。電路總體上分為溫濕度采集部分、中央處理器、顯示模塊以及報(bào)警模塊部分。以STC89C52單片機(jī)最小系統(tǒng)作為核心控制電路,控制DHT11傳感器采集的溫濕度的轉(zhuǎn)換,控制1602液晶屏的顯示,以及蜂鳴器的報(bào)警。具體顯示內(nèi)容及方式由軟件來完成。采集溫濕度方面由DHT11傳感器來完成,它是一個(gè)數(shù)字溫濕度傳感器、內(nèi)置模數(shù)轉(zhuǎn)換,可以直接與單片機(jī)相連接。而1602液晶屏是插針式,

6、也可以直接與單片機(jī)相連接。因此不需要手動(dòng)焊接等復(fù)雜的過程。具體步驟是:按照原理圖將傳感器、1602液晶顯示屏分別接入單片機(jī)。通過DHT11傳感器采集當(dāng)前的溫濕度值、再經(jīng)單片機(jī),將處理后的數(shù)據(jù)傳送到液晶屏上顯示出來。并且接入蜂鳴器。設(shè)置溫度的上下限值。實(shí)現(xiàn)越限報(bào)警。電路總體上分為溫濕度采集部分、中央處理器、顯示模塊以及報(bào)警模塊部分。以STC89C52單片機(jī)最小系統(tǒng)作為核心控制電路,控制DHT11傳感器采集的溫濕度的轉(zhuǎn)換,控制1602液晶屏的顯示,以及蜂鳴器的報(bào)警。具體顯示內(nèi)容及方式由軟件來完成。采集溫濕度方面由DHT11傳感器來完成,它是一個(gè)數(shù)字溫濕度傳感器、內(nèi)置模數(shù)轉(zhuǎn)換,可以直接與單片機(jī)相連接

7、。而1602液晶屏是插針式,也可以直接與單片機(jī)相連接。因此不需要手動(dòng)焊接等復(fù)雜的過程。具體步驟是:按照原理圖將傳感器、1602液晶顯示屏分別接入單片機(jī)。通過DHT11傳感器采集當(dāng)前的溫濕度值、再經(jīng)單片機(jī),將處理后的數(shù)據(jù)傳送到液晶屏上顯示出來。并且接入蜂鳴器。設(shè)置溫度的上下限值。實(shí)現(xiàn)越限報(bào)警。2、控制方案a.傳感器選擇DHT11數(shù)字溫濕度一體傳感器。DHT11是一款集成型的數(shù)字溫濕度一體傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)

8、、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。測量范圍20%90%RH,050。測溫精度為-+2,測濕精度為-+5%RH。完全符合本次畢業(yè)設(shè)計(jì)的要求。 b.顯示器選擇采用HJ1602液晶顯示屏。HJ1602A 是一種工業(yè)字符型液晶,能夠同時(shí)顯示16x02 即32個(gè)字符。(16列2行)。1602只能顯示字母、數(shù)字和符號能顯示16*2個(gè)字符,但寄存器不止32個(gè),有一些顯示效果,如字符一個(gè)個(gè)顯示、字符從左到右或從右到左顯示等等,顯示效果簡單。 c.單片機(jī)主芯片選擇STC89C52系列單片機(jī)。3、總體設(shè)計(jì)框圖按照系統(tǒng)功能的具體要求,在保證實(shí)現(xiàn)其功能的然礎(chǔ)上,盡可能降低系統(tǒng)成本??傮w設(shè)計(jì)方案圍繞上述思想,初步確定系

9、統(tǒng)的方案如圖1所示。圖1 總設(shè)計(jì)框圖從圖中可以看出,系統(tǒng)有微處理器模塊、1602字符液晶顯示模塊、DHT11傳感器模塊和報(bào)警模塊組成。在方案設(shè)計(jì)中,遵循簡潔至上的原則,因此所有的外圍模塊采用串行方式與微處理器模塊接口。該設(shè)計(jì)以STC89C51系列單片機(jī)為控制核心,實(shí)現(xiàn)溫濕度采集及顯示的基本功能。在設(shè)計(jì)系統(tǒng)時(shí),為了更好地采用模塊化設(shè)計(jì)法,分步的設(shè)計(jì)各個(gè)單元功能模塊,系統(tǒng)的硬件部分可以分為傳感器的使用、單片機(jī)控制、1602液晶顯示和實(shí)現(xiàn)報(bào)警四大部分。硬件設(shè)計(jì)此次的設(shè)計(jì)主要由4個(gè)大的模塊構(gòu)成,分別是主控模塊、傳感器模塊、LCD液晶顯示模塊及報(bào)警模塊,其中主控模塊是此次畢業(yè)設(shè)計(jì)的核心模塊,主要是指ST

10、C89C52芯片,它控制整個(gè)系統(tǒng)的運(yùn)行,利用其各個(gè)口分別控制其他模塊,使其他模塊能夠成為一個(gè)整體,實(shí)現(xiàn)功能的需要;報(bào)警模塊主要指將蜂鳴器接入單片機(jī)電路。通過對時(shí)時(shí)溫度的檢測,并給定所需要的溫度區(qū)間,即給定上下限值,實(shí)現(xiàn)越限報(bào)警;傳感器模塊用于實(shí)驗(yàn)室實(shí)時(shí)溫濕度的檢測、由于DHT11的數(shù)字一體性,集成了模數(shù)轉(zhuǎn)換等模塊。直接接單片機(jī)即可。LCD液晶顯示模塊同樣接入單片機(jī),完成對單片機(jī)處理后的數(shù)據(jù)進(jìn)行顯示。主控模塊設(shè)計(jì)STC89C52芯片的簡介STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存

11、儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案,如圖3-1所示。STC89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片

12、機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。 管腳介紹:圖2 STC89C52VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉

13、的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/

14、O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為STC89C52的一些特殊功能口,如下表所示:管腳備選功能:表3-1P3口的第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)

15、位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存

16、儲器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘

17、源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號要通過一個(gè)二分頻觸發(fā)器,因此對外部時(shí)鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。主控模塊電路原理圖單片機(jī)主程序模塊通過對DHT11傳感器采集到信號的讀取,將得到的數(shù)據(jù)信號進(jìn)行分析和處理,再將處理后的信號發(fā)送給1602液晶顯示模塊。完成信息的接收與發(fā)送。并且連接蜂鳴器??刂茍?bào)警系統(tǒng)。如圖3圖3STC89C52模塊電路原理圖DHT11傳感器模塊設(shè)計(jì)DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感

18、濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為 4 針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。引腳介紹:Pin1:(VDD),電源引腳,供電電壓為35.5V。Pin2:(DATA),串行數(shù)據(jù),單總線。Pin

19、3:(NC),空腳,請懸浮。Pin4(VDD),接地端,電源負(fù)極。圖4 DHT11電路原理圖1602液晶顯示模塊設(shè)計(jì)HJ1602A 是一種工業(yè)字符型液晶,能夠同時(shí)顯示16x02 即32個(gè)字符。(16列2行)。在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計(jì)算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機(jī)的人機(jī)交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單。在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個(gè)優(yōu)點(diǎn):由于液晶顯示器每一個(gè)點(diǎn)在收到

20、信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會閃爍。 液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡單可靠,操作更加方便。 液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。 相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比其它顯示器要少得多。 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。引腳說明:第1腳:VSS為地電源。 第2腳:VDD接5V正電源。

21、 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號,當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第714腳:D0D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。

22、1602LCD的RAM地址映射以及標(biāo)準(zhǔn)字庫表LCD1602液晶模塊內(nèi)部的字符發(fā)生存儲器已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,這些字符圖有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母。它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的(說明:1為高電平,0為低電平)。指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H 。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,

23、低電平左移 。S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效 。指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)。 B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍 。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo) 。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線。 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示。 F:低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符 (有些模塊是 DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線)。指

24、令7:字符發(fā)生器RAM地址設(shè)置 。指令8:DDRAM地址設(shè)置 。指令9:讀出忙信號和光標(biāo)地址。 BF為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙,模塊就能接收相應(yīng)的命令或者數(shù)據(jù)。指令10:寫數(shù)據(jù) 。指令11:讀數(shù)據(jù) 。液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。圖51602顯示模塊報(bào)警模塊蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器。采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作

25、發(fā)聲器件。 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”。圖6蜂鳴器工作原理圖三、軟件設(shè)計(jì)在對我們所要設(shè)計(jì)的課題有了整體的了解之后,需要先建立程序框架的流程圖,對整個(gè)設(shè)計(jì)劃分模塊,逐個(gè)模塊實(shí)現(xiàn)其功能,最終把各個(gè)子模塊合理的連接起來,構(gòu)成總的程序。主程序首先要對整個(gè)系統(tǒng)進(jìn)行初始化,然后將采集到的溫濕度指令傳給系統(tǒng)的主流程圖如圖7所示:圖 7主程序流程圖1、1602液晶顯示模塊設(shè)計(jì)液晶顯示模塊是一個(gè)慢顯示器件,在執(zhí)行每條指令之前要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,則此指令失效,要顯示字符時(shí)要先輸入顯示字符地址,告訴模塊在哪里現(xiàn)實(shí)了字符。1602液晶顯示模

26、塊可與STC89C52直接接口的。軟件流程圖如圖8所示:圖81602液晶顯示模塊程序流程圖2、傳感器模塊設(shè)計(jì)設(shè)計(jì)溫濕度模塊DH11數(shù)字溫濕傳感器加濕器溫濕度傳感器隨著科技的不斷發(fā)展,汽車、空調(diào)、除濕器、烘干機(jī)等種類繁多的電器都已進(jìn)入人們的日常生活,而這些電器設(shè)備很多都離不開對溫度、濕度等環(huán)境因素的要求。因此,溫度、濕度傳感器用途越來越廣泛。新一代的數(shù)字傳感器不再需要外置的A D轉(zhuǎn)換模塊,并具有標(biāo)準(zhǔn)接口,使用方便,得到了越來越多的應(yīng)用。DHT11作為一種新型的單總線溫濕度數(shù)字傳感器,具有更多的優(yōu)點(diǎn),它使系統(tǒng)設(shè)計(jì)更加簡單,控制方便,易于實(shí)現(xiàn)。1 單總線通信簡介 目前常用的微機(jī)與外設(shè)之間進(jìn)行數(shù)據(jù)傳輸

27、的串行總線主要有I2C總線、SPI總線和SCI總線。其中I2C總線以同步串行兩線方式進(jìn)行通信(1條時(shí)鐘線,1條數(shù)據(jù)線),SPI總線則以同步串行三線方式進(jìn)行通信(1條時(shí)鐘線,1條數(shù)據(jù)輸入線,1條數(shù)據(jù)輸出線),而SCI總線是以異步方式進(jìn)行通信的(1條數(shù)據(jù)輸入線,1條數(shù)據(jù)輸出線)。這些總線至少需要兩條或兩條以上的信號線。DHT11傳感器模塊的軟件流程圖如下圖所示:圖 9DHT11傳感器模塊程序流程圖四、小結(jié)本系統(tǒng)以單片機(jī)為核心部件的控制系統(tǒng),利用軟件編程,最終基本上實(shí)現(xiàn)了各項(xiàng)要求。雖然系統(tǒng)還存在一些不足,比如溫濕度測量不夠精確,特別是濕度,波動(dòng)較大。嘗試了各種改進(jìn)方法。仍然不太理想。不過大體能反映出

28、設(shè)計(jì)的目的和要求。與預(yù)期的結(jié)果相差不多。足夠能夠應(yīng)用與倉庫的溫濕度檢測和控制,可以很好的幫助倉庫保存貨物。經(jīng)過近兩個(gè)禮拜的奮斗,從確定題目,到后來查找資料,理論學(xué)習(xí),實(shí)驗(yàn)編程調(diào)試,這一切都使我的理論知識和動(dòng)手能力有了很大的提高。了解了單片機(jī)的硬件結(jié)構(gòu)和軟件編程方法,對單片機(jī)的工作方式有了很大的認(rèn)知。同時(shí),對一些外圍設(shè)備比如傳感器、液晶屏、鍵盤、蜂鳴器等有了一定的了解!學(xué)會了對一項(xiàng)工程如何設(shè)計(jì):首先,要分析需要設(shè)計(jì)的系統(tǒng)要實(shí)現(xiàn)什么功能,需要什么器件;然后,針對設(shè)計(jì)購買相應(yīng)的硬件,選用硬件時(shí)不僅要選用經(jīng)濟(jì)的,更重要的是如何能更精確更方便的完成系統(tǒng)的要求;再次,對各個(gè)硬件的軟件實(shí)現(xiàn)要弄清楚,如何更好

29、的實(shí)現(xiàn)各個(gè)硬件的協(xié)調(diào),更好的通過主控制器件實(shí)現(xiàn)硬件的功能。最后,通過各種測試與調(diào)試,讓設(shè)計(jì)更好的完成系統(tǒng)要求。 但因?yàn)槲覀兊乃接邢?,此設(shè)計(jì)中也存在一定的不足。就比如說對濕度的控制方面,由于溫度時(shí)刻都在發(fā)生著變化。而濕度的變化又大體上取決于溫度。因而對于濕度的控制有點(diǎn)困難。同時(shí)由于濕度變化波動(dòng)比較大。造成報(bào)警頻繁,為濕度限值的設(shè)定也帶來了不小的麻煩。溫濕度控制已經(jīng)成為了21世紀(jì)熱門研究話題之一。無論是從生產(chǎn)還是生活,與我們?nèi)祟惗际窍⑾⑾嚓P(guān)的。而智能化的控制溫濕度已經(jīng)發(fā)展成為一種必然。隨著世界經(jīng)濟(jì)的發(fā)展,人們生活水平的提高以及社會的進(jìn)步。我們不可能一直墨守陳規(guī),不能在恪守以前利用人力資源來控制溫

30、濕度的方法。不僅浪費(fèi)大量的人力資源、財(cái)力資源,并且控制系統(tǒng)也更加單一化。而采用自動(dòng)控制的辦法、既節(jié)省了人力資源,更體現(xiàn)了與時(shí)俱進(jìn)的思想、世界在進(jìn)步、而這種進(jìn)步就該體現(xiàn)在各個(gè)方面。五、參考文獻(xiàn)1于海生.計(jì)算機(jī)控制技術(shù)M.北京:機(jī)械工業(yè)出版社,2007.2韓志軍.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)入門向?qū)c設(shè)計(jì)實(shí)例M.北京:機(jī)械工業(yè)出版社,2005.3雎丙東.單片機(jī)應(yīng)用技術(shù)與實(shí)例M.北京:電子工業(yè)出版社,2005.4靳達(dá).單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航M.北京:人民郵電出版社,2003.5戴佳.51單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例M.北京:中國電力出版社,2005.6孫傳友.測控系統(tǒng)原理與設(shè)計(jì)M.北京:北京航空航天大學(xué)出版

31、社,2002.7沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析M.北京:北京航空航天大學(xué)出版社,2003.8 陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材M. 北京:清華大學(xué)出版社,20039 吳金戌,沈慶陽,郭庭吉.8051單片機(jī)實(shí)踐與應(yīng)用M. 北京:清華大學(xué)出版社,2002.10 張毅剛.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M. 哈爾濱工業(yè)大學(xué)出版社,2004.附錄1 運(yùn)行程序#include #include #include typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 無符號8位整型變量 */typedef

32、unsigned int U16; /* defined for unsigned 16-bits integer variable 無符號16位整型變量 */#define lcd_H#include #define HIGH 1#define LOW 0#define TRUE 1#define FALSE 0#define ZERO 0#define MSB 0 x80#define LSB 0 x01/*液晶屏部分 * #define LINE1 0#define LINE2 1#define LINE1_HEAD 0 x80#define LINE2_HEAD 0 xC0#defin

33、e DATA_MODE 0 x38#define OPEN_SCREEN 0 x0C#define DISPLAY_ADDRESS 0 x80#define CLEARSCREEN LCD_en_com(0 x01)#define LCDIO P1sbit LCD1602_RS = P24; /定義端口 sbit LCD1602_RW = P23;sbit LCD1602_EN = P22;/-/-IO口定義區(qū)-/-/sbit P2_0 = P20 ;sbit SPK=P07;int t1,t2,ss;/-/-定義區(qū)-/-/U8 U8FLAG;U8 U8count,U8temp;U8 U8T_

34、data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;unsigned char str1=s,h,i,d,u,:;unsigned char str2=w,e,n,d,u,:;LCD_init(); void Delay(U16 j) U8 i; for(;j0;j-) for(i=0;i27;i+); void Delay_10us(void

35、) U8 i; i-; i-; i-; i-; i-; i-; void COM(void) U8 i; for(i=0;i8;i+) U8FLAG=2; while(!P2_0)&U8FLAG+);Delay_10us(); Delay_10us();Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&U8FLAG+); /超時(shí)則跳出for循環(huán) if(U8FLAG=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預(yù)定0高電平值則數(shù)據(jù)位為 1 U8comdata554|ss500) for(i=0;i200

36、;i+)/喇叭發(fā)聲的時(shí)間循環(huán),改變大小可以改變發(fā)聲時(shí)間長短 Delay(160); /參數(shù)決定發(fā)聲的頻率,估算值,可以自行更改參數(shù)并 SPK=!SPK; SPK=1; Delay(60000); /喇叭停止工作,間歇的時(shí)間,可更改 /-/main()功能描述: AT89C51 11.0592MHz 串口發(fā) /送溫濕度數(shù)據(jù),波特率 9600 /-void main()LCD_init(); Delay(4); while(1) /調(diào)用溫濕度讀取子程序 RH(); xianshi(); laba(); 附錄2 硬件原理圖附錄資料:不需要的可以自行刪除測量平差程序設(shè)計(jì)角度(度分秒)到弧度AngleT

37、oRadian#define PI 3.14159265double AngleToRadian(double angle)int D,M;double S,radian,degree, angle,MS;D=int(angle+0.3);MS=angle-D;M=int(MS)*100+0.3);S=(MS*100-M)*100;degree=D+M/60.0+S/3600.0;radian=degree*PI/180.0;return radian;注意:防止數(shù)據(jù)溢出,要加個(gè)微小量,例如0.3.弧度換角度(度分秒) RadianToAngle#define PI 3.14159265dou

38、ble RadianToAngle(double radian)int D,M;double S,radian,degree,MS,angle;degree=radian*180/PI;D=int(degree);MS=degree-D;M=int(MS*60);S=(MS*60-M)*60;angle=D+M/100.0+S/10000.0;return angle;已知兩點(diǎn)求坐標(biāo)方位角Azimuth#include double Azimuth(double xi,double yi,double xj,double yj)double Dx,Dy,S,T;Dx=xj-xi;Dy=yj-y

39、i;S=sqrt(Dx*Dx+Dy*Dy);if(S1e-10) return 0;T=asin(Dy/S);if(Dx0&(Dy0)|T0) T=2*PI+T;return T;4.開辟二維數(shù)組的動(dòng)態(tài)空間的宏#include #define NewArray2D(type,A,i,n,m)A=(type*)malloc(n*sizeof(type*); for(i=0;im;i+) Ai=(type*)malloc(m*sizeof(type); 5.釋放開辟的二維數(shù)組的空間#define FreeSpace(A,i,m)for(i=0;im;i+) free(Ai); free(A); 注

40、意:釋放空間與開辟空間相反,釋放空間是先釋放列,后釋放行.6.矩陣求轉(zhuǎn)置transformmatrixvoid transformmatrix(double *A,double *B,int i,int j)int m,n;for(m=0;m=i;m+)for(n=0;n=j;n+)Bnm=Amn:7.矩陣相乘(mulmatrix)void mulmatrix(double *A,double *B,double *C,int i,int j,int k)int m,n,p;for(m=0;mi;m+)for(n=0;nj;n+)Cmn=0;for(p=0;pk;p+)Cmn+=Amp*Bpn

41、:8.矩陣求逆(countermatrix)#include void countermatrix(double *T, double *s, double *r, double *Q,double *N, double *rt,int n)for(i=0;in;i+)s=Nii;for(k=0;ki;k+)s-=Tki*Tki;Tii=sqrt(s)for(j=i+1;jn;j+)s=Nij;for(k=0;ki;k+)s-=Tki*Tkj;Tij=s/Tii;for(i=0;in;i+)for(j=0;j=0;i+)rii=1/Tii;for(j=i+1;jn;j+)s=0;for(k=i

42、;kj-1;k+)s-=rik*Tkj;rij=s/Tii;for(i=0;in;i+)for(j=0;jn;j+)rij=0;transformmatrix(r,rt,n,n)mulmatrix(r,rt,Q,n,n)9.平差主程序之讀入數(shù)據(jù)typedef struct POINTchar name8;double x,y;int type;POINT;typedef struct READVALUEPOINT *begin;POINT *end;double value;READVALUE;POINT *GETPOINT(char *name,POINT *pPoint,int nPoin

43、t)int i;for(i=0;inPoint;i+)if (strcmp(pP,name)=0)return (pPoint+i) for(i=0;i0)pPoint=(POINT*)malloc(nDirect*sizeof(POINT);if(nDirect0)pDirect=(READVALUE*)malloc(nDirect*sizeof(READVALUE);if(nDistance0)pDistance=(READVALUE*)malloc(nDistance*sizeof(RAADVALUE);fscanf(fp,”%lf,%lf,%lfn”,&mo,&mf

44、,&ms);for(i=0;inKnownPoint;i+)fscanf(fp,”%s,%lf,%lfn”,pP,&pPointi.x,&pPointi.y);type=1;for( ;inPoint;i+)pP=NULL; pPointi.x=0;pPointi.y=0;pPointi.type=0; for(i=0;inDirect;i+)fscanf(fp,”%s,%s,%lfn”,begin,end,&pDirecti.value);pDirecti.begin=GetPoint(begin,pPoint,nPoint);pDirecti.end

45、=GetPoint(end,pPoint,nPoint);for(i=0;inDistance;i+)fscanf(fp,”%s,%s,%lfn”,begin,end,&pDistancei.value);pDistancei.begin=GetPoint(begin,pPoint,nPoint);pDistancei.end=GetPoint(end,pPoint,nPoint);fclose(fp);10.角度檢驗(yàn)(checkangle)#include int checkangle(double angle)int M,S;double MS;if(angle=0&angle360)MS

46、=angle-(int)(angle);if(M6)S=(int)(MS*1000);if(S%106)return 1;return 0;11.前方交會#define PI=3014159265/*此處調(diào)用程序角度換弧度AngleToRadian*/Qianfang(double XE, double YE, double XF, double YF, doubleDEG, double DEF, double DFG, double DFE, double *DFE, double *DFG)double C,A,B;C=DGE-DGF;A=DEF-DEG;B=DFG-DFE;if(C-2

47、*PI)|(C0&C-PI&CPI&C2*PI)XG=(XE/tan(B)+XF/tan(A)+YE-YF)/(1/tan(A)+ 1/tan(B);YG=(YE/tan(B)+YF/tan(A)-XE+XF)/ (1/tan(A)+ 1/tan(B);12.坐標(biāo)概算全方向法子函數(shù)取出觀測方向GetAllDirectint GetAllDirect(char *name,int nDirect,READVALUE *pDirect, READVALUE *pStation)int i,nCount=0;for(i=0;iname,name)=0)pStationnCount.begin=p(p

48、DirectnCount.begin;pStationnCount.end=p(pDirectnCount.end;pStationnCount.value=p(pDirectnCount.value; nCount+;return nCount;坐標(biāo)概算全方向法子程序?qū)崿F(xiàn)流程(coordinate)coordinate (入口參數(shù)設(shè)置)READVALUE pStation50,pObject50;int nCount,i,j,k,m,n,p,nobject;for(i=0;i1)|( nCount=1)for(j=0;jtype=1)for(k=0;ktype=0) nobject=GetA

49、llDirect(pStationj.end-name,nDirect,pDirect,pobject)m=-1;n=-1;for(p=0;pname,pP)=0)m=p; if(strcmp(pobjectp.end-name,pStationk.end-name)=0)n=p;if(m=0&n=0)pPointi=pStationk.end-pStationj.end;pStationj.end=pObjectm.value-pObjectn.value; Xe=pPointi.x; Ye=pPointi.y; Xf=pStationj.end-x; Yf=pStati

50、onj.end-y; Lef=pStationj.value; Leg=pStationk.value; Lfe=pObjectm.value; Lfg=pObjectn.value; Qianfang(Xe,Xf,Ye,Yf,Lef,Leg,Lfe,Lfg,*Xg,*Yg;) pStationk.end-x=*xg; pStationk.end-y=*yg; pStationk.end.type=2; 13.坐標(biāo)增量法(calcoordinate)子函數(shù)由端點(diǎn)名稱得邊長值的函數(shù)GetDistancedouble GetDistance(char *begin,char *end,int nD

51、istance,READVALUE *pDistance)int i;for(i=0;iname,begin)=0&strcmp(pDistancei.end-name,end=0)|(strcmp(pDistancei.begin-name,end)=0&strcmp(pDistancei.end,begin)=0)return pDistancei.value;return -1;/*函數(shù)取出觀測方向GetAllDirect*/void calcoordinate(int nDirect,READVALUE *pDirect,int nDistace,READVALUE *pDistanc

52、e,int nPoint,POINT *pPoint) int nPoint,nCount,nDirect,nDistance; int m=-1,i,j,k; double x1,y1,x2,y2,A0,A,S,dx,dy; READVALUE*pDirect=NULL; READVALUE pStation50; for(i=0;i0) nCount=GetAllDirect(pP,nDirect,pDirect,pStation50); for(j=0;jtype0)m=j; if(m!=-1) for(k=0;ktype=0) x1=pPointi.x; y1=pPointi.y; x2=pStationj.end-x; y2=pStationj.end-y; A0=Bearing(x1,y1,x2,y2); A=A0-(DMSToRAD(pStationm.value)-DMSToRAD(pStationk.value); if(A2*PI)A=A-2*PI; S=GetDistance(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論