電腦自動打鈴器設計與實現(xiàn)1_第1頁
電腦自動打鈴器設計與實現(xiàn)1_第2頁
電腦自動打鈴器設計與實現(xiàn)1_第3頁
電腦自動打鈴器設計與實現(xiàn)1_第4頁
電腦自動打鈴器設計與實現(xiàn)1_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第7章章電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn) 通 過 對 A R M 7 T D M I 體 系 結 構 、LPC2000系列ARM、C/OS-II微小內核分析與程序設計基礎的深入學習之后,我們已經(jīng)對嵌入式系統(tǒng)有了比較清晰的了解。本章將結合一個具體的實例電腦自動打鈴器來闡述嵌入式應用系統(tǒng)的工程設計方法。緒論緒論設計要求設計要求任務設計任務設計硬件設計硬件設計程序設計程序設計1234目錄目錄系統(tǒng)功能系統(tǒng)功能系統(tǒng)框圖系統(tǒng)框圖127.1 設計要求設計要求設計要求設計要求| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)系統(tǒng)功能系統(tǒng)功能l具有實時時鐘功能,能顯示時分秒,年月日星期(采用

2、8位數(shù)碼管顯示)l具有 鍵盤 輸入功能 l可以設置若干個鬧鐘,以及鬧鐘的禁止與使能l可設置每個鬧鐘發(fā)生時的輸出動作(一共四路輸出,可獨立設置每路輸出的時間和電平狀態(tài))設計要求設計要求| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)系統(tǒng)框圖系統(tǒng)框圖 LPC2000系列ARM具有RTC功能,RTC掉電后仍可使用電池繼續(xù)運行,從而保證了系統(tǒng)掉電后時鐘的準確性。ZLG7290是一款鍵盤和LED驅動芯片,最多支持64個按鍵和8個共陰極數(shù)碼管。LPC2000ZLG7290Vcc鍵盤輸入數(shù)碼管顯示SDASCLINT輸出控制鍵盤顯示電路鍵盤顯示電路輸出控制電路輸出控制電路127.2 硬件設計硬件設計硬件設

3、計硬件設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)鍵盤顯示電路鍵盤顯示電路 本設計實例基于SmartARM2200A工控開發(fā)平臺實現(xiàn)。SmartARM2200A工控開發(fā)平臺提供I2C0接口,可以和PACK板“Panel Module ZYPM7290”連接,組成鍵盤顯示電路,硬件電路及連接方法請參考配套教材。硬件設計硬件設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)輸出控制電路輸出控制電路 圖示為輸出控制模擬電路,在實際應用中,可能需要控制繼電器等。任務的劃分任務的劃分 任務的數(shù)據(jù)結構設計任務的數(shù)據(jù)結構設計任務的優(yōu)先級設計任務的優(yōu)先級設計 123多任務之間的同步與互斥多任

4、務之間的同步與互斥多任務之間的信息傳遞多任務之間的信息傳遞 457.3 任務設計任務設計任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的劃分任務的劃分 對一個嵌入式應用系統(tǒng)進行“任務劃分”,是實時操作系統(tǒng)應用軟件設計的關鍵,任務劃分是否合理將直接影響軟件設計的質量。以以CPU為中心為中心“關鍵關鍵”功功能能“緊迫緊迫”功能功能消耗機時消耗機時關系密切關系密切相同事件觸發(fā)相同事件觸發(fā)運行周期相同運行周期相同任務劃分固定順序執(zhí)行固定順序執(zhí)行 任務劃分原則如下:首先,以CPU為中心,將與各種輸入/輸出設備(或端口)相關的功能分別劃分為獨立的任務發(fā)現(xiàn)“關鍵”功能,將其最“關鍵

