【正文】
is designed for microcontroller system and open source software designed for preemptive multitasking realtime operating system with other realtime operating systems such as linux with the implementation of high efficiency, small footprint, realtime performance and superior scalability and so on. the minimum core can be piled from 2KB. This paper describes the structure and position of the monitoring system software and hardware design. System hardware including power modules, display module, temperature data acquisition module, limit alarm module, key control module, JTAG circuit and the main processing chip. System software design to plete the μC / OSII realtime embedded operating system migration. Second, the design of the four tasks namely the temperature detection task, showing task, Alarm set task and key tasks 4 tasks. The task of collecting temperature sent to the controller detected. The task of achieving realtime display shows temperature. Warning establishment duty establishment temperature maximum and minimum value, if surpasses the limiting value to report to the police. System Migration μC / OSII realtime embedded operating system, the success of key response time, clear and stable temperature display.Keywords: μC / OSII。本文詳細(xì)闡述了監(jiān)控系統(tǒng)組成結(jié)構(gòu)和軟硬件設(shè)計。 DS18B20。當(dāng)今嵌入式系統(tǒng)(單片機(jī))集成越來越多資源,內(nèi)部存儲資源日益豐富,用戶不需要擴(kuò)充資源就可以完成項目開發(fā),不僅是開發(fā)簡單,產(chǎn)品小巧美觀,同時系統(tǒng)也更加穩(wěn)定,目前該方向既是發(fā)展為SOC(片上系統(tǒng))。目前低端定位的單片機(jī)仍然走俏,但高端的單片機(jī)(微處理器)卻是風(fēng)起云涌,SOC 技術(shù)的發(fā)展,現(xiàn)代電子技術(shù)應(yīng)用中包含了硬件(HW)、硬件加軟件(HW+SW)、固件(FW)3 個層次。1969年,Busi請Inter為他們的每一種新式計算機(jī)分別進(jìn)行設(shè)計,而且設(shè)計了一種用在所有型號上的通用電路。當(dāng)小孩子或者矮個子的人在的時候不會充氣的智能氣囊,掌上電子記事薄和個人數(shù)字助理(PDA)、數(shù)碼照相機(jī)和儀表導(dǎo)航系統(tǒng)。一般為專門設(shè)計的芯片。(4)功率嵌入式系統(tǒng)的產(chǎn)品很多都是由電池供電的,因此對于電源的管理可以說到了近乎苛刻的地步。(3)PowerPCPowerPC 體系結(jié)構(gòu)規(guī)范由IBM、Apple 和Motorola 共同提出。嵌入式操作系統(tǒng)在通信、電子、自動化等領(lǐng)域具有無比的優(yōu)越性,其實(shí)時處理能力得到越來越多的重視,關(guān)于嵌入式操作系統(tǒng)的研究正在不斷深入。與分時系統(tǒng)相比,具有多路性、獨(dú)立性、及時性、交互性、可靠性的特點(diǎn)。(2)實(shí)時操作系統(tǒng)的特點(diǎn)由于實(shí)時操作系統(tǒng)與通用操作系統(tǒng)的基本設(shè)計原則差別很大,因此在很多資源調(diào)度策略的選擇上以及操作系統(tǒng)實(shí)現(xiàn)的方法上兩者郡具有較大的差異。操作系統(tǒng)的(中斷延遲、任務(wù)切換、驅(qū)動程序延遲等)行為是可知的和可預(yù)測的是指在全負(fù)載的情形下,最壞反應(yīng)時間可知的;通常都是在中斷服務(wù)程序中使高優(yōu)先級任務(wù)進(jìn)入就緒態(tài)(例如使用發(fā)送信號的方法),退出中斷服務(wù)程序后,將進(jìn)行任務(wù)切換,高優(yōu)先級任務(wù)被執(zhí)行[3]。對于一些對中斷響應(yīng)時間有嚴(yán)格要求的系統(tǒng),這是必不可少的。μC/OSⅡ的這種特性是好是壞,主要看從什么角度來判斷了。一個完整的程序可以劃分成幾個任務(wù),不同的任務(wù)執(zhí)行不同的功能。在這個過程中即使有優(yōu)先權(quán)更高的任務(wù)進(jìn)入了就緒態(tài),因為無法得到此信號量,也不能使用該資源。發(fā)生這種情況,在μC/OSⅡ中稱為優(yōu)先級反轉(zhuǎn)。更重要的是,C語言是和處理器無關(guān)的,這就能夠讓程序員可以著眼于算法和應(yīng)用而不用考慮特定處理器結(jié)構(gòu)的細(xì)節(jié)語言與其他語言比如Pascal 和FORTRAN 區(qū)別開的地方就是,C語言是一個非?!暗图墶钡母呒壵Z言,C語言給與嵌入式程序員很大程度的直接控制硬件的能力,卻不會失去高級語言帶來的好處。匯編語言現(xiàn)在只用作高級語言的附件,通產(chǎn)只用在那些必須要求極高效率或非常緊湊,或者是其他方法無法編寫的小段代碼里。即使是這些領(lǐng)地這幾年也在逐漸喪失,這是一件很不幸的事情,因為與C++比起來,Ada 有很多特性可以簡化嵌入式軟件的開發(fā)工作[8]。通過電源模塊為電路板提供電源。它的測溫范圍為55~+125℃,并且在10~+85℃精度為177。 DS18B20引腳排列表1 詳細(xì)引腳說明8 引腳SOIC 封裝 TO9 封裝 符號 說明5 1 GND 接地 4 2 DQ 數(shù)據(jù)輸入/輸出引腳。在那之后,產(chǎn)生的溫度數(shù)據(jù)以兩個字節(jié)的形式被存儲到高速暫存器的溫度寄存器中,DS18B20繼續(xù)保持等待狀態(tài)。 ARM的CortexM3是32位的RISC處理器,提供額外的代碼效率,在通常8和16位系統(tǒng)的存儲空間上發(fā)揮了ARM內(nèi)核的高性能。多達(dá)80個通用I/O口連接到16個外部中斷線。 在需要的情況下,I/O引腳的外設(shè)功能可以通過一個特定的操作鎖定,以避免意外的寫入I/O寄存器。大部分的μC/OSⅡ代碼時使用 ANSI C 語言書寫的,因此μC/OSⅡ的可移植性好。由于μC/OSⅡ在設(shè)計時就已經(jīng)充分考慮了可移植性,所以μC/OSⅡ的移植相對來說是比較容易的[11]。改為:OS_CPU_SysTickHandler;并在文件前添加:Ⅱ操作系統(tǒng)整體圖連接完成μC/OSⅡ 的內(nèi)核代碼后,還要添加板級移植驅(qū)動,才能驅(qū)動系統(tǒng)運(yùn)行,;。 OSInit()。 }用App_TaskCreate()函數(shù)建立4個任務(wù),任務(wù)名分別為:App_TaskKEY(按鍵設(shè)置任務(wù))、App_TaskLED(顯示任務(wù))、App_TaskTEMP(采集溫度任務(wù))、App_TaskWARN(報警任務(wù))。 if (OS_TASK_NAME_SIZE = 9) OSTaskNameSet(APP_TASK_LED_PRIO, TASK LED, amp。if (OS_TASK_NAME_SIZE = 9) OSTaskNameSet(APP_TASK_WARN_PRIO, TASK WARN, amp。}} 顯示處理函數(shù)以下程序為溫度采集任務(wù)調(diào)用具體溫度采集函數(shù)的代碼:static void App_TaskTemp(void *p_arg) 溫度采集函數(shù){(void) p_arg。KeyTask()相關(guān)程序主要代碼如下:void KeyTask(void){static unsigned char CurrKey, iLoopCount = 0。 static unsigned char oldkey = 0。 oldkey = currkey。 return 1。 aa = numb。 //個位數(shù) j[3] = aa j[0] * 1000 j[1] * 100 j[2] * 10。顯示小數(shù)點(diǎn) } Delay(200)。 //c GPIO_ResetBits(GPIOA, GPIO_Pin_4)。 報警 } else { BuzzleOFF()。為了在線調(diào)試的方便和快捷高效,本系統(tǒng)使用的存儲器程序?qū)懭霝樵谙到y(tǒng)可編程。軟件設(shè)計了4個任務(wù)來驗證μC/OSⅡ系統(tǒng)。將顯示任務(wù)的優(yōu)先級設(shè)置高于讀取溫度的優(yōu)先級則解決這個問題。數(shù)碼管顯示實(shí)時溫度。這樣就可以保證重要任務(wù)總是優(yōu)先擁有CPU,系統(tǒng)中各個實(shí)時任務(wù)的調(diào)用不用設(shè)計者調(diào)控,完全由操作系統(tǒng)來自行調(diào)控完成。參 考 文 獻(xiàn)[1] 張宏海,李成忠,陳祝亞. 嵌入式實(shí)時系統(tǒng)[J]. 安徽工業(yè)大學(xué)學(xué)報,2005,9(9):5687.[2] 李郁松,郭裕順. 嵌入式實(shí)時系統(tǒng)及其開發(fā)[J]. 杭州電子工業(yè)學(xué)院學(xué)報,2006,1(1):2345.[3] 劉亭,[J].傳感器的世界2009,1(1):3942.[4] [J].農(nóng)業(yè)工程學(xué)報,1997,13(增):262—269.[5] [J].科學(xué)技術(shù)與工程,2007,23(7) :6080—6083.[6] [M]. 北京:電子工業(yè)出版社,2003.[7] [M].武漢:華中理工大學(xué)出版社,2004.[8] Micbael 著,++嵌入式系統(tǒng)編程[M].北京:中國電力出版社,2001.[9] 他們的認(rèn)真,他們的執(zhí)著,都讓我學(xué)到了很多的東西。最后我要感謝通信工程061 班的所有同學(xué)們,四年的大學(xué)里,同學(xué)們一起生活,一起學(xué)習(xí)。作為我們在大學(xué)中的最后一門課程,畢業(yè)設(shè)計不僅讓我鞏固了大學(xué)里所學(xué)到的知識,還讓我學(xué)習(xí)到了嚴(yán)謹(jǐn)而又踏實(shí)的工作作風(fēng)。當(dāng)然在設(shè)計中還存在許多其他不盡完善的地方,在今后的工作中來加以優(yōu)化。本系統(tǒng)采用的μC/OSⅡ最主要的特點(diǎn)就是源碼公開。經(jīng)過硬件和軟件的調(diào)試,系統(tǒng)演示如下:(1) 系統(tǒng)顯示實(shí)時溫度狀態(tài) 系統(tǒng)上電復(fù)位以后,數(shù)碼管顯示實(shí)時溫度。程序編譯和下載環(huán)境是KEIL UVISION4。這種方法直接利用系統(tǒng)中帶有JTAG 接口的器件,如CPU、CPLD、FPGA 等,執(zhí)行對系統(tǒng)程序存儲器芯片內(nèi)容的擦除和編程操作。 向端口寫入數(shù)據(jù)}void BuzzleOFF(void) { GPIO_ResetBits(GPIOA, GPIO_Pin_12)。 //e GPIO_ResetBits(GPIOC, GPIO_Pin_14)。 //0 設(shè)置掃描0口 GPIO_ResetBits(GPIOB, GPIO_Pin_6)。 //負(fù)溫度顯示負(fù)號: for (l = 0。 else { aa = ~aa + 1。}}return 0。 break。 unsigned char UpKey, DownKey, SetKey。CurrKey) == 1)讀取鍵值判斷按鍵是否抬起 { KeyDealFlag = KEYEXEC。 OSTimeDlyHMSM(0, 0, 1, 100)。endif}為了代碼更加清楚明了,此設(shè)計編寫時將各個任務(wù)編寫的具體函數(shù)都放在板級庫文件中供任務(wù)調(diào)用。endif os_err = OSTaskCreate((void(*)(void *)) App_TaskTEMP, (void *) 0,采集任務(wù) (OS_STK *) amp。 os_err = OSTaskCreate((void(*)(void *)) App_TaskKEY, (void *) 0,按鍵任務(wù) (OS