【系統(tǒng)】糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計_第1頁
【系統(tǒng)】糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計_第2頁
【系統(tǒng)】糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計_第3頁
【系統(tǒng)】糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計_第4頁
【系統(tǒng)】糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.文檔收集于互聯(lián)網(wǎng),如有不妥請聯(lián)系刪除.PAGEI文檔收集于互聯(lián)網(wǎng),如有不妥請聯(lián)系刪除.文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.歡迎下載支持.文檔收集于互聯(lián)網(wǎng),如有不妥請聯(lián)系刪除.【關(guān)鍵字】系統(tǒng)西安工業(yè)大學(xué)北方信息工程學(xué)院本科畢業(yè)設(shè)計(論文)題目:糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計系別:光電信息系專業(yè):測控技術(shù)與儀器班級:B070102學(xué)生:霍龍學(xué)號:B07010207指導(dǎo)教師:王可寧2011年05月畢業(yè)設(shè)計(論文)任務(wù)書系別光電信息系專業(yè)測控技術(shù)與儀器班級B070102姓名霍龍學(xué)號B070102071.畢業(yè)設(shè)計(論文)題目:糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計2.題目背景和意義:糧食溫度和濕度含量是直接影響糧食加工、儲藏、貿(mào)易與食用的重要質(zhì)量指標(biāo)。因此,對倉庫中糧食的濕度含量和溫度進(jìn)行實時檢測具有重要的意義。單片機(jī)自誕生以來給全世界人類的生活和工作起到了劇烈的作用,利用單片機(jī)進(jìn)行溫濕度檢測、處理和顯示具有實時性好、成本低、穩(wěn)定性高等優(yōu)點。通過該系統(tǒng)的設(shè)計,可使學(xué)生對單片機(jī)的原理和功能有個較系統(tǒng)和全面的掌握,也可以使學(xué)生初步學(xué)習(xí)到有關(guān)工程設(shè)計的方法和思路。這樣他們的就業(yè)面會更加寬廣,也可以滿足當(dāng)今社會對單片機(jī)開發(fā)人才的大量需求。3.設(shè)計(論文)的主要內(nèi)容(理工科含技術(shù)指標(biāo)):本系統(tǒng)所需的元器件有MCS-51單片機(jī)、溫度傳感器、濕度傳感器等器件、數(shù)碼管、鍵盤等,要求學(xué)生利用匯編語言或C51語言在Keil軟件編輯環(huán)境中編寫程序,設(shè)計出一個糧食濕度、溫度智能檢測系統(tǒng),并且能夠?qū)穸群亢蛯崟r溫度顯示在數(shù)碼管上。具體來說該學(xué)生的主要任務(wù)是在系統(tǒng)硬件電路的基礎(chǔ)上,利用MCS-51單片機(jī)的匯編語言或C51語言編寫程序,實現(xiàn):(1)糧食倉庫的溫度、濕度實時測量功能;(2)將測量到的溫濕度含量顯示在4位數(shù)碼管;(3)利用若干個開關(guān)按鍵設(shè)置溫度、濕度的標(biāo)準(zhǔn)值;(4)實現(xiàn)系統(tǒng)溫度、濕度超限報警功能;(5)編寫程序?qū)崿F(xiàn)系統(tǒng)的看門狗復(fù)位功能。設(shè)計指標(biāo):(1)溫度范圍:-40度--+85度;(2)濕度范圍:0~100%RH;(3)顯示:4位數(shù)碼管。4.設(shè)計的基本要求及進(jìn)度安排(含起始時間、設(shè)計地點):(1)選題、收集資料、確定開發(fā)工具、理解題目、開題報告[3周,前](2)需求分析(需求說明書)、開發(fā)計劃(項目計劃書)[3周,前](3)總體流程圖[2周,前](4)編寫程序[4周,](5)系統(tǒng)集成[2周,前](6)系統(tǒng)嘗試[1周,前](7)導(dǎo)師驗收[1周,前](8)完成論文[10周,前]。5.畢業(yè)設(shè)計(論文)的工作量要求撰寫15000字論文①實驗(時數(shù))*或?qū)嵙?xí)(天數(shù)):300機(jī)時②圖紙(幅面和張數(shù))*:③其他要求:查閱資料不少于10份指導(dǎo)教師簽名:年月日學(xué)生簽名:年月日系主任審批:年月日說明:1本表一式二份,一份由學(xué)生裝訂入冊,一份教師自留。2帶*項可根據(jù)學(xué)科特點選填。糧食倉庫溫濕度智能檢測系統(tǒng)軟件設(shè)計摘要糧食中的溫度和濕度是影響糧食質(zhì)量的重要因素,它也是國內(nèi)外糧食部門嚴(yán)格控制的一項重要質(zhì)量指標(biāo)。

本設(shè)計以MCS-51單片機(jī)的STC52芯片為核心,利用數(shù)字式的濕度傳感器HS1101和數(shù)字式的溫度傳感器DS18B20在線檢測倉庫中糧食的實時溫濕度,再輔以必要的外圍電路,設(shè)計了一個簡易的濕度測量系統(tǒng)。本文詳細(xì)介紹了系統(tǒng)的軟件設(shè)計過程,給出了系統(tǒng)各模塊的軟件工作流程圖和源程序代碼,并用Protues軟件和Keil軟件對系統(tǒng)進(jìn)行了調(diào)試。

本系統(tǒng)的軟件采用MCS-51單片機(jī)的匯編語言進(jìn)行編程。整個系統(tǒng)能夠完成實時溫濕度顯示、溫濕度超限報警、報警值設(shè)置等功能。經(jīng)調(diào)試,系統(tǒng)工作穩(wěn)定、可靠性強(qiáng)。

