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

下載本文檔

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

文檔簡介

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

2、動化專業(yè),年級:2011級,教學(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è)的一個重要組成部分。其中重要一環(huán)就是對農(nóng)業(yè)生產(chǎn)環(huán)境的一些重要參數(shù)進(jìn)行檢測和控制。例如,空氣的溫度、濕度和土壤的含水量等。在農(nóng)業(yè)種植問題中,環(huán)境與生物的生長、發(fā)育和能量交換密切相關(guān),進(jìn)行環(huán)境測控是實現(xiàn)生產(chǎn)管理自動化、科學(xué)化的基本保證,通過對監(jiān)測數(shù)據(jù)的分析,結(jié)合作物生長發(fā)育規(guī)律,控制環(huán)境條件,使作物達(dá)到優(yōu)質(zhì)、高產(chǎn)、高效的栽培目的。國外的智

3、能化生態(tài)系統(tǒng)設(shè)施己經(jīng)發(fā)展到比較完備的程度,并形成了一定的標(biāo)準(zhǔn),但是價格非常昂貴,并且與我國氣候特點不相適應(yīng)。而當(dāng)今國內(nèi)大多數(shù)對大棚溫度、濕度的檢測與控制都采用人工管理,這樣有測控精度低、勞動強(qiáng)度大及由于測控不及時等弊端,容易造成不可彌補(bǔ)的損失,不但大大增加了成本,浪費了人力資源,而且很難達(dá)到預(yù)期的效果。因此,為了實現(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è)施的迅速增多,人們對其性能要求也越來越高,特

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

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

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

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

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

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

10、現(xiàn)溫度和濕度等信息的顯示。通過12v/5a開關(guān)電源給系統(tǒng)供電。通過加熱片加熱空氣來提高溫度。通過風(fēng)扇控制系統(tǒng)通風(fēng)降溫。通過led燈模塊補(bǔ)充光照強(qiáng)度。通過水泵噴水霧控制土壤干濕度。二、總體設(shè)計本系統(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ā)信號,由繼電器的常開觸點控制12v光照補(bǔ)充模塊(由24個超高亮led節(jié)能燈組成)。當(dāng)沒有光強(qiáng)或光照強(qiáng)度不足時,繼電器經(jīng)觸發(fā)信號觸

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

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

13、。繼電器電路圖如圖3所示。其中繼電器選取dc5v繼電器,控制+12電壓的r2阻值為2.3k,控制+5v電壓的r2阻值為910,r1阻值相同為4.7k,二極管類型為1n4148,三極管類型為pnp型硅三極管s8550。圖3 繼電器電路設(shè)計圖3、光控模塊設(shè)計光控模塊由光敏電阻、電壓比較器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è)計圖4、溫控模塊設(shè)計溫控模塊由ds18b2

14、0溫度傳感器、繼電器、12v/20w加熱片和兩個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è)計圖5、功放模塊設(shè)計功放模塊由兩片tda2030功放芯片組成,構(gòu)成雙聲道功放電路,驅(qū)動兩個0.5w/8的喇叭進(jìn)行音樂播放。功放模塊整體結(jié)構(gòu)如圖6所示。圖6 功放模塊設(shè)計圖6、濕度檢測模

15、塊設(shè)計圖6 濕度檢測模塊設(shè)計圖如圖7所示,濕度檢測模塊由土壤探頭、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)^電器控制模塊可以正常工作,工作時綠色指示燈亮表示該繼電器正常工作,檢測結(jié)果如圖9。 圖9 繼電器模塊測試結(jié)果圖3、光控模塊測試當(dāng)沒有光照或光照強(qiáng)度不足時,光控開關(guān)閉合,led光照模塊工作,發(fā)出亮光,檢測結(jié)果如圖10所示。圖10 光控模塊測試結(jié)果圖4、溫

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

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

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

19、p3player.h#include settings.h#include calendar.h#include paint.h #include radio.h #include recoder.h #include camera.h#include mmc_sd.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_tas

20、k_stkstart_stk_size;/任務(wù)函數(shù)void start_task(void *pdata); /串口任務(wù)/設(shè)置任務(wù)優(yōu)先級#define usart_task_prio 7 /設(shè)置任務(wù)堆棧大小#define usart_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/任

21、務(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)先級#define 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

22、_task_prio 2 /設(shè)置任務(wù)堆棧大小#define music_play_stk_size 256/任務(wù)堆棧,8字節(jié)對齊_align(8) static os_stk music_play_task_stkmusic_play_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

23、,239,y+12,12,ex memory test: 0kb); /每隔1k字節(jié),寫入一個數(shù)據(jù),總共寫入1024個數(shù)據(jù),剛好是1m字節(jié)for(i=0;i1024*1024;i+=1024)fsmc_sram_writebuffer(u8*)&temp,i,2);temp+;/依次讀出之前寫入的數(shù)據(jù),進(jìn)行校驗 for(i=0;i1024*1024;i+=1024) fsmc_sram_readbuffer(u8*)&temp,i,2);if(i=0)sval=temp; else if(temp=1024*1024)lcd_showxnum(x+15*6,y,i/1024,4,12,0);/