5、”部分“剝離”出來,用一個獨立任務(或ISR)完成,剩余部分用另外一個任務實現(xiàn),兩者之間通過通信機制溝通發(fā)現(xiàn)“緊迫”功能,將其最“緊迫”部分“剝離”出來,用一個獨立的高優(yōu)先級任務(或ISR)完成,剩余部分用另外一個任務實現(xiàn),兩者之間通過通信機制溝通將消耗機時較多的數(shù)據(jù)處理功能劃分出來,封裝為低優(yōu)先級任務對于既“關鍵”又“緊迫”的功能,按“緊迫”功能處理將關系密切的若干功能組合成為一個任務,達到功能聚合的效果將由相同事件觸發(fā)的若干功能組合成為一個任務,從而免除事件分發(fā)機制將運行周期相同的功能組合成為一個任務,從而免除時間事件分發(fā)機制將若干按固定順序執(zhí)行的功能組合成為一個任務,從而免除同步接力通信

6、的麻煩任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的劃分任務的劃分 電腦自動打鈴器任務劃分如下:RTC中斷中斷顯示任務顯示任務鍵盤任務鍵盤任務輸出控制任務輸出控制任務電腦打鈴器電腦打鈴器 電腦自動打鈴器具有鍵盤輸入功能,用于設置時鐘和鬧鐘,因此需要一個鍵盤任務。 電腦自動打鈴器需要有顯示功能,用來顯示時鐘和鬧鐘,因此需要一個顯示任務。 電腦自動打鈴器需要一個輸出控制任務,用來控制鬧鐘時間到后各路的輸出。 電腦自動打鈴器具有實時時鐘功能,需要一個RTC中斷。任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的優(yōu)先級設計任務的優(yōu)先級設計人機接口,實

7、時性低鍵盤任務鍵盤任務1輸出控制任務輸出控制任務3顯示任務顯示任務2RTC中斷中斷4電電腦腦自自動動打打鈴鈴器器控制接口,實時性高任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的優(yōu)先級設計任務的優(yōu)先級設計鍵盤任務鍵盤任務1輸出控制任務輸出控制任務3顯示任務顯示任務2RTC中斷中斷4電電腦腦自自動動打打鈴鈴器器優(yōu)先級:6優(yōu)先級:12優(yōu)先級:13任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的數(shù)據(jù)結構設計任務的數(shù)據(jù)結構設計 對于一個任務,除了它的代碼(任務函數(shù))外,還有相關的信息。為保存這些信息,必須為任務設計對應的若干數(shù)據(jù)結構。任務需要配備的數(shù)

8、據(jù)結構分為兩類:一類是與操作系統(tǒng)有關的數(shù)據(jù)結構;另外一類是與操作系統(tǒng)無關的數(shù)據(jù)結構。任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的數(shù)據(jù)結構設計任務的數(shù)據(jù)結構設計與操作系統(tǒng)有關的數(shù)據(jù)結構 一個任務要想在操作系統(tǒng)的管理下工作,必須首先被創(chuàng)建。在C/OS-II中,任務的創(chuàng)建函數(shù)原型如下:任務函數(shù)指針任務參數(shù)指針,一般設為 (void *)0任務堆棧棧頂指針任務優(yōu)先級任務ID,一般設為prio任務堆棧棧底指針任務堆棧大小任務附加數(shù)據(jù)指針,一般設為(void *)0創(chuàng)建任務選項INT8U OSTaskCreateExt(void (*task)(void *pd),void

9、*pdata,OS_STK *ptos, INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt);任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的數(shù)據(jù)結構設計任務的數(shù)據(jù)結構設計 在電腦自動打鈴器應用中,我們設計了3個任務(鍵盤任務、顯示任務和輸出控制任務),與操作系統(tǒng)有關的數(shù)據(jù)結構定義如下:#define TASKKEY_ID12/定義鍵盤任務的ID#define TASKKEY_PRIOTASKKEY_ID/定義鍵盤任務的優(yōu)先級#define TASKKEY_STAC

10、K_SIZE512/定義鍵盤任務堆棧的大小#define TASKDISP_ID13/定義顯示任務的ID#define TASKDISP_PRIO TASKDISP_ID/定義顯示任務的優(yōu)先級#define TASKDISP_STACK_SIZE512/定義顯示任務堆棧的大小#define TASKCTRL_ID6/定義控制任務的ID#define TASKCTRL_PRIO TASKCTRL_ID/定義控制任務的優(yōu)先級#define TASKCTRL_STACK_SIZE 512/定義控制任務堆棧的大小OS_STK TaskKeyStkTASKKEY_STACK_SIZE; /定義鍵盤任務的