關(guān)鍵詞:STC52單片機(jī);溫度傳感器;濕度傳感器;軟件設(shè)計

SoftwareDesignofTemperatureandHumidityIntelligentDetectionSystemintheFoodDepotsAbstractGraintemperatureandhumidityareimportantfactorsaffectingfoodquality,itisalsostrictlycontroldomesticfoodsectorisanimportantindicatorofquality.hedesignoftheMCS-51microcontrollerSTC52chipasthecore,theuseofdigitalHS1101humiditysensoranddigitaltemperaturesensorDS18B20onlinereal-timedetectionoffoodinthewarehousetemperatureandhumidity,supplementedbythenecessaryperipheralcircuits,asimplehumiditymeasurementsystem.Thispaperdescribesthesoftwaredesignprocess,giventheworkofeachmoduleofthesoftwareflowchartandsourcecode,andKeilwithProtuessoftwareanddebugsoftwareonthesystem.Thesystem'ssoftwareusesMCS-51microcontrollerassemblylanguageprogramming.Completionoftheentiresystemcandisplayreal-timetemperatureandhumidity,temperatureandhumiditylimitalarm,thealarmvalueissetandsoon.Aftercommissioning,thesystemisstable,reliable.KeyWords:STC52SCM;temperaturesensor;humiditysensor;softwaredesign目錄3.2系統(tǒng)軟件設(shè)計概述 103.3主程序模塊設(shè)計 103.4溫度采集模塊程序設(shè)計 123.5濕度采集模塊 163.6數(shù)據(jù)顯示模塊程序設(shè)計 213.7超限值報警模塊程序設(shè)計 244系統(tǒng)調(diào)試 264.1系統(tǒng)調(diào)試用到的工具 26 26 274.2系統(tǒng)測試 304.2.1軟件設(shè)計分析 30 30 305結(jié)論 31參考文獻(xiàn) 32致謝 33畢業(yè)設(shè)計(論文)知識產(chǎn)權(quán)聲明 34畢業(yè)設(shè)計(論文)獨創(chuàng)性聲明 35附錄1糧食倉庫溫濕度智能檢測系統(tǒng)源程序代碼 36附錄2系統(tǒng)Protues電路原理圖 481緒論1.1課題意義和研究背景糧食儲藏是國家為防備戰(zhàn)爭、災(zāi)荒及其它突發(fā)性事件而采取的有效措施,因此,糧食的安全儲藏具有重要意義。目前,中國地方及墾區(qū)的各種大型糧庫都還存在著程度不同的糧食儲存變質(zhì)問題。根據(jù)國家糧食保護(hù)法規(guī)定,必須定期抽樣檢查糧庫各點的糧食溫度和濕度,以便及時采取相應(yīng)的措施。但大部分糧庫目前還是采取人工測量溫度和濕度的方法,這不僅使糧庫工作人員工作量增大,且工作效率低,尤其是大型糧庫的溫度和濕度檢測任務(wù)如不能及時徹底完成,則有可能會造成糧食大面積變質(zhì)。據(jù)有關(guān)資料統(tǒng)計,中國每年因糧食變質(zhì)而損失的糧食達(dá)數(shù)億斤,直接造成的經(jīng)濟(jì)損失是驚人的。影響糧食安全儲藏的主要參數(shù)是糧食的溫度和濕度,這兩者之間又是互相關(guān)聯(lián)的。糧食在正常儲藏過程中,含水量一般在12%以下(為安全狀態(tài)),不會產(chǎn)生溫度突變,一旦糧庫進(jìn)水、結(jié)露等使糧食的含水量達(dá)到20%以上時,由于糧粒受潮,胚芽萌發(fā),新陳代謝加快而產(chǎn)生呼吸熱,使局部糧食溫度突然升高,必然引起糧食“發(fā)燒”和霉變,并可能形成連鎖反應(yīng),從而造成不可挽回的損失。因此設(shè)計出一種經(jīng)濟(jì)實用的糧庫糧情溫濕度智能檢測系統(tǒng)是非常有必要的[1]。1.2國內(nèi)外發(fā)展?fàn)顩r糧情檢測屬監(jiān)控系統(tǒng)范疇,近年來,由于傳感器技術(shù)、計算機(jī)技術(shù)、超大規(guī)模集成電路技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,使監(jiān)控系統(tǒng)廣泛應(yīng)用于工農(nóng)業(yè)生產(chǎn)等領(lǐng)域,因此,糧情檢測技術(shù)的研究在軟、硬件等方面都有了一定的進(jìn)展。早期糧情監(jiān)測主要采用溫度計測量法,它是將溫度計放入特制的插桿中,根據(jù)經(jīng)驗插在糧堆的多個測溫點,管理人員定期拔出讀數(shù),確定糧溫的高、低,決定是否倒糧。這種方法對儲糧有一定的作用,但由于溫度計精度、人工讀數(shù)的人為因素等原因,溫度檢測不僅速度慢,而且精度低,抽樣不徹底,局部糧溫過高不易被及時發(fā)現(xiàn),導(dǎo)致因局部糧食發(fā)霉變質(zhì)引起大面積壞糧的情況時有發(fā)生。隨著科技的發(fā)展,從1978年開始,采用電阻式溫度傳感器、采樣器、模數(shù)轉(zhuǎn)換器、報普器等組成的儲糧監(jiān)測系統(tǒng)出現(xiàn),它可對各糧庫的各個測溫點進(jìn)行巡回檢測,檢測速度、精度大大提高,降低了勞動強(qiáng)度,但由于電阻傳感器的靈敏度低,致使檢測精度、系統(tǒng)可靠性還不夠理想。至1990年,糧情檢測系統(tǒng)有了很大的改善和提高,系統(tǒng)在布線上采用矩陣式布線技術(shù),簡化了數(shù)據(jù)采集部分的線路,在傳感器方面應(yīng)用了半導(dǎo)體、熱電偶等器件;在線路傳輸上采用了串行傳輸方式,從而減少了傳輸線根數(shù);采用單片機(jī)進(jìn)行數(shù)據(jù)處理,并采用各種手段提高數(shù)據(jù)傳輸及檢測速度,通過軟硬件技術(shù)的結(jié)合,檢測精度和可靠性較以前有很大提高。但溫度傳感器的線性度差,系統(tǒng)的檢測精度仍不理想,無法大面積推廣。近年來,隨著單片機(jī)功能的日益強(qiáng)大和計算機(jī)的廣泛應(yīng)用,糧情檢測的準(zhǔn)確性、穩(wěn)定性要求越來越高。尋找最佳配置和最好的性價比成為糧情監(jiān)測研究的熱點[2]。國外在糧情監(jiān)控技術(shù)上己達(dá)到了很成熟的地步,高科技數(shù)字式傳感器廣泛應(yīng)用于糧情檢測系統(tǒng)。這種傳感器采用了半導(dǎo)體集成電路與微控制器最新技術(shù),在一個管芯上集成了半導(dǎo)體溫度檢測芯片、數(shù)據(jù)信號轉(zhuǎn)換芯片、計算機(jī)接口芯片,存儲芯片等,除完成溫度檢測功能外,還可完成預(yù)置范圍溫度、報警、多路AD轉(zhuǎn)換、溫度補(bǔ)償?shù)裙δ?。由于?shù)字溫度傳感器直接傳出數(shù)字量,從而解決了溫度信號長距離傳輸問題及傳輸過程中因干擾和衰減而導(dǎo)致的精度降低等問題。目前,國內(nèi)出現(xiàn)了豐富的數(shù)字傳感器配套產(chǎn)品,如遠(yuǎn)程控制模塊、中繼器、接插器、分線器等,技術(shù)也比較成熟。1.3系統(tǒng)的設(shè)計要求具體來說該學(xué)生的主要任務(wù)是在系統(tǒng)硬件電路的基礎(chǔ)上,利用MCS-51單片機(jī)的匯編語言或C51語言編寫程序,實現(xiàn):(1)糧食倉庫的溫度、濕度實時測量功能;(2)將測量到的溫濕度含量顯示在4位數(shù)碼管;(3)利用若干個開關(guān)按鍵設(shè)置溫度、濕度的標(biāo)準(zhǔn)值;(4)實現(xiàn)系統(tǒng)溫度、濕度超限報警功能。1.4本課題的主要研究內(nèi)容1.設(shè)計相應(yīng)的信號采集電路、執(zhí)行電路等硬件電路;2.實現(xiàn)各環(huán)境要素的自動監(jiān)測;3.通過單片機(jī)匯編語言編制數(shù)據(jù)采集、分析處理、顯示、修改、參數(shù)設(shè)置、控制等程序功能模塊;4.研究裝置的軟硬件抗干擾措施,提高系統(tǒng)工作的可靠性和穩(wěn)定性。2系統(tǒng)方案及論證2.1總體方案設(shè)計經(jīng)分析,將系統(tǒng)分為兩個部分,一個是由溫濕度傳感器組成的檢測部分,另一個是由單片機(jī)和LED數(shù)碼管組成的主控與顯示部分。如圖所示DS18B20和HS1101濕度檢測電路將檢測到的數(shù)送到單片機(jī),單片機(jī)對接收到的數(shù)據(jù)進(jìn)行處理并送到LED數(shù)碼管,5V穩(wěn)壓電源給各個部分供電。系統(tǒng)組成框圖如圖2.1所示。顯示模塊顯示模塊HS1101濕度檢測電路DS18B20溫度檢測HS1101濕度檢測電路DS18B20溫度檢測單片機(jī)單片機(jī)電源電源圖2.1系統(tǒng)組成框圖2.2模塊化編程思想方案論證如果一本書沒有章、節(jié)和段落,學(xué)習(xí)起來該有多么困難。將復(fù)雜任務(wù)和主題分解為更便于管理的部分,是使它們更容易處理的一種方法。同樣,計算機(jī)程序也可以分解為小的子程序,或模塊,而這些子程序或模塊可以分別進(jìn)行開發(fā)和測試。這種方法就稱為模塊化程序設(shè)計(modularprogramming)。模塊最重要的屬性是它們應(yīng)該盡可能的獨立和自包含。另外,一般將它們設(shè)計成執(zhí)行一個特定的、定義好的函數(shù),它有一個入口點和一個退出點。同時,模塊常常很短(通常只有50到100條指令)和高度內(nèi)聚的[3]。模塊化程序設(shè)計有很多優(yōu)點。不管對于開發(fā)者還是用戶來說,小的、自包含的單元都更易于設(shè)計和理解底層的邏輯。模塊化程序設(shè)計使開發(fā)更方便,這是因為每個模塊都可以獨自得以完善。事實上,對于大型軟件項目,不同的程序員可以只負(fù)責(zé)各自的組件。模塊化設(shè)計也使調(diào)試和測試程序更加容易,因為錯誤更容易隔離開來。最后,程序的維護(hù)和修改更加方便。這主要是因為可以開發(fā)新模塊來執(zhí)行額外的任務(wù),然后將其集成到現(xiàn)有的、組織良好的架構(gòu)中。盡管所有這些屬性都是使用模塊的理由,而與數(shù)值工程問題求解相關(guān)的、最重要的理由是,可以對有用的模塊庫進(jìn)行維護(hù),以便以后在其的程序中使用。2.3顯示模塊的選擇與論證LED數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出需要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。2.3.1靜態(tài)顯示方案對于單片機(jī)的I/O接口進(jìn)行驅(qū)動,或者使用如BCD碼二-十進(jìn)位解碼器解碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O接口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O接口來驅(qū)動,要知道一個89S51單片機(jī)可用的I/O接口才32個呢。故實際應(yīng)用時必須增加解碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬體電路的復(fù)雜性。2.3.2動態(tài)顯示方案數(shù)碼管動態(tài)顯示介面是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位元選通控制電路,位元選通由各自獨立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位元選通COM端電路的控制,所以只要將需要顯示的數(shù)碼管的選通控制打開,該位元就顯示出字形,沒有選通的數(shù)碼管就不會亮。透過分時輪流控制各個LED數(shù)碼管的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位元數(shù)碼管的點亮?xí)r間為1~2ms暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O接口,而且功耗更低[4]。2.4編程語言選擇方案匯編語言是一種功能很強(qiáng)的程序設(shè)計語言,也是利用計算機(jī)所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語言,對應(yīng)于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機(jī)器可執(zhí)行的代碼。高級的匯編器如MASM,TASM等等為寫匯編程序提供了很多類似于高級語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級語言?,F(xiàn)在的匯編環(huán)境已經(jīng)如此高級,即使全部用匯編語言來編寫Windows的應(yīng)用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機(jī)器硬件精確控制的程序。2.4.2C語言C語言是一種計算機(jī)程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。C語言是功的系統(tǒng)描述語言,用C語言開發(fā)的UNIX操作系統(tǒng)就是一個成功的范例;同時C語言又是一種通用的程序設(shè)計語言,在國際上廣泛流行。世界上很多著名的計算公司都成功的開發(fā)了不同版本的C語言,很多優(yōu)秀的應(yīng)用程序也都使用C語言開發(fā)的,它是一種很有發(fā)展前途的高級程序設(shè)計語言。1.C是中級語言。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元。2.C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。3.C語言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強(qiáng)大,可以實現(xiàn)決策目的的游戲。4.C語言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。C語言對編寫需要硬件進(jìn)行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應(yīng)用軟件也是用C語言編寫的。C語言具有較好的可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言[5]。匯編語言是低級語言,在編寫程序的時候會把根據(jù)不同的情況指定使用不同的尋址方式,能夠?qū)?nèi)存和CPU里的通用寄存器直接操縱。不同的計算機(jī)系列會有不同的匯編語言此次課題選擇了C語言進(jìn)行編寫。3系統(tǒng)軟件設(shè)計3.1系統(tǒng)硬件工作原理該系統(tǒng)的硬件電路由以下幾部分電路模塊組成:單片機(jī)、溫度傳感器檢測電路、濕度傳感器檢測電路、數(shù)碼管顯示電路、鍵盤開關(guān)電路、蜂鳴器報警電路等部分。系統(tǒng)硬件框圖如圖3.1所示。S18B20S18B20溫度傳感器HS1101濕度傳感器STC89C52單片機(jī)串行LED顯示報警電路鍵盤圖3.1系統(tǒng)硬件框圖3.2系統(tǒng)軟件設(shè)計概述本章在硬件電路設(shè)計的基礎(chǔ)上,全面闡述各部分軟件的設(shè)計思想和具體實現(xiàn)方法。整個軟件采用模塊化設(shè)計結(jié)構(gòu),并利用匯編語言編制。整個程序由主程序、顯示、報警、測量等子程序模塊組成[6]。3.3主程序模塊設(shè)計主程序框圖如圖3.2所示。程序初始化包括寄存器設(shè)置、堆棧設(shè)置和相關(guān)單元清零設(shè)置等。主程序存放于89c52中,啟動后循環(huán)執(zhí)行,不停地進(jìn)行采樣計算,得出實際溫、濕度值,并與設(shè)定值進(jìn)行比較,實現(xiàn)聲光報警信號。在主程序是單片機(jī)程序的主體,整個單片機(jī)端系統(tǒng)軟件的功能的實現(xiàn)都是在其中完成的。軟件設(shè)計的主要思路是將采集、接收、顯示燈功能編成獨立的模塊。開始Key1鍵按下?開始Key1鍵按下?顯示濕度是 顯示濕度否 Key2Key2鍵按下?顯示溫度是顯示溫度結(jié)束結(jié)束否圖3.2主程序流程圖/*主函數(shù)*//************************************/voidmain(){ EA=1;//開總中斷 init_t0();//初始化定時器 init_t1(); TR0=1;//定時器開始工作 TR1=1; ET0=1; lcd_init();//初始化LCD ok_menu(); BEEP=0; while(1) { if(key1==0) { lcd_init; wendu_Menu(); do { Read_Temperature(); Disp_Temperature(); baojing(); } while(key2); } if(key2==0) { lcd_init; shidu_Menu(); do { if(int_flag==1) { disp(); } } while(key1); } }3.4溫度采集模塊程序設(shè)計根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當(dāng)DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功[7]。開始開始初始化初始化初始化是否成功初始化是否成功?否是從從18B20讀字節(jié)向向18B20寫字節(jié)讀取溫度讀取溫度結(jié)束 結(jié)束圖3.3溫度檢測程序流程DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位[8]。圖3.4DS18B20溫度值這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度(例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H)[9]。/**********************************************************/************溫度測量**************************************/**********************************************************//*初始化ds1820*//*******************************************************************/Init_DS18B20(void){DQ=1;//DQ復(fù)位Delay(8);//稍做延時DQ=0;//單片機(jī)將DQ拉低Delay(90);//精確延時大于480usDQ=1;//拉高總線Delay(8);presence=DQ;//如果=0則初始化成功=1則初始化失敗Delay(100);DQ=1;return(presence);//返回信號,0=presence,1=nopresence}/*讀一個字節(jié)*//*******************************************************************/ReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;Delay(4);}return(dat);}/*寫一個字節(jié)*//*******************************************************************/WriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}/*讀取溫度*//*******************************************************************/Read_Temperature(void){Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0x44);//啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0xBE);//讀取溫度寄存器temp_data[0]=ReadOneChar();//溫度低8位temp_data[1]=ReadOneChar();//溫度高8位}/*數(shù)據(jù)轉(zhuǎn)換與溫度顯示*//*******************************************************************/Disp_Temperature() { display[4]=temp_data[0]&0x0f; display[0]=ditab[display[4]]+0x30;//查表得小數(shù)位的值 display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4); display[3]=display[4]/100+0x30; display[1]=display[4]%100; display[2]=display[1]/10+0x30; display[1]=display[1]%10+0x30; if(display[3]==0x30)//高位為0,不顯示 { display[3]=0x20; if(display[2]==0x30)//次高位為0,不顯示 display[2]=0x20; } lcd_pos(0x48); lcd_wdat(display[3]);//百位數(shù)顯示 lcd_pos(0x49); lcd_wdat(display[2]);//十位數(shù)顯示 lcd_pos(0x4a); lcd_wdat(display[1]);//個位數(shù)顯示 lcd_pos(0x4c); lcd_wdat(display[0]);//小數(shù)位數(shù)顯示 }//報警voidbaojing(){ if(display[2]>=0x32&&display[1]>=0x31) { BEEP=1; } else { BEEP=0; }}3.5濕度采集模塊顯示電路采用四位七段LCD數(shù)碼管顯示即LED四位七段數(shù)碼管字符型液晶模塊,是目前使用最廣泛的液晶屏之一。LED四位七段數(shù)碼管字符型液晶模塊是點陣型液晶驅(qū)動方便,經(jīng)編碼后顯示內(nèi)容多樣化[10]。標(biāo)定即顯示當(dāng)下工作狀態(tài),顯示溫濕度。開始開始開定時開定時T0,T1是否計滿1S?是否計滿1S?否關(guān)閉關(guān)閉T0并根據(jù)頻率算出濕度值顯示溫度顯示溫度結(jié)束結(jié)束圖.3.4濕度檢測流程圖由圖3.5可知相對濕度與電容的關(guān)系可看成直線段,所以有相對濕度RH=(3.1)圖3.5電容值與相對濕度值的關(guān)系所以有(3.2)/****************************************************************************************濕度測量************************************************************************************************////////////////軟件延時/////////////voiddelays(unsignedintcnt){while(--cnt);}//定時器0初始化voidinit_t0(void){TMOD=(TMOD&0xF0)||0x01;//定時器0工作于方式1//TH0=(65536-50000)/256;//定時50ms//TL0=(65535-50000)%256;TH0=0x4c;TL0=0x00;}//定時器1初始化voidinit_t1(void){TMOD=(TMOD&0x0F)|0x50;//定時器1用作計時TH1=0x00;TL1=0x00;}//定時器0中斷服務(wù)程序voidint_t0(void)interrupt1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;int_count++;if(int_count==20){TR1=0;int_flag=1;int_count=0x00;}}//定時器1中斷服務(wù)程序voidint_t1(void)interrupt3{T1count++;}voiddisp(void) //濕度顯示函數(shù){int_flag=0;sum=TL1+TH1*256+T1count*65536;//計算1秒內(nèi)的脈沖個數(shù)//以下將數(shù)據(jù)格式化,轉(zhuǎn)成LED可顯示的BCD碼wet=100-(sum-4000)/50;//**********濕度計算公式le[0]=wet%10;//最低位wet=wet/10;le[1]=wet%10;//第二位wet=wet/10;le[2]=wet%10;//第三位wet=wet/10;int_count=0x00;T1count=0;TH1=0x00;TL1=0x00;TR1=1;lcd_pos(0x4a);lcd_wdat(le[2]+48);lcd_pos(0x4b);lcd_wdat(le[1]+48);lcd_pos(0x4c);lcd_wdat(le[0]+48);delays(100);}voidwendu_Menu() //顯示溫度的菜單{ucharm;lcd_pos(0);//設(shè)置顯示位置為第一行的第1個字符m=0;while(cdis1[m]!='\0'){//顯示字符lcd_wdat(cdis1[m]);m++;}lcd_pos(0x40);//設(shè)置顯示位置為第二行第1個字符m=0;while(cdis2[m]!='\0'){lcd_wdat(cdis2[m]);//顯示字符m++;}writetab();//自定義字符寫入CGRAMdelay1(5);lcd_pos(0x4d);lcd_wdat(0x00);//顯示自定義字符}voidshidu_Menu() //顯示濕度的菜單{ucharm;lcd_pos(0);//設(shè)置顯示位置為第一行的第1個字符m=0;while(cdis3[m]!='\0'){//顯示字符lcd_wdat(cdis3[m]);m++;}lcd_pos(0x40);//設(shè)置顯示位置為第二行第1個字符m=0;while(cdis4[m]!='\0'){lcd_wdat(cdis4[m]);//顯示字符m++;}writetab();//自定義字符寫入CGRAMdelay1(5);lcd_pos(0x4d);lcd_wdat(0x00);//顯示自定義字符}voidok_menu(){ ucharm; lcd_pos(0);//設(shè)置顯示位置為第一行的第1個字符m=0;while(cdis5[m]!='\0'){//顯示字符lcd_wdat(cdis5[m]);m++;}lcd_pos(0x40);//設(shè)置顯示位置為第二行第1個字符m=0;while(cdis6[m]!='\0'){lcd_wdat(cdis6[m]);//顯示字符m++;}}3.6數(shù)據(jù)顯示模塊程序設(shè)計在日常生活中,大家對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機(jī)的人機(jī)交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器[11]在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:顯示質(zhì)量高、數(shù)字式接口、體積小、重量輕、功耗低、LCD,LED四位七段數(shù)碼管主要技術(shù)參數(shù):顯示容量:16×2個字符;芯片工作電壓:4.5—5.5V;工作電流:2.0mA(5.0V);模塊最佳工作電壓:5.0V;字符尺寸:2.95×4.35(W×H)mm。開始開始是否忙碌?是是否忙碌?否寫指令寫指令寫數(shù)據(jù)寫數(shù)據(jù)設(shè)置顯示位設(shè)置顯示位初始化初始化顯示顯示結(jié)束結(jié)束圖3.6液晶顯示程序流程/******************************************************************//*檢查LCD忙狀態(tài)/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。*//******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*寫指令數(shù)據(jù)到LCD/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//*******************************************************************/voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//*寫顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//*******************************************************************/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*LCD初始化設(shè)定/*******************************************************************/voidlcd_init(){delay1(15);lcd_wcmd(0x01);//清除LCD的顯示內(nèi)容lcd_wcmd(0x38);//16*2顯示,5*7點陣,8位數(shù)據(jù)delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x0c);//顯示開,關(guān)光標(biāo)delay1(5);lcd_wcmd(0x06);//移動光標(biāo)delay1(5);lcd_wcmd(0x01);//清除LCD的顯示內(nèi)容delay1(5);}/*設(shè)定顯示位置*//*******************************************************************/voidlcd_pos(ucharpos){lcd_wcmd(pos|0x80);//數(shù)據(jù)指針=80+地址變量}/*自定義字符寫入CGRAM*//*******************************************************************/voidwritetab(){unsignedchari;lcd_wcmd(0x40);//寫CGRAMfor(i=0;i<8;i++)lcd_wdat(mytab[i]);}/*us級延時函數(shù)*//*******************************************************************/voidDelay(unsignedintnum){while(--num);3.7超限值報警模塊程序設(shè)計 Disp_Temperature() { display[4]=temp_data[0]&0x0f; display[0]=ditab[display[4]]+0x30;//查表得小數(shù)位的值 display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4); display[3]=display[4]/100+0x30; display[1]=display[4]%100; display[2]=display[1]/10+0x30; display[1]=display[1]%10+0x30; if(display[3]==0x30)//高位為0,不顯示 { display[3]=0x20; if(display[2]==0x30)//次高位為0,不顯示 display[2]=0x20; } lcd_pos(0x48); lcd_wdat(display[3]);//百位數(shù)顯示 lcd_pos(0x49); lcd_wdat(display[2]);//十位數(shù)顯示 lcd_pos(0x4a); lcd_wdat(display[1]);//個位數(shù)顯示 lcd_pos(0x4c); lcd_wdat(display[0]);//小數(shù)位數(shù)顯示 }//報警voidbaojing(){ if(display[2]>=0x32&&display[1]>=0x31) { BEEP=1; } else { BEEP=0; }}4系統(tǒng)調(diào)試4.1系統(tǒng)調(diào)試用到的工具ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大[12]。圖4.1.ProteusISIS的工作界面1.雙擊桌面上的ISIS6Professional圖標(biāo)或者單擊屏幕左下方的“開始”→“程序”→“Proteus6Professional”→“ISIS6Professional”。2.ProteusISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。3.在圖形編輯窗口內(nèi)完成電路原理圖的編輯和繪制。為了方便作圖坐標(biāo)系統(tǒng)(CO-ORDINATESYSTEM)。ISIS中坐標(biāo)系統(tǒng)的基本單位是10nm,主要是為了和ProteusARES保持一致。但坐標(biāo)系統(tǒng)的識別(read-out)單位被限制在1th。坐標(biāo)原點默認(rèn)在圖形編輯區(qū)的中間,圖形的坐標(biāo)值能夠顯示在屏幕的右下角的狀態(tài)欄中[13]。點狀柵格(TheDotGrid)與捕捉到柵格(SnappingtoaGrid)。編輯窗口內(nèi)有點狀的柵格,可以通過View菜單的Grid命令在打開和關(guān)閉間切換。點與點之間的間距由當(dāng)前捕捉的設(shè)置決定。捕捉的尺度可以由View菜單的Snap命令設(shè)置,或者直接使用快捷鍵F4、F3、F2和CTRL+F1。如圖4.2操作界面所示。圖4.2操作界面KeiluVision2是目前使用廣泛的單片機(jī)開發(fā)軟件,它集成了源程序編輯和程序調(diào)試于一體,支持匯編、C、PL/M語言。

