智能生態(tài)系統(tǒng)自動化裝置設(shè)計(jì)_第1頁
智能生態(tài)系統(tǒng)自動化裝置設(shè)計(jì)_第2頁
智能生態(tài)系統(tǒng)自動化裝置設(shè)計(jì)_第3頁
智能生態(tài)系統(tǒng)自動化裝置設(shè)計(jì)_第4頁
智能生態(tài)系統(tǒng)自動化裝置設(shè)計(jì)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 智能生態(tài)系統(tǒng)隊(duì)員1:姓名:徐德鵬,性別:男,出生年月:1992年12月,所在學(xué)院:儀器科學(xué)與電氣工程學(xué)院,專業(yè):電氣工程及其自動化專業(yè),年級:2011級,教學(xué)號:65110507,郵箱2397961557,電話隊(duì)員2:姓名:李京杰,性別:男,出生年月:1992年12月,所在學(xué)院:儀器科學(xué)與電氣工程學(xué)院,專業(yè):電氣工程及其自動化專業(yè),年級:2011級,教學(xué)號:65110505,郵箱:1569394708,電話隊(duì)員3:姓名:王曉丹,性別:女,出生年月:1992年7月,所在學(xué)院:儀器科學(xué)與電氣工程學(xué)院,專業(yè):電氣工程及其自動化專業(yè),年級:2011

2、級,教學(xué)號:65110629,郵箱:2495013305,電話作品類別:自動化裝置類引 言中國農(nóng)業(yè)的發(fā)展必須走現(xiàn)代化農(nóng)業(yè)這條道路,農(nóng)業(yè)的研究和應(yīng)用技術(shù)越來越受到重視,特別是智能化生態(tài)系統(tǒng)已經(jīng)成為高效農(nóng)業(yè)的一個(gè)重要組成部分。其中重要一環(huán)就是對農(nóng)業(yè)生產(chǎn)環(huán)境的一些重要參數(shù)進(jìn)行檢測和控制。例如,空氣的溫度、濕度和土壤的含水量等。在農(nóng)業(yè)種植問題中,環(huán)境與生物的生長、發(fā)育和能量交換密切相關(guān),進(jìn)行環(huán)境測控是實(shí)現(xiàn)生產(chǎn)管理自動化、科學(xué)化的基本保證,通過對監(jiān)測數(shù)據(jù)的分析,結(jié)合作物生長發(fā)育規(guī)律,控制環(huán)境條件,使作物達(dá)到優(yōu)質(zhì)、高產(chǎn)、高效的栽培目的。國外的智能化生態(tài)系統(tǒng)設(shè)施己經(jīng)發(fā)展到比較完備的

3、程度,并形成了一定的標(biāo)準(zhǔn),但是價(jià)格非常昂貴,并且與我國氣候特點(diǎn)不相適應(yīng)。而當(dāng)今國內(nèi)大多數(shù)對大棚溫度、濕度的檢測與控制都采用人工管理,這樣有測控精度低、勞動強(qiáng)度大及由于測控不及時(shí)等弊端,容易造成不可彌補(bǔ)的損失,不但大大增加了成本,浪費(fèi)了人力資源,而且很難達(dá)到預(yù)期的效果。因此,為了實(shí)現(xiàn)高效農(nóng)業(yè)生產(chǎn)的科學(xué)化并提高農(nóng)業(yè)研究的準(zhǔn)確性,推動我國農(nóng)業(yè)的發(fā)展,必須大力發(fā)展農(nóng)業(yè)設(shè)施與相應(yīng)的農(nóng)業(yè)工程,科學(xué)合理地調(diào)節(jié)生態(tài)系統(tǒng)內(nèi)溫度、濕度等,形成有利于蔬菜、水果生長的環(huán)境,是蔬菜和水果早熟、優(yōu)質(zhì)高效益的重要環(huán)節(jié)。目前,隨著智能化生態(tài)系統(tǒng)設(shè)施的迅速增多,人們對其性能要求也越來越高,特別是為了提高生產(chǎn)效率,對自動化程度要