11、堆棧OS_STK TaskDispStkTASKDISP_STACK_SIZE; /定義顯示任務的堆棧OS_STK TaskCtrlStkTASKCTRL_STACK_SIZE; /定義控制任務的堆棧void TaskKey(void *pdata); /鍵盤任務聲明void TaskDisp(void *pdata); /顯示任務聲明void TaskCtrl(void *pdata); /控制任務聲明任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)任務的數(shù)據(jù)結構設計任務的數(shù)據(jù)結構設計與操作系統(tǒng)無關的數(shù)據(jù)結構 電腦自動打鈴器具有時鐘和鬧鐘功能,那么我們首先就要構造這兩個數(shù)

12、據(jù)結構,定義如下:時鐘結構定義struct time unsigned charucHour;/ 時 unsigned charucMin;/ 分 unsigned charucSec;/ 秒 unsigned charucWeek;/ 星期 unsigned shortusYear;/ 年 unsigned charucMon;/ 月 unsigned charucDay;/ 日;typedef struct timeTIME;typedef TIME*PTIME;鬧鐘結構定義struct alarm unsigned charucHour;/ 時 unsigned charucMin;/

13、分 unsigned charucSec;/ 秒 unsigned charucEnable;/ 鬧鐘使能控制 struct unsigned shortusLevel;/ 輸出電平控制 unsigned shortusTime;/ 輸出時間控制 c4;/ 4路輸出控制;typedef struct alarmALARM;typedef ALARM*PALARM;定義時鐘和鬧鐘全局變量#define MAX_ALARM 4/ 最大鬧鐘個數(shù)TIMEGtimeCurrentTime;/ 時鐘全局變量ALARM GalarmRingTimeMAX_ALARM;/ 鬧鐘全局變量任務設計任務設計| 電腦

14、自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)多任務之間的同步與互斥多任務之間的同步與互斥 為了說明問題,我們在這里將鍵盤任務拆分成為兩個任務,一個是鍵盤掃描任務,另一個是鍵盤處理任務,二者之間使用消息郵箱進行同步。行為同步發(fā)送鍵值消息接收鍵值消息鍵盤掃描任務鍵盤處理任務消息郵箱l 鍵盤掃描任務掃描到按鍵,就向消息郵箱發(fā)送鍵值消息;l 鍵盤處理任務應及時處理鍵值消息,二者之間是同步接力的關系。任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)多任務之間的同步與互斥多任務之間的同步與互斥資源互斥 在電腦自動打鈴器的設計中,ZLG7290是通過I2C總線與LPC2000連接的,I2

15、C總線是鍵盤任務和顯示任務的共享資源,必須遵循資源互斥的原則進行訪問,二者之間使用信號量進行資源互斥。鍵盤任務顯示任務信號量申請I2C資源釋放I2C資源申請I2C資源釋放I2C資源任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)多任務之間的信息傳遞多任務之間的信息傳遞全局變量 在任務的數(shù)據(jù)結構設計中,我們設計了時鐘和鬧鐘兩個數(shù)據(jù)結構,并定義了時鐘和鬧鐘兩個全局變量。鍵盤任務,顯示任務和RTC中斷通過它們傳遞信息。全局變量(時鐘和鬧鐘)鍵盤任務顯示任務RTC中斷更新時鐘檢測鬧鐘設置時鐘和鬧鐘顯示時鐘和鬧鐘任務設計任務設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)多任

16、務之間的信息傳遞多任務之間的信息傳遞消息郵箱 RTC中斷檢測鬧鐘,鬧鐘到就向輸出控制任務發(fā)送控制信息,在本設計實例中使用消息郵箱。 RTC中斷輸出控制任務消息郵箱發(fā)送控制消息接收控制消息人機界面設計人機界面設計 鍵盤任務鍵盤任務主函數(shù)主函數(shù) 123顯示任務顯示任務RTC中斷中斷輸出控制任務輸出控制任務 4567.4 程序設計程序設計程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)人機界面設計人機界面設計 對于一個具有人機界面的應用系統(tǒng)來說,首先應該考慮的是人機界面如何設計。 8位數(shù)碼管顯示力度有限,只能通過按鍵分屏顯示,顯示界面定義如下:時鐘模式:12時 59分 59秒 星