24、顯示內(nèi)存值 return 0;/內(nèi)存正常,成功return 1;/失敗/顯示錯誤信息/x,y:坐標(biāo).err:錯誤信息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; u16 ypos=0;u16 j=0;

25、u16 temp=0;u8 res;u32 dtsize,dfsize;u8 *stastr=0;u8 *version=0; u8 verbuf12;nvic_configuration();delay_init(72);/延時初始化 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_init();adc_init();

26、/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個字節(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,(u8*)app_alientek_i

27、co,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 id:%04x,lcddev.id);/lcd id打印到verbuf里面lcd_showstring(5,ypos+

28、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)system_error_show(5,ypos+12*j+,ex memory error!);lcd_showstring(5+okoffset,ypos+12*j+,240,32

29、0,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;break;case w25q64:temp=8*1024;break;default :system_error_show(5,ypos+12*j+,ex flash error!);break;lcd_showstring(5,y

30、pos+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_showstring(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); /掛

31、載sd卡 f_mount(1,fs1); /掛載flash.lcd_showstring(5+okoffset,ypos+12*j+,240,320,12, ok); /sd卡檢測lcd_showstring(5,ypos+12*j,240,320,12, sd card: mb);/fatfs檢測temp=0; dotemp+; res=exf_getfree(0:,&dtsize,&dfsize);/得到sd卡剩余容量和總?cè)萘縟elay_ms(200); while(res&temp10;/單位轉(zhuǎn)換為mbstastr=ok; else temp=0;/出錯了,單位為0stastr=erro

32、r; 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&temp20);/連續(xù)檢測20次 if(res=0x0d)/文件系統(tǒng)不存在lcd_showstring(5,ypos+12*j

33、,240,320,12, flash disk formatting.);/格式化flashres=f_mkfs(1,1,4096);/格式化flash,1,盤符;1,不需要引導(dǎo)區(qū),8個扇區(qū)為1個簇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)/得到flash卡剩余容量和總?cè)萘縧cd_showstring(5,ypos+12*j,240,320,12, flash disk: kb);/fatf

34、s檢測 temp=dtsize; else system_error_show(5,ypos+12*(j+1),flash fat error!);/flash 文件系統(tǒng)錯誤 lcd_showxnum(5+11*6,ypos+12*j,temp,4,12,0);/顯示sd卡容量大小lcd_showstring(5+okoffset,ypos+12*j+,240,320,12,ok);/sd卡狀態(tài) /tpad檢測 lcd_showstring(5,ypos+12*j,240,320,12, tpad check.); if(tpad_init()system_error_show(5,ypos+

35、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.); 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,y

36、pos+12*j,240,320,12, adxl345 check.); if(adxl345_init()system_error_show(5,ypos+12*(j+1),adxl345 error!);/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

37、!);/24c02檢測else lcd_showstring(5+okoffset,ypos+12*j+,240,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,

38、ypos+12*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, font check.);res=key_scan(1)

39、;/檢測按鍵 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!);/字體錯誤 lcd_fill(5,ypos+12*j,240,ypos+12*(j+1),black);/填充底色 lcd_showstring(5,ypos+12*j,240,320,12

40、, 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+12*(j+1),black);/填充底色 lcd_showstring(5,ypos+12*j,6*8,12,12, updating); /顯示updatingapp_boo

41、t_cpdmsg_set(5,ypos+12*j);/設(shè)置到坐標(biāo)if(app_system_update(app_boot_cpdmsg) /更新出錯system_error_show(5,ypos+12*(j+1),system file error!);lcd_fill(5,ypos+12*j,240,ypos+12*(j+1),black);/填充底色 lcd_showstring(5,ypos+12*j,240,320,12, system files check.); if(app_system_file_check()/更新了一次,再檢測,如果還有不全,說明sd卡文件就不全!sys

42、tem_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,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_showstrin

43、g(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.); 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,2

44、40,320,12, system starting.); /蜂鳴器短叫,提示正常啟動beep=1;delay_ms(100);beep=0;myfree(sramin,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 wa

45、ter_play(void)shuibeng=0;/啟動水泵delay_ms(2000);delay_ms(2000);/工作4秒shuibeng=1;/停止水泵/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ù)osstar

46、t(); /開始任務(wù)void start_task(void *pdata) os_cpu_sr cpu_sr=0;pdata = pdata; osstatinit();/初始化統(tǒng)計任務(wù).這里會延時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); ostaskcre

47、ate(usart_task,(void*)0,(os_stk*)&usart_task_stkusart_stk_size-1,usart_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

48、(start_task_prio);/掛起起始任務(wù).os_exit_critical();/退出臨界區(qū)(可以被中斷打斷)/主任務(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.show

溫馨提示

  • 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

提交評論