這里僅僅介紹KeiluVision2的簡單使用,更詳細(xì)的使用方法見本光盤\單片機(jī)軟件\Keilc51\Keil書籍與資料目錄中的內(nèi)容。

先運行光盤中單片機(jī)軟件\setup\setup.exe安裝程序,選擇安裝“EvalVersion”版進(jìn)行安裝。一直點擊“Yes”或“Next”,直到“Finish”完成。之后運行同目錄中的Keiluv2漢化安裝.exe安裝漢化程序[14]。裝好后,在桌面上會產(chǎn)生快捷圖標(biāo),如圖4.3所示。圖4.3快捷圖標(biāo)點擊桌面快捷圖標(biāo),可以直接進(jìn)入主畫面。如圖4.4Keil主界面所示圖4.4keil主界面圖4.5Keil系統(tǒng)創(chuàng)建工程在Keil系統(tǒng)中,每做個獨立的程序,都視為工程(或者叫項目)。首先從菜但的“工程”中“新建工程...”,建立將要做的工程項目[15]。如圖4.5Keil系統(tǒng)創(chuàng)建工程所示。圖4.6Keil編輯界面接下來,Keil環(huán)境要求為Test工程選擇一個單片機(jī)型號;選擇Atmel公司的89C51(雖然使用的是89C52,但由于89C52與89C52內(nèi)、外部結(jié)構(gòu)完全一樣,所以這里依然選擇“89C52”)。“確定”后工程項目就算建立了[16]點擊“文件”中的“新建”,新建一個空白文檔;這個空白文檔就是編寫片機(jī)程的場所。在這里可以進(jìn)行編輯、修改等操作。如圖4.6Keil編輯界面所示。4.2系統(tǒng)測試4.2.1軟件設(shè)計分析主程序進(jìn)行鍵盤掃描,單片機(jī)根據(jù)判斷鍵盤那個鍵按下,顯示溫度或濕度。如果key1鍵按下就調(diào)用溫度檢測程序,單片機(jī)對18B20進(jìn)行初始化,成功則讀字節(jié),再寫入字節(jié),讀取溫度數(shù)據(jù)送到LED數(shù)碼管顯示。如果key2鍵按下,就調(diào)用濕度顯示程序,開啟定時中斷T0、T1,T0進(jìn)行定時,T1對濕度電路給的頻率計數(shù),當(dāng)計滿1S時關(guān)閉T1,單片機(jī)對計的數(shù)進(jìn)行運算,的出濕度值,送往液晶顯示[17]。.2.2主要指標(biāo)測試本系統(tǒng)主要指標(biāo)就在于所測得的溫濕度的數(shù)據(jù)是否達(dá)到了題目要求,本系統(tǒng)測量范圍為-10-50℃,濕度為0-100%;溫度測量誤差為0.1℃,濕度測量誤差為2%;在8棟111測試溫度為16.7度,濕度為41%[18]。通過測試,與標(biāo)準(zhǔn)儀器所測得的溫濕度相比較,可得系統(tǒng)的誤差為信號傳輸過程中可能存在誤碼,及誤判。5結(jié)論本溫濕度計的制作基本上達(dá)到了題目要求的技術(shù)指標(biāo),溫度測量范圍為-10-50℃,濕度為0-100%;溫度測量誤差為0.1℃,濕度測量誤差為3%;實現(xiàn)了量程自動轉(zhuǎn)換功能。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的?;仡櫰鸫舜螁纹瑱C(jī)課程設(shè)計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在接近一星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機(jī)匯編語言掌握得不好……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。參考文獻(xiàn)[1]康華光等.電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社.[2]彭介華.電子技術(shù)課程設(shè)計指導(dǎo)[M].北京:高等教育出版社.[3]郭天祥.新概念51單片機(jī)C語言教程:入門、提高、開發(fā)、拓展全攻略[M].電子工業(yè)出版社,2009.[4]黃智偉.全國大學(xué)生電子設(shè)計競賽制作實訓(xùn)[M].北京:北京航空航天大學(xué)出版社,2007.[5]黃智偉.全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006.[6]黃智偉.全國大學(xué)生電子設(shè)計競賽技能訓(xùn)練[M].北京:北京航空航天大學(xué)出版社,2007.[7]ckmannJP,KamphorstSO,RuelleD.RecurrencePlotsofDynamicalSystems[J].Europhys.Lett.,1987,4(9):9732977.[8]黃智偉.全國大學(xué)生電子設(shè)計競賽常用電路模塊制作[M].北京:北京航空航天大學(xué)出版社,2010.[9]黃智偉等.基于NImultisim的電子電路計算機(jī)仿真設(shè)計與分析[M].北京:電子工業(yè)出版社,2007.10]黃智偉.印制電路板(PCB)設(shè)計技術(shù)與實踐[M].北京:電子工業(yè)出版社,2009.[11]高吉祥等.電子技術(shù)基礎(chǔ)實驗與課程設(shè)計[M].北京:電子工業(yè)出版社,2002.[12]ST.LlashFlex51MCUPDF.SSTComponentsIndustries2008[M].1~10,78~79.[13]AnalogDevicesLncAD590.AnalogDviceslnc1997[M].1~12.[14]Kaminsky,,Feature:DevelopingaMultiple-In-structon-StreamSingle-Chip12(12):66~76.[15]R.ichardCarley,JamesA.Bain,GaryK.Fedder.Single-chipcomputer-swithmicroelectromechanicalsystems-basedmagneticmemory.Physics[J].2000.5:87.[16]陳大欽編.電子技術(shù)基礎(chǔ)實驗(第二版)[M].湖北:機(jī)械工業(yè)出版社,2001.[17]李廣弟.單片機(jī)基礎(chǔ)[M].北京:北航出版社,2010.[18]胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:京電子工業(yè)出版社,2005.[19]鄒其洪,黃智偉,高嵩,等編著.電工電子實驗與計算機(jī)仿真[M].電子工業(yè)出版社,2005.[20]范風(fēng)強(qiáng),蘭嬋麗.單片機(jī)語言C51應(yīng)用實戰(zhàn)集錦[J].電子工業(yè)出版社,2005.2-18.致謝在本次畢業(yè)設(shè)計中,我從指導(dǎo)老師沈虹教授身上學(xué)到了很多東西。沈教授認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高。這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助,感謝他細(xì)心而又耐心的輔導(dǎo)。另外,在軟件開發(fā)過程中倍麗軟件公司的技術(shù)人員也給了我很大的支持,幫助解決了不少的難點,使得軟件能及時開發(fā)完成,還有同組的幾位同學(xué)的互相幫助,齊心協(xié)力,這里一并表示感謝。在這里,對他們的無私幫助,我表示誠摯的感謝!畢業(yè)設(shè)計(論文)知識產(chǎn)權(quán)聲明本人完全了解西安工業(yè)大學(xué)北方信息工程學(xué)院有關(guān)保護(hù)知識產(chǎn)權(quán)的規(guī)定,即:本科學(xué)生在校攻讀學(xué)士學(xué)位期間畢業(yè)設(shè)計(論文)工作的知識產(chǎn)權(quán)屬于西安工業(yè)大學(xué)北方信息工程學(xué)院。本人保證畢業(yè)離校后,使用畢業(yè)設(shè)計(論文)工作成果或用畢業(yè)設(shè)計(論文)工作成果發(fā)表論文時署名單位仍然為西安工業(yè)大學(xué)北方信息工程學(xué)院。學(xué)校有權(quán)保留送交的畢業(yè)設(shè)計(論文)的原文或復(fù)印件,允許畢業(yè)設(shè)計(論文)被查閱和借閱;學(xué)??梢怨籍厴I(yè)設(shè)計(論文)的全部或部分內(nèi)容,可以采用影印、縮印或其他復(fù)制手段保存畢業(yè)設(shè)計(論文)。(保密的畢業(yè)設(shè)計(論文)在解密后應(yīng)遵守此規(guī)定)畢業(yè)設(shè)計(論文)作者簽名:指導(dǎo)教師簽名:日畢業(yè)設(shè)計(論文)獨創(chuàng)性聲明秉承學(xué)校嚴(yán)謹(jǐn)?shù)膶W(xué)風(fēng)與優(yōu)良的科學(xué)道德,本人聲明所呈交的畢業(yè)設(shè)計(論文)是我個人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,畢業(yè)設(shè)計(論文)中不包含其他人已經(jīng)發(fā)表或撰寫過的成果,不包含他人已申請學(xué)位或其他用途使用過的成果。與我一同工作的同志對本研究所做的任何貢獻(xiàn)均已在論文中作了明確的說明并表示了致謝。畢業(yè)設(shè)計(論文)與資料若有不實之處,本人承擔(dān)一切相關(guān)責(zé)任。畢業(yè)設(shè)計(論文)作者簽名:指導(dǎo)教師簽名:日期:附錄1糧食倉庫溫濕度智能檢測系統(tǒng)源程序代碼#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^0;//定義DS18B20端口DQsbitBEEP=P2^2;//蜂鳴器驅(qū)動線bitpresence;sbitLCD_RS=P1^2;sbitLCD_RW=P1^1;sbitLCD_EN=P1^0;sbitled =P2^1; sbitkey1 =P2^3;sbitkey2 =P2^4;ucharcodecdis1[]={"wendujishiyan"};ucharcodecdis2[]={"T=.C"};ucharcodecdis3[]={"shidujishiyan"};ucharcodecdis4[]={"shidu:%"};ucharcodecdis5[]={"thesystemof"};ucharcodecdis6[]={"tempandhum"} ;unsignedchardatatemp_data[2]={0x00,0x00};unsignedchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};voidbeep();unsignedcharcodemytab[8]={0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};bitint_flag;//定時器01S到標(biāo)志位unsignedcharvolatileint_count;//定時器0中斷次數(shù)unsignedcharvolatileT1count;//定時器1中斷次數(shù)unsignedlongsum,wet;//1S內(nèi)脈沖總個數(shù)unsignedcharle[6];//LED顯示緩存#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};/*******************************************************************/voiddelay1(intms){unsignedchary;while(ms--){for(y=0;y<250;y++){_nop_();_nop_();_nop_();_nop_();}}}/******************************************************************//*檢查LCD忙狀態(tài)*//*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。*//******************************************************************/bitlcd_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P0&0x80);LCD_EN=0;return(result);}/*寫指令數(shù)據(jù)到LCD*//*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//*******************************************************************/voidlcd_wcmd(ucharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*******************************************************************//*寫顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//*******************************************************************/voidlcd_wdat(uchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*LCD初始化設(shè)定*//*******************************************************************/voidlcd_init(){delay1(15);lcd_wcmd(0x01);//清除LCD的顯示內(nèi)容lcd_wcmd(0x38);//16*2顯示,5*7點陣,8位數(shù)據(jù)delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x38);delay1(5);lcd_wcmd(0x0c);//顯示開,關(guān)光標(biāo)delay1(5);lcd_wcmd(0x06);//移動光標(biāo)delay1(5);lcd_wcmd(0x01);//清除LCD的顯示內(nèi)容delay1(5);}/*設(shè)定顯示位置*//*******************************************************************/voidlcd_pos(ucharpos){

溫馨提示

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

最新文檔

評論

0/150

提交評論