17、期一星期時十位時個位分十位分個位秒十位秒個位0125959程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)人機界面設計人機界面設計 對于一個具有人機界面的應用系統(tǒng)來說,首先應該考慮的是人機界面如何設計。 8位數(shù)碼管顯示力度有限,只能通過按鍵分屏顯示,顯示界面定義如下:時鐘模式:2007年 12月 12日固定固定年十位年個位月十位月個位日十位日個位20071212程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)人機界面設計人機界面設計 對于一個具有人機界面的應用系統(tǒng)來說,首先應該考慮的是人機界面如何設計。 8位數(shù)碼管顯示力度有限,只能通過按鍵分屏顯示,顯示

18、界面定義如下:鬧鐘模式:A表示鬧鐘,0表示第一個鬧鐘,鬧鐘時間08:30:00固定索引時十位時個位分十位分個位秒十位秒個位A0083000程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)人機界面設計人機界面設計 對于一個具有人機界面的應用系統(tǒng)來說,首先應該考慮的是人機界面如何設計。 8位數(shù)碼管顯示力度有限,只能通過按鍵分屏顯示,顯示界面定義如下:鬧鐘模式:鬧鐘使能控制(E使能,d禁能),從左至右,第一個是總開關,接著是星期60(分別對應星期日星期一)的開關。E/dE/dE/dE/dE/dE/dE/dE/dEEEEEEEE程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打

19、鈴器設計與實現(xiàn)人機界面設計人機界面設計 對于一個具有人機界面的應用系統(tǒng)來說,首先應該考慮的是人機界面如何設計。 8位數(shù)碼管顯示力度有限,只能通過按鍵分屏顯示,顯示界面定義如下:鬧鐘模式:C表示通道,0表示第一個通道(每個鬧鐘有4個通道),H/L表示輸出高低電平控制,接著是輸出時間控制,最大為9999秒。固定通道H/L秒千位秒百位秒十位秒個位C0H9999程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)人機界面設計人機界面設計 根據(jù)上述分析,電腦自動打鈴器具有時鐘和鬧鐘模式,時鐘和鬧鐘模式都分別有不同的顯示內容,鬧鐘模式還有若干不同的鬧鐘,為了修改時鐘和鬧鐘的設置,還需要一個

20、光標閃爍來提示用戶進行修改,為此定義了如下全局變量:unsigned int GuiMode= 0;/ 模式(時鐘和鬧鐘模式)unsigned int GuiCursor = 8;/ 光標(閃爍位置提示)unsigned int GuiIndex= 0;/ 索引(不同的鬧鐘)unsigned int GuiItem= 0;/ 條目(時鐘或鬧鐘的不同內容) 按鍵的處理比較靈活,可自行設計。程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)主函數(shù)主函數(shù) 在程序設計的講解中,首先講一下主函數(shù)。在主函數(shù)中,進行了操作系統(tǒng)的初始化,創(chuàng)建了一個鍵盤任務,最后,啟動多任務操作系統(tǒng)。程序如下所示:int main(void) OSInit();/ 初始化uC/OS-II 創(chuàng)建鍵盤任務;/ 代碼可參考配套教材 OSStart();/ 啟動多任務操作系統(tǒng) return (0);程序設計程序設計| 電腦自動打鈴器設計與實現(xiàn)電腦自動打鈴器設計與實現(xiàn)鍵盤任務鍵盤任務l 鍵盤任務首先進行目標板的初始化,主要完成系統(tǒng)時鐘中斷的設置;l 然后初始化I2C0總線接口并設置中斷;l 然后創(chuàng)建消息郵箱GmboxRingCtrl,用于鬧鐘觸發(fā)輸出控制任務;l 接著初始化RTC并設置中斷;l 最后創(chuàng)建了顯示任務和輸出控制任務,就進入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論