4、求也越來越高。不同種類觀賞花卉對溫度及濕度等生長所需條件的要求也不盡相同,為它們提供一個(gè)更適宜其生長的封閉的、良好的生存環(huán)境,以提早或延遲花期,觀賞植物栽培生產(chǎn)最終將會給我們帶來巨大的經(jīng)濟(jì)效益。結(jié)合用戶需要,設(shè)計(jì)了一套智能化生態(tài)系統(tǒng)。本系統(tǒng)采用傳感器技術(shù)和單片機(jī)相結(jié)合,實(shí)現(xiàn)自動控制加熱、降溫、通風(fēng)。根據(jù)需要,通過顯示屏顯示基本信息,根據(jù)情況可隨時(shí)調(diào)節(jié)環(huán)境參數(shù)。本文將基于嵌入式系統(tǒng),使用stm32f103zet6型號的arm處理器設(shè)計(jì)操作界面,對生態(tài)系統(tǒng)的溫度及濕度進(jìn)行檢測和控制,利用現(xiàn)有資源設(shè)計(jì)一個(gè)實(shí)時(shí)控制生態(tài)溫度、濕度等的控制系統(tǒng)。并在此基礎(chǔ)上,利用stm32f103zet6芯片上的片上資源

5、設(shè)計(jì)了一系列的多媒體娛樂功能,包括音樂播放器、收音機(jī)、照相機(jī)以及圖片管理等應(yīng)用。目錄引 言一、方案設(shè)計(jì)11、方案選擇12、方案確定23、理論分析與方案論證2二、總體設(shè)計(jì)2三、單元電路(或軟件模塊)設(shè)計(jì)41、電源模塊設(shè)計(jì)42、繼電器模塊設(shè)計(jì)43、光控模塊設(shè)計(jì)54、溫控模塊設(shè)計(jì)55、功放模塊設(shè)計(jì)66、濕度檢測模塊設(shè)計(jì)6四、單元電路測試71、電源模塊測試72、繼電器模塊測試73、光控模塊測試84、溫控模塊測試8五、整體測試9六、結(jié)論11七、附錄111、整體軟件流程圖112、軟件程序代碼清單12八、 參考文獻(xiàn)25一、方案設(shè)計(jì)1、方案選擇方案一:采用msp430單片機(jī)作為控制芯片,通過lcd1602液晶

6、屏顯示基本信息。優(yōu)點(diǎn):msp430單片機(jī)具有低功耗和開發(fā)環(huán)境高效方便等優(yōu)點(diǎn),lcd1602液晶屏成本較低。缺點(diǎn):msp430性能不穩(wěn)定,運(yùn)算速度低,lcd1602液晶屏顯示信息量不能本設(shè)計(jì)滿足要求,并且不能顯示漢字。方案二:采用stc89c52rc單片機(jī)作為控制芯片,通過nokia5110液晶屏顯示基本信息。優(yōu)點(diǎn):stc89c52rc單片機(jī)具有成本低、編程操作簡單等優(yōu)點(diǎn),nokia5110液晶屏具有性價(jià)比高、色彩豐富等優(yōu)點(diǎn)。缺點(diǎn):nokia5110液晶屏屏幕太小,亮度不夠,不易查看信息參數(shù)。方案三:采用stc12c5a60s2單片機(jī)作為控制芯片,通過lcd12864液晶屏顯示基本信息。優(yōu)點(diǎn):s

7、tc12c5a60s2單片機(jī)具有成本較低、運(yùn)算速度快等優(yōu)點(diǎn),lcd12864液晶屏可以顯示更多字符,并且可以顯示漢字。缺點(diǎn):stc12c5a60s2單片機(jī)相關(guān)開發(fā)資料不夠完善,開發(fā)使用難度大、周期長。方案四:采用stm32f103zet6 arm處理器作為控制核心,利用tftlcd觸摸顯示屏顯示信息。 24個(gè)12vled超高亮節(jié)能燈作為光照補(bǔ)充模塊。ds18b20單線式數(shù)字溫度計(jì)作為溫度檢測模塊,傳回信息給arm處理器。采用 12v/5a開關(guān)電源將市電220v轉(zhuǎn)換為dc12v,利用lm2596對dc12v進(jìn)行降壓處理得到dc5v。采用光敏電阻對光照強(qiáng)度進(jìn)行檢測,土壤濕度計(jì)檢測模塊作為土壤濕度傳

8、感器檢測土壤濕度。采用電動噴霧器水泵(回流隔膜泵)12v作為噴水裝置。優(yōu)點(diǎn):stm32f103zet6 arm處理器具有運(yùn)行速度快、內(nèi)置flash存儲等優(yōu)點(diǎn),可運(yùn)行片上操作系統(tǒng),具有極其強(qiáng)大的擴(kuò)展功能。超高亮節(jié)能燈照明模塊亮度非常高并且低功耗。 12v/5a開關(guān)電源模塊具有方便、穩(wěn)定和可調(diào)等優(yōu)點(diǎn)。 12v穩(wěn)定版光控開關(guān)光敏電阻加繼電器模塊光線檢測開關(guān)具有靈敏、高效和穩(wěn)定等優(yōu)點(diǎn)。水泵具有體積小、電流小、使用壽命長、物美價(jià)廉等優(yōu)點(diǎn),泵體與電機(jī)分離,泵體內(nèi)無機(jī)械部件、無磨損。水泵自帶釋壓溢流回路裝置,不會憋爆水管和損壞水泵。 缺點(diǎn):stm32f103zet6 arm微處理器成本較高,嵌入式系統(tǒng)的開發(fā)

