何雅琴??張飛??仲潘
摘要:設(shè)計一種基于實時操作系統(tǒng)uCOS-II的空氣質(zhì)量檢測系統(tǒng),該系統(tǒng)能檢測空氣的溫度、濕度和固態(tài)顆粒物濃度。介紹了uCOS-II的移植方法,并給出了系統(tǒng)硬件和軟件實現(xiàn)方法。
關(guān)鍵詞關(guān)鍵詞:空氣質(zhì)量;實時操作系統(tǒng);固態(tài)顆粒物
DOIDOI:10.11907/rjdk.143901
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2015)002011902
基金項目基金項目:江蘇省高校優(yōu)秀中青年教師和校長境外研修計劃項目(2014);2014年江蘇省高等學(xué)校大學(xué)生實踐創(chuàng)新訓(xùn)練計劃項目(2014131140011Y)
作者簡介作者簡介:何雅琴(1981-),女,江蘇常州人,碩士,常州機電職業(yè)技術(shù)學(xué)院信息工程系講師,研究方向為計算機網(wǎng)絡(luò);張飛(1981-),男,江蘇常州人,碩士,常州機電職業(yè)技術(shù)學(xué)院電氣工程系講師,研究方向為嵌入式系統(tǒng);仲潘(1993-),男,江蘇徐州人,常州機電職業(yè)技術(shù)學(xué)院信息工程系學(xué)生,研究方向為計算機網(wǎng)絡(luò)技術(shù)。
1系統(tǒng)框架
本文設(shè)計了一種基于uCOS-II的空氣質(zhì)量檢測系統(tǒng)。該系統(tǒng)具有以下主要功能:①能夠檢測空氣的溫度、濕度以及固態(tài)顆粒物濃度;②能通過液晶顯示器顯示檢測結(jié)果;③檢測數(shù)據(jù)可以通過RJ45接口(TCP/IP或UDP協(xié)議)傳送給PC機;④相關(guān)檢測參數(shù)可設(shè)置,并具備聲光報警功能。系統(tǒng)框架如圖1所示。
圖1系統(tǒng)框架
2主要硬件設(shè)計
本設(shè)計控制器采用宏晶科技有限公司的STC90C58AD芯片。STC90C58AD具有4.2k字節(jié)RAM和32k字節(jié)ROM,完全能滿足uCOS-II移植對存儲容量的要求。該處理器還具有1路串行通訊口、3個定時計數(shù)器、28k字節(jié)EEPROM、8路10位高速ADC、39個I/O引腳等多種硬件資源[1],能滿足系統(tǒng)設(shè)計要求。
本系統(tǒng)分別采用粉塵和溫濕度傳感器來檢測空氣的固態(tài)顆粒濃度、溫度和濕度。粉塵傳感器采用GP2Y1010 AU0F光學(xué)空氣質(zhì)量傳感器,該傳感器體積小,內(nèi)置氣流發(fā)生器,可以自行吸入空氣,支持5V電源,可以檢測出0.8μm以上的微小顆粒物。溫濕度檢測采用SHT11集成式傳感器,該傳感器芯片集成了一個電容性聚合體測濕敏感元件和一個用能隙材料制成的測溫元件。濕度輸出分辨率為14位,溫度輸出分辨率為12位。SHT11采用工業(yè)標準的I2C接口與CPU通訊。SHT11與CPU接口只需要連接DATA(數(shù)據(jù))和SCK(時鐘)兩個引腳。GP2Y1010AU0F、SHT11的接口電路如圖2所示。
圖2GP2Y1010AU0F、SHT11接口電路
聲光報警電路采用直流蜂鳴器、發(fā)光二極管,鍵盤電路采用了獨立式按鈕。接口電路如圖3所示。
圖3聲光報警和鍵盤電路
電源模塊采用三端集成穩(wěn)壓電源芯片LM7805,該芯片內(nèi)含過流、過熱和過載保護電路,安裝散熱片后,輸出電流可以達到 1A。電路原理如圖4所示。
圖4電源模塊電路
通信模塊采用美信公司的MAX232芯片,使用正5V電源供電,采用DB9與以太網(wǎng)串口數(shù)據(jù)轉(zhuǎn)換模塊(ZNE-10T)連接。電路原理如圖5所示。
圖5通訊模塊電路
采用128*64黑白液晶(LM3033DFW-0B-1),該液晶采用ST7920控制器。液晶模塊原理如圖6所示。
圖6液晶模塊原理
3軟件設(shè)計
3.1uC/OS-II介紹
uC/OS-II是一款嵌入式實時操作系統(tǒng),其核心代碼用C語言編寫,只有底層函數(shù)需要針對不同的CPU采用匯編語言編寫,可以管理64個任務(wù),可移植到目前大多數(shù)CPU上[2]。uC/OS-II工作時,包括休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)、被中斷態(tài)等5種狀態(tài)[3]。
3.2uC/OS-II移植
uC/OS-II移植需注意4個環(huán)節(jié)。①函數(shù)可重入性。可重入性和編譯器有關(guān),利用KEIL編寫函數(shù)時,在函數(shù)后加reentrant 關(guān)鍵字即可滿足要求;②存儲器大小。STC90C58AD具有4.2k字節(jié)RAM和32k字節(jié)ROM,完全能夠滿足uC/OS-II的移植要求;③時鐘節(jié)拍。STC90C58AD和其它51單片機一樣,具備定時計數(shù)器,可以用來產(chǎn)生時鐘節(jié)拍;④任務(wù)堆棧。本系統(tǒng)功能程序?qū)AM的需求大,可以把任務(wù)堆棧設(shè)計在4.2k字節(jié)RAM中。
uC/OS-II移植過程主要包括在OS_CPU.H中設(shè)置堆棧增長方向、定義數(shù)據(jù)類型、3個宏的聲明,在OS_CPU_C.C文件中編寫6個函數(shù)(可以用C語言編寫),在OS_CPU_A.S文件中編寫任務(wù)切換等函數(shù)(匯編語言編寫)[4]。
3.3任務(wù)設(shè)計和資源分配
uC/OS-II是一個實時多任務(wù)操作系統(tǒng),所以將系統(tǒng)軟件分割成多個任務(wù),每個任務(wù)負責(zé)完成部分工作,系統(tǒng)功能由多個任務(wù)協(xié)作完成。任務(wù)分配方案將直接影響軟件編寫效率和性能。本系統(tǒng)任務(wù)分配如表1所示。
表1任務(wù)分配
任務(wù)名稱[][]任務(wù)名稱
通信任務(wù)[]txtask()[]報警任務(wù)[]bjtask()
檢測任務(wù)[]jctask()[]鍵盤任務(wù)[]jptask()
顯示任務(wù)[]xstask()[]時鐘任務(wù)[]sztask()
為協(xié)調(diào)任務(wù)運行,系統(tǒng)用OSSemCreate()函數(shù)建立了semtx、semjc、semxs、sembj、semsz共5個信號量[5]。
系統(tǒng)開機后首先執(zhí)行初始化程序?qū)ο到y(tǒng)進行初始化,建立各個任務(wù)和信號量。然后運行以上6個任務(wù),通信任務(wù)、檢測任務(wù)、顯示任務(wù)、報警任務(wù)、時鐘任務(wù)運行后均處于等待信號量模式。當鍵盤任務(wù)掃描到有按鍵信號時,根據(jù)工作模式和不同按鍵,分別向通信任務(wù)、檢測任務(wù)、時鐘任務(wù)發(fā)送不同的信號量。報警任務(wù)和顯示任務(wù)的信號量由檢測任務(wù)發(fā)送。任務(wù)運行過程如圖7所示,圖中箭頭代表信號量發(fā)送方向。
圖7任務(wù)運行過程
3.4任務(wù)功能
與前后臺系統(tǒng)不同,本系統(tǒng)功能由各個任務(wù)相互配合完成,每個任務(wù)完成系統(tǒng)部分功能。各任務(wù)功能如表2所示。