Small RTOS51實(shí)現(xiàn)基于8位單片機(jī)的溫控器設(shè)計(jì)
1 嵌入式實(shí)時(shí)操作系統(tǒng)Small RTOS51簡(jiǎn)介
嵌入式系統(tǒng)已成為當(dāng)今的熱門話題之一,從消費(fèi)類電子產(chǎn)品到各種工業(yè)設(shè)備,嵌入式系統(tǒng)已滲透到日常生活的各個(gè)角落。對(duì)于嵌人式系統(tǒng),一個(gè)重要的特征是實(shí)時(shí)性,即在確定的時(shí)間內(nèi)完成規(guī)定的功能,并能對(duì)外部異步事件做出正確響應(yīng)。確保系統(tǒng)的實(shí)時(shí)性,需要軟硬件配合來完成,首先必須保證硬件處理速度滿足實(shí)時(shí)要求,而對(duì)于軟件,就是采用與之相適應(yīng)的嵌入式實(shí)時(shí)操作系統(tǒng)(Embedded Real_TimeOperating System,ERTOS)。
采用嵌入式實(shí)時(shí)操作系統(tǒng)(ERTOS),能夠保證系統(tǒng)中任務(wù)切換的實(shí)時(shí)性,事件響應(yīng)時(shí)間的確定性及系統(tǒng)的高可靠性,同時(shí),ERTOS將用戶應(yīng)用程序看成是其上運(yùn)行的多個(gè)任務(wù),這就為程序的編寫、調(diào)試和系統(tǒng)功能的擴(kuò)展提供了極大方便,并且由于ERTOS的使用,客觀上使得應(yīng)用軟件與下層硬件環(huán)境無關(guān),便于嵌入式軟件的移植,從而可以大大降低系統(tǒng)開發(fā)成本和開發(fā)周期。目前,已推出的嵌入式實(shí)時(shí)操作系統(tǒng)有很多種,比較常用的有VxWorks,WinCE,VRTX,pSOS,Palm OS,嵌入式Linux,Delta OS等。對(duì)于8051系列單片機(jī),由于具有很少的RAM和ROM,在嵌入式實(shí)時(shí)操作系統(tǒng)中,比較適合于這種單片機(jī)操作系統(tǒng)是Small RTOS51,它使用Keil C51所帶得RTX Tiny的堆棧管理機(jī)制,并和μC/OS-Ⅱ一樣是搶占式的。目前,Small RTOS的最新版本為1.20.3,可以支持任務(wù)的動(dòng)態(tài)建立與刪除,支持C51的重入函數(shù),支持動(dòng)態(tài)內(nèi)存分配等。
2 嵌入式溫控器
2.1 嵌入式溫控器的結(jié)構(gòu)及原理
由Small RTOS51實(shí)現(xiàn)的基于8位單片機(jī)的溫控器的系統(tǒng)結(jié)構(gòu)如圖1所示。單片機(jī)作為控制核心,負(fù)責(zé)讀取溫度傳感器的溫度,并輸出至LED顯示器顯示,按鍵用來設(shè)置溫控器的溫度,當(dāng)溫度超限時(shí)由輸出控制部分輸出控制信號(hào),驅(qū)動(dòng)繼電器或者報(bào)警裝置,電源部分為整個(gè)系統(tǒng)供電。
2.2 嵌入式溫控器硬件電路
由于溫控器的外圍電路比較簡(jiǎn)單,主控器所需的輸入/輸出口不多,故采用Atmel公司的AT89C2051,溫度傳感器采用美國DALLAS半導(dǎo)體公司的DS18B20,其數(shù)據(jù)信號(hào)線接微控制器P3.7,LED顯示器采用4個(gè)共陰極數(shù)碼管構(gòu)成,由4個(gè)串入并出的移位寄存器74LS164驅(qū)動(dòng),采用靜態(tài)顯示方式,P1.1作為LED顯示器的串行數(shù)據(jù)輸入,P1.0作為LED顯示器的串行時(shí)鐘輸入,輸出控制信號(hào)由P1.7輸出,控制PNP型晶體管,另外設(shè)置4個(gè)按鍵分別連接微控制器的P3.2~P3.5,其硬件電路如圖2所示。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 任務(wù)的分解劃分
任務(wù)的劃分包括確定哪些變換屬于哪個(gè)任務(wù),以及確定各任務(wù)的優(yōu)先級(jí)。具體劃分原則可參考文獻(xiàn)[1]。根據(jù)任務(wù)劃分的原則以及嵌入式溫控器的具體功能,本系統(tǒng)將任務(wù)分解劃分為按鍵顯示處理,溫度測(cè)量,和輸出執(zhí)行3個(gè)任務(wù)。
3.2 系統(tǒng)軟件的設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要包括主程序設(shè)計(jì)和各任務(wù)程序設(shè)計(jì)。
該設(shè)計(jì)主程序流程圖如圖3所示。主程序進(jìn)行初始化以后,順序建立3個(gè)任務(wù),進(jìn)入CPU休眠狀態(tài),各個(gè)任務(wù)運(yùn)行后,首先進(jìn)入任務(wù)休眠狀態(tài),等待相應(yīng)任務(wù)的喚醒,任務(wù)被喚醒以后,進(jìn)行相應(yīng)處理,再次進(jìn)入休眠狀態(tài)。各個(gè)任務(wù)均采用無限循環(huán)結(jié)構(gòu),其形式如下:
任務(wù)喚醒用函數(shù)OSTaskResume(TASK_ID)來完成。在KeilμVision 2下建立工程,編輯相應(yīng)的頭文件config.h,并對(duì)OS_CFG.h和OS_CPU.h的有關(guān)內(nèi)容進(jìn)行相應(yīng)設(shè)置,進(jìn)行編譯直到成功為止。
4 結(jié) 語
根據(jù)嵌入式溫控器的硬件電路,利用嵌入式實(shí)時(shí)操作系統(tǒng)Small RTOS51對(duì)其進(jìn)行程序設(shè)計(jì),KeilμVision 2建立工程并進(jìn)行編譯,下載代碼后溫控器工作正常。對(duì)于現(xiàn)在仍然使用廣泛的8位單片機(jī),采用Small RTOS51進(jìn)行程序設(shè)計(jì),既簡(jiǎn)單又方便。利用中斷、信號(hào)量、消息隊(duì)列,可以實(shí)現(xiàn)更多功能和作用;另外實(shí)時(shí)操作系統(tǒng)有多種,但其原理類似,懂得了其中之一,可以舉一反三,理解和應(yīng)用其他嵌入式實(shí)時(shí)操作系統(tǒng)。