9、和應(yīng)用難度較大。2、方案確定通過對比四種方案的優(yōu)缺點(diǎn),以及可操作性,考慮到題目要求、工作條件,方案四優(yōu)于其他幾種方案。stm32f103zet6 arm處理器可以更好的滿足控制要求,功能強(qiáng)大,并可以設(shè)計(jì)友好的人機(jī)交互界面。tftlcd觸摸屏具有大屏、顯示信息多、方便實(shí)現(xiàn)人機(jī)交互等優(yōu)越性。方案四能使系統(tǒng)有較好的穩(wěn)定性,充分體現(xiàn)了模塊化設(shè)計(jì)的要求,并且這些芯片及器件均為通用器件,在市場上較常見,價(jià)格也低廉,樣品制作成功的可能性比較大,所以本設(shè)計(jì)采用方案四。3、理論分析與方案論證本設(shè)計(jì)采用方案四。通過stm32f103zet6 arm處理器控制tftlcd觸摸屏實(shí)現(xiàn)溫度和濕度等信息的顯示。通過12v

10、/5a開關(guān)電源給系統(tǒng)供電。通過加熱片加熱空氣來提高溫度。通過風(fēng)扇控制系統(tǒng)通風(fēng)降溫。通過led燈模塊補(bǔ)充光照強(qiáng)度。通過水泵噴水霧控制土壤干濕度。二、總體設(shè)計(jì)本系統(tǒng)的硬件結(jié)構(gòu)圖如圖1所示。12v/5a開關(guān)電源模塊將ac220v轉(zhuǎn)化為dc12v,再經(jīng)過lm2596降壓芯片獲得dc5v,以此提供5v/12v直流電以滿足處理器和外圍設(shè)備的供電需要。12v光控開關(guān),由光敏電阻對光照強(qiáng)度進(jìn)行檢測,通過由lm393構(gòu)成的電壓比較電路獲得繼電器的觸發(fā)信號,由繼電器的常開觸點(diǎn)控制12v光照補(bǔ)充模塊(由24個(gè)超高亮led節(jié)能燈組成)。當(dāng)沒有光強(qiáng)或光照強(qiáng)度不足時(shí),繼電器經(jīng)觸發(fā)信號觸發(fā),其常開觸點(diǎn)閉合,控制12v光照補(bǔ)

11、充模塊工作,超高亮led節(jié)能燈通電發(fā)光,為植物提供充足的光照。當(dāng)光照強(qiáng)度充足時(shí),繼電器常開觸點(diǎn)斷開,光照補(bǔ)充模塊斷電熄滅。土壤濕度檢測模塊作為土壤濕度傳感器檢測土壤濕度。當(dāng)土壤濕度傳感器檢測到土壤的濕度低于設(shè)定閾值時(shí),將土壤濕度信息傳給stm32f103zet6 arm處理器,此時(shí)處理器通過繼電器控制電動噴霧水泵抽水,并且通過噴頭噴出水霧。當(dāng)土壤濕度傳感器檢測到的土壤濕度高于或者達(dá)到設(shè)定閾值時(shí),此時(shí)處理器通過繼電器控制電動噴霧器水泵停止工作。ds18b20單線式數(shù)字溫度傳感器作為溫度檢測裝置。當(dāng)感應(yīng)到的溫度低于設(shè)定閾值時(shí),處理器通過繼電器控制加熱片給空氣加熱。當(dāng)感應(yīng)到溫度高于設(shè)定閾值時(shí),處理器

12、通過繼電器控制風(fēng)扇給通風(fēng)降溫。本系統(tǒng)共有2個(gè)風(fēng)扇,一個(gè)風(fēng)扇逆時(shí)針轉(zhuǎn)控制進(jìn)風(fēng),一個(gè)風(fēng)扇順時(shí)針轉(zhuǎn)控制出風(fēng),從而實(shí)現(xiàn)空氣流動。圖1 系統(tǒng)的硬件結(jié)構(gòu)圖三、單元電路(或軟件模塊)設(shè)計(jì)1、電源模塊設(shè)計(jì)由12v/5a開關(guān)電源和lm2596降壓電路組成。因?yàn)樗闷骷际怯?5v和+12v供電,所以降壓模塊選擇降壓到+5v和+12v電壓,開關(guān)電源將220v交流電轉(zhuǎn)化為12v直流電,lm2596降壓模塊將12v直流電轉(zhuǎn)化為5v直流電。如圖2所示。圖2 電源模塊設(shè)計(jì)圖2、繼電器模塊設(shè)計(jì)繼電器模塊共有3個(gè)繼電器其中2個(gè)繼電器控制電壓為+12v,一個(gè)為+5v,觸發(fā)方式設(shè)置為低電平觸發(fā)。繼電器電路圖如圖3所示。其中繼電器

13、選取dc5v繼電器,控制+12電壓的r2阻值為2.3k,控制+5v電壓的r2阻值為910,r1阻值相同為4.7k,二極管類型為1n4148,三極管類型為pnp型硅三極管s8550。圖3 繼電器電路設(shè)計(jì)圖3、光控模塊設(shè)計(jì)光控模塊由光敏電阻、電壓比較器lm393、電磁繼電器和led節(jié)能燈組成。光敏電阻負(fù)責(zé)檢測光照強(qiáng)度,并將檢測到的光強(qiáng)電阻信號通過特定的電路轉(zhuǎn)化為電壓信號,電壓比較器lm393負(fù)責(zé)將此電壓信號與預(yù)設(shè)電壓進(jìn)行比較,并由此產(chǎn)生繼電器的觸發(fā)信號,從而控制led節(jié)能燈的導(dǎo)通與關(guān)斷。其結(jié)構(gòu)如圖4所示。圖4 光控模塊設(shè)計(jì)圖4、溫控模塊設(shè)計(jì)溫控模塊由ds18b20溫度傳感器、繼電器、12v/20w

14、加熱片和兩個(gè)12v/5w通風(fēng)扇組成,通過tftlcd觸摸屏顯示溫度信息。當(dāng)ds18b20檢測到的溫度低于設(shè)定閾值,stm32f103zet6 arm處理器通過繼電器控制加熱片工作,直至溫度升高到設(shè)定閾值;當(dāng)ds18b20檢測到的溫度高于設(shè)定閾值,stm32f103zet6 arm處理器通過繼電器控制通風(fēng)扇工作,直至溫度降低到設(shè)定閾值。溫控模塊整體結(jié)構(gòu)如圖5所示。圖5 溫控模塊設(shè)計(jì)圖5、功放模塊設(shè)計(jì)功放模塊由兩片tda2030功放芯片組成,構(gòu)成雙聲道功放電路,驅(qū)動兩個(gè)0.5w/8的喇叭進(jìn)行音樂播放。功放模塊整體結(jié)構(gòu)如圖6所示。圖6 功放模塊設(shè)計(jì)圖6、濕度檢測模塊設(shè)計(jì)圖6 濕度檢測模塊設(shè)計(jì)圖如圖7

15、所示,濕度檢測模塊由土壤探頭、lm393比較電路和指示燈構(gòu)成。土壤探頭測得的漏電流大小經(jīng)過電阻變?yōu)殡妷盒盘?,通過lm393進(jìn)行電壓比較,產(chǎn)生數(shù)字信號,進(jìn)而被處理器利用進(jìn)行濕度的控制。四、單元電路測試1、電源模塊測試電源模塊可以正常工作,提供穩(wěn)定的電壓,檢測結(jié)果如圖8。圖8 電源模塊測試結(jié)果圖2、繼電器模塊測試?yán)^電器控制模塊可以正常工作,工作時(shí)綠色指示燈亮表示該繼電器正常工作,檢測結(jié)果如圖9。 圖9 繼電器模塊測試結(jié)果圖3、光控模塊測試當(dāng)沒有光照或光照強(qiáng)度不足時(shí),光控開關(guān)閉合,led光照模塊工作,發(fā)出亮光,檢測結(jié)果如圖10所示。圖10 光控模塊測試結(jié)果圖4、溫控模塊測試溫控模塊可以測試溫度,并使

16、lcd12864液晶屏正常顯示溫度數(shù)值,檢測結(jié)果如圖11所示。 圖11 溫控模塊檢測圖五、整體測試系統(tǒng)整體實(shí)物圖如圖12所示,所有模塊均能穩(wěn)定工作。當(dāng)沒有光強(qiáng)或光照強(qiáng)度不足時(shí),繼電器經(jīng)觸發(fā)信號觸發(fā),其常開觸點(diǎn)閉合,控制12v光照補(bǔ)充模塊工作,超高亮led節(jié)能燈通電發(fā)光,為植物提供充足的光照。當(dāng)光照強(qiáng)度充足時(shí),繼電器常開觸點(diǎn)斷開,光照補(bǔ)充模塊斷電熄滅。土壤濕度檢測模塊作為土壤濕度傳感器檢測土壤濕度。當(dāng)土壤濕度傳感器檢測到土壤的濕度低于設(shè)定閾值時(shí),將土壤濕度信息傳給stm32f103zet6 arm處理器,此時(shí)處理器通過繼電器控制電動噴霧水泵抽水,并且通過噴頭噴出水霧。當(dāng)土壤濕度傳感器檢測到的土壤

17、濕度高于或者達(dá)到設(shè)定閾值時(shí),此時(shí)處理器通過繼電器控制電動噴霧器水泵停止工作。ds18b20單線式數(shù)字溫度傳感器作為溫度檢測裝置。當(dāng)感應(yīng)到的溫度低于設(shè)定閾值時(shí),處理器通過繼電器控制加熱片給空氣加熱。當(dāng)感應(yīng)到溫度高于設(shè)定閾值時(shí),處理器通過繼電器控制風(fēng)扇給通風(fēng)降溫。圖12 整體實(shí)物圖圖13 開機(jī)界面圖六、結(jié)論本系統(tǒng)是利用stm32f103zet6 arm處理器采用程序設(shè)計(jì)方法控制加熱片、風(fēng)扇和水泵等電子器件,再通過溫度傳感器ds18b20感應(yīng)溫度,加熱片、風(fēng)扇控制溫度,通過水泵噴水控制土壤干濕度,最終通過tftlcd觸摸屏顯示出溫度、干濕度等信息。智能生態(tài)系統(tǒng)處于溫度不適應(yīng)的情況,溫度較低或較高時(shí),

18、可以通過自動調(diào)節(jié),實(shí)時(shí)監(jiān)控環(huán)境溫度,實(shí)現(xiàn)環(huán)境溫度最優(yōu)化。同時(shí),也可對土壤干濕度做出準(zhǔn)確監(jiān)控,達(dá)到調(diào)節(jié)土壤環(huán)境的目的。光照控制保障了充足的光強(qiáng),更利于生物生長。通過軟件仿真,基本達(dá)到預(yù)期的設(shè)計(jì)目標(biāo)。七、附錄1、整體軟件流程圖圖14 整體軟件流程圖2、軟件程序代碼清單#include "includes.h" #include "stdlib.h"#include "exfuns.h"#include "listbox.h"#include "t9input.h"#include "spb

19、.h"#include "ebook.h"#include "picviewer.h"#include "mp3player.h"#include "settings.h"#include "calendar.h"#include "paint.h" #include "radio.h" #include "recoder.h" #include "camera.h"#include "mmc_s

20、d.h"#include "huapen.h" /ucosii任務(wù)設(shè)置/start 任務(wù)/設(shè)置任務(wù)優(yōu)先級#define start_task_prio 10 /開始任務(wù)的優(yōu)先級設(shè)置為最低/設(shè)置任務(wù)堆棧大小#define start_stk_size 64/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk start_task_stkstart_stk_size;/任務(wù)函數(shù)void start_task(void *pdata); /串口任務(wù)/設(shè)置任務(wù)優(yōu)先級#define usart_task_prio 7 /設(shè)置任務(wù)堆棧大小#define usa

21、rt_stk_size 64/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk usart_task_stkusart_stk_size;/任務(wù)函數(shù)void usart_task(void *pdata); /主任務(wù)/設(shè)置任務(wù)優(yōu)先級#define main_task_prio 6 /設(shè)置任務(wù)堆棧大小#define main_stk_size 512/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk main_task_stkmain_stk_size;/任務(wù)函數(shù)void main_task(void *pdata);/串口監(jiān)視任務(wù)/設(shè)置任務(wù)優(yōu)先級#defin

22、e watch_task_prio 3 /設(shè)置任務(wù)堆棧大小#define watch_stk_size 128/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk watch_task_stkwatch_stk_size;/任務(wù)函數(shù)void watch_task(void *pdata); /mp3任務(wù)/設(shè)置任務(wù)優(yōu)先級#define music_play_task_prio 2 /設(shè)置任務(wù)堆棧大小#define music_play_stk_size 256/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk music_play_task_stkmusic_p

23、lay_stk_size;/任務(wù)函數(shù)void music_play_task(void *pdata);/ /外部內(nèi)存測試(最大支持1m字節(jié)內(nèi)存測試)/返回值:0,成功;1,失敗.u8 system_exsram_test(u16 x,u16 y) u32 i=0; u16 temp=0; u16 sval=0;/在地址0讀到的數(shù)據(jù) lcd_showstring(x,y,239,y+12,12,"ex memory test: 0kb"); /每隔1k字節(jié),寫入一個(gè)數(shù)據(jù),總共寫入1024個(gè)數(shù)據(jù),剛好是1m字節(jié)for(i=0;i<1024*1024;i+=1024)fs

24、mc_sram_writebuffer(u8*)&temp,i,2);temp+;/依次讀出之前寫入的數(shù)據(jù),進(jìn)行校驗(yàn) for(i=0;i<1024*1024;i+=1024) fsmc_sram_readbuffer(u8*)&temp,i,2);if(i=0)sval=temp; else if(temp<=sval)break;/后面讀出的數(shù)據(jù)一定要比第一次讀到的數(shù)據(jù)大. lcd_showxnum(x+15*6,y,(u16)(temp-sval+1),4,12,0);/顯示內(nèi)存容量 if(i>=1024*1024)lcd_showxnum(x+15*6,

25、y,i/1024,4,12,0);/顯示內(nèi)存值 return 0;/內(nèi)存正常,成功return 1;/失敗/顯示錯(cuò)誤信息/x,y:坐標(biāo).err:錯(cuò)誤信息void system_error_show(u16 x,u16 y,u8*err)point_color=red; while(1)lcd_showstring(x,y,240,320,12,err);delay_ms(400);lcd_fill(x,y,240,y+18,black);delay_ms(100);led0=!led0; /系統(tǒng)初始化void system_init(void) const u8 okoffset=162; u

26、16 ypos=0;u16 j=0;u16 temp=0;u8 res;u32 dtsize,dfsize;u8 *stastr=0;u8 *version=0; u8 verbuf12;nvic_configuration();delay_init(72);/延時(shí)初始化 uart_init(9600); /串口1初始化lcd_init();/lcd初始化 lcd_pwm_init();/初始化lcd背光亮度lcd_blpwm_val=200; /設(shè)置為最亮 led_init(); /led初始化 key_init();/按鍵初始化 fsmc_sram_init();/初始化sramgui_i

27、nit();adc_init(); /adc初始化,內(nèi)部溫度傳感器beep_init(); at24cxx_init(); audiosel_init();audiosel_set(0); usmart_dev.init(72); mem_init(sramin);/內(nèi)部內(nèi)存池初始化version=mymalloc(sramin,31);/申請31個(gè)字節(jié)內(nèi)存reinit:/重新初始化lcd_clear(black);/黑屏point_color=white;back_color=black;j=0; /顯示版權(quán)信息ypos=2;app_show_mono_icos(5,ypos,18,24,(

28、u8*)app_alientek_ico,yellow,black);lcd_showstring(28,ypos+12*j+,240,320,12, "intelligent ecosystem");/智能生態(tài)系統(tǒng)lcd_showstring(28,ypos+12*j+,240,320,12,"ciee of jilin university"); lcd_showstring(28,ypos+12*j+,240,320,12,"created by our team");sprintf(char*)verbuf,"lcd

29、 id:%04x",lcddev.id);/lcd id打印到verbuf里面lcd_showstring(5,ypos+12*j+,240,320,12, verbuf);/顯示lcd id /開始硬件檢測初始化lcd_showstring(5,ypos+12*j+,240,320,12, "cpu:stm32f103zet6 72mhz");lcd_showstring(5,ypos+12*j+,240,320,12, "flash:512kb sram:64kb");if(system_exsram_test(5,ypos+12*j)sy

30、stem_error_show(5,ypos+12*j+,"ex memory error!");lcd_showstring(5+okoffset,ypos+12*j+,240,320,12,"ok"); mem_init(sramex);/外部內(nèi)存池的初始化必須放到內(nèi)存檢測之后! spi_flash_init();/w25qxx初始化 switch(spi_flash_type)case w25q80:temp=1*1024;break;case w25q16:temp=2*1024;break;case w25q32:temp=4*1024;bre

31、ak;case w25q64:temp=8*1024;break;default :system_error_show(5,ypos+12*j+,"ex flash error!");break;lcd_showstring(5,ypos+12*j,240,320,12, "ex flash: kb"); lcd_showxnum(5+9*6,ypos+12*j,temp,4,12,0);/顯示flash大小 lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); lcd_sho

32、wstring(5,ypos+12*j,240,320,12, "fatfs check.");/fatfs檢測 if(exfuns_init()system_error_show(5,ypos+12*(j+1),"fatfs memory error!");/內(nèi)存分配 f_mount(0,fs0); /掛載sd卡 f_mount(1,fs1); /掛載flash.lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /sd卡檢測lcd_showstring(5,ypos+12

33、*j,240,320,12, "sd card: mb");/fatfs檢測temp=0; dotemp+; res=exf_getfree("0:",&dtsize,&dfsize);/得到sd卡剩余容量和總?cè)萘縟elay_ms(200); while(res&&temp<5);/連續(xù)檢測5次 if(res=0)/得到容量正常temp=dtsize>>10;/單位轉(zhuǎn)換為mbstastr="ok" else temp=0;/出錯(cuò)了,單位為0stastr="error"

34、; lcd_showxnum(5+8*6,ypos+12*j,temp,5,12,0);/顯示sd卡容量大小lcd_showstring(5+okoffset,ypos+12*j+,240,320,12,stastr);/sd卡狀態(tài) /w25q64檢測,如果不存在文件系統(tǒng),則先創(chuàng)建.temp=0; dotemp+; res=exf_getfree("1:",&dtsize,&dfsize);/得到flash剩余容量和總?cè)萘縟elay_ms(200); while(res&&temp<20);/連續(xù)檢測20次 if(res=0x0d)/文

35、件系統(tǒng)不存在lcd_showstring(5,ypos+12*j,240,320,12, "flash disk formatting.");/格式化flashres=f_mkfs(1,1,4096);/格式化flash,1,盤符;1,不需要引導(dǎo)區(qū),8個(gè)扇區(qū)為1個(gè)簇if(res=0)lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok");/標(biāo)志格式化成功 res=exf_getfree("1:",&dtsize,&dfsize);/重新獲取容量 if(res=0)/

36、得到flash卡剩余容量和總?cè)萘縧cd_showstring(5,ypos+12*j,240,320,12, "flash disk: kb");/fatfs檢測 temp=dtsize; else system_error_show(5,ypos+12*(j+1),"flash fat error!");/flash 文件系統(tǒng)錯(cuò)誤 lcd_showxnum(5+11*6,ypos+12*j,temp,4,12,0);/顯示sd卡容量大小lcd_showstring(5+okoffset,ypos+12*j+,240,320,12,"ok&qu

37、ot;);/sd卡狀態(tài) /tpad檢測 lcd_showstring(5,ypos+12*j,240,320,12, "tpad check."); if(tpad_init()system_error_show(5,ypos+12*(j+1),"tpad error!");/觸摸按鍵檢測else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /rtc檢測 lcd_showstring(5,ypos+12*j,240,320,12, "rtc check.&q

38、uot;); if(rtc_init()system_error_show(5,ypos+12*(j+1),"rtc error!");/rtc檢測else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /adxl345檢測 lcd_showstring(5,ypos+12*j,240,320,12, "adxl345 check."); if(adxl345_init()system_error_show(5,ypos+12*(j+1),"adxl345 e

39、rror!");/adxl345檢測else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /24c02檢測 lcd_showstring(5,ypos+12*j,240,320,12, "24c02 check."); if(at24cxx_check()system_error_show(5,ypos+12*(j+1),"24c02 error!");/24c02檢測else lcd_showstring(5+okoffset,ypos+12*j+,240

40、,320,12, "ok"); /rda5820檢測 lcd_showstring(5,ypos+12*j,240,320,12, "rda5820 check."); if(rda5820_init()system_error_show(5,ypos+12*(j+1),"rda5820 error!");/rda5820檢測else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /vs1053檢測 lcd_showstring(5,ypos+12*

41、j,240,320,12, "vs1053 check."); vs_init();/初始化vs1053接口vs_sine_test();/正弦測試beep=0; if(vs_ram_test()!=0x83ff)system_error_show(5,ypos+12*(j+1),"vs1053 error!");/ram測試else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /字庫檢測 lcd_showstring(5,ypos+12*j,240,320,12,

42、"font check.");res=key_scan(1);/檢測按鍵 while(font_init()|res=2)/檢測字體,如果字體不存在/按下key1,則更新字庫res=0;/按鍵無效 if(update_font(5,ypos+12*j,12,0)!=0)/從sd卡更新 if(update_font(5,ypos+12*j,12,1)!=0)/從flash更新system_error_show(5,ypos+12*(j+1),"font error!");/字體錯(cuò)誤 lcd_fill(5,ypos+12*j,240,ypos+12*(j+1

43、),black);/填充底色 lcd_showstring(5,ypos+12*j,240,320,12, "font check."); lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok");/字庫檢測ok/系統(tǒng)文件檢測 lcd_showstring(5,ypos+12*j,240,320,12, "system files check."); while(app_system_file_check()/系統(tǒng)文件檢測lcd_fill(5,ypos+12*j,240,ypos+1

44、2*(j+1),black);/填充底色 lcd_showstring(5,ypos+12*j,6*8,12,12, "updating"); /顯示updatingapp_boot_cpdmsg_set(5,ypos+12*j);/設(shè)置到坐標(biāo)if(app_system_update(app_boot_cpdmsg) /更新出錯(cuò)system_error_show(5,ypos+12*(j+1),"system file error!");lcd_fill(5,ypos+12*j,240,ypos+12*(j+1),black);/填充底色 lcd_sho

45、wstring(5,ypos+12*j,240,320,12, "system files check."); if(app_system_file_check()/更新了一次,再檢測,如果還有不全,說明sd卡文件就不全!system_error_show(5,ypos+12*(j+1),"system file lost!");else break;lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); /觸摸屏檢測 lcd_showstring(5,ypos+12*j,240

46、,320,12, "touch check."); res=key_scan(1);/檢測按鍵 if(tp_init()|res=1)/有更新/按下了key0,執(zhí)行校準(zhǔn) if(res=1)tp_adjust();res=0;/按鍵無效goto reinit;/重新開始初始化lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok");/觸摸屏檢測ok /系統(tǒng)參數(shù)加載 lcd_showstring(5,ypos+12*j,240,320,12, "system parameter load.&quo

47、t;); if(app_system_parameter_init()system_error_show(5,ypos+12*(j+1),"parameter load error!");/參數(shù)加載else lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, "ok"); lcd_showstring(5,ypos+12*j,240,320,12, "system starting."); /蜂鳴器短叫,提示正常啟動beep=1;delay_ms(100);beep=0;myfree(sr

48、amin,version); void cold_play(void)fan=0;/啟動風(fēng)扇jiare=1;/加熱器工作delay_ms(2000);delay_ms(2000);/工作4秒fan=1;/停止風(fēng)扇void heat_play(void)fan=1;/啟動風(fēng)扇jiare=0;/加熱器工作delay_ms(2000);delay_ms(2000);/工作4秒fan=1;/停止風(fēng)扇jiare=1;/加熱器停止工作void water_play(void)shuibeng=0;/啟動水泵delay_ms(2000);delay_ms(2000);/工作4秒shuibeng=1;/停止水

49、泵/main函數(shù) int main(void) fan_init();/初始化 shuibeng_init(); jiare_init(); shidu_init();system_init();/系統(tǒng)初始化 osinit(); ostaskcreate(start_task,(void*)0,(os_stk*)&start_task_stkstart_stk_size-1,start_task_prio );/創(chuàng)建起始任務(wù)osstart(); /開始任務(wù)void start_task(void *pdata) os_cpu_sr cpu_sr=0;pdata = pdata; oss

50、tatinit();/初始化統(tǒng)計(jì)任務(wù).這里會延時(shí)1秒鐘左右 app_srand(ostime);gui_init();/gui初始化 piclib_init();/piclib初始化os_enter_critical();/進(jìn)入臨界區(qū)(無法被中斷打斷) ostaskcreate(main_task,(void*)0,(os_stk*)&main_task_stkmain_stk_size-1,main_task_prio); ostaskcreate(usart_task,(void*)0,(os_stk*)&usart_task_stkusart_stk_size-1,usa

51、rt_task_prio); ostaskcreate(music_play_task,(void*)0,(os_stk*)&music_play_task_stkmusic_play_stk_size-1,music_play_task_prio); ostaskcreate(watch_task,(void*)0,(os_stk*)&watch_task_stkwatch_stk_size-1,watch_task_prio); ostasksuspend(start_task_prio);/掛起起始任務(wù).os_exit_critical();/退出臨界區(qū)(可以被中斷打斷)

52、/主任務(wù)void main_task(void *pdata)u8 selx;if(lcddev.id=0x6804) /強(qiáng)制設(shè)置屏幕分辨率為320*240.以支持3.5寸大屏lcddev.width=240;lcddev.height=320; spb_init(); /spb初始化while(1)selx=spb_move_chk();system_task_return=0;/清退出標(biāo)志switch(selx)/發(fā)生了雙擊事件case 0:/降溫if(slcd.frame=0)cold_play(); else cold_play();slcd.show(slcd.pos);/顯示主界面 break;case 1:/加熱if(slcd.frame=0)heat_play(); else heat_play(); slcd

溫馨提示

  • 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

提交評論