嵌入式系統(tǒng)課程設(shè)計(jì)--基于ucosii的lcd驅(qū)動設(shè)計(jì)_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目 基于UCOSII的LCD驅(qū)動設(shè)計(jì) </p><p>  專 業(yè) 通信工程 </p><p>  學(xué) 號 <

2、/p><p>  授課班號 </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p><b>  摘要</b></p><p> 

3、 近年來,嵌入式系統(tǒng)的應(yīng)用已經(jīng)越來越普及,對人類社會產(chǎn)生了巨大的影響。μC/OS-II作為一種高可靠性的實(shí)時(shí)嵌入式操作系統(tǒng)已經(jīng)被廣泛使用在實(shí)際中,并且其具有簡單易學(xué)、便于移植等特點(diǎn)。</p><p>  本文綜述了嵌入式系統(tǒng)發(fā)展現(xiàn)況,分析了μC/OS-II內(nèi)核及其應(yīng)用在8051單片機(jī)上的特點(diǎn),并介紹了μC/OS-II編寫驅(qū)動的方法和規(guī)則。</p><p>  本設(shè)計(jì)以Keil C51為開發(fā)

4、環(huán)境,通過修改函數(shù)使其可重入、修改堆棧設(shè)計(jì)等步驟,將μC/OS-II移植到了89C51單片機(jī)上,并編寫了單片機(jī)上的LED模塊、鍵盤模塊及串行通訊模塊的驅(qū)動,驗(yàn)證了移植μC/OS-II的正確性。LCD是嵌入式操作系統(tǒng)的重要組成部分,是系統(tǒng)和用戶之間進(jìn)行交互和信息交換的媒介,它實(shí)現(xiàn)信息的內(nèi)部形式與人類可以接受形式之間的轉(zhuǎn)換。用戶可以只通過LCD監(jiān)測系統(tǒng)內(nèi)部運(yùn)行狀態(tài),然后作出相應(yīng)的處理。因而具有良好的人機(jī)界面的嵌入式操作系統(tǒng)能過很好的完成系統(tǒng)

5、開發(fā)、生產(chǎn)生活的需要!</p><p>  關(guān)鍵詞:μC/OS-II;8051單片機(jī);移植;驅(qū)動程序</p><p><b>  緒言</b></p><p>  1.ucos-II的簡介及特點(diǎn)</p><p><b> ?。?)簡介</b></p><p>  μC/OS-

6、II由Micrium公司提供,是一個(gè)可移植、可固化的、可裁剪的、占先 式多任務(wù)實(shí)時(shí)內(nèi)核,作者是Micrium公司總裁Jean J.Labrosse。由于μC/OS-II的絕大部分代碼是用ANSI C寫的,因此可以較為方便的移植到多種微處理器,微控制器和數(shù)字處理芯片中(目前已經(jīng)移植到超過100種以上的微處理器應(yīng)用中)。同時(shí),該系統(tǒng)源代碼開放、整潔、一致,注釋詳盡,適合系統(tǒng)開發(fā)。μC/OS-II已經(jīng)通過聯(lián)邦航空局(FAA)商用航行器認(rèn)證,符

7、合航空無線電技術(shù)委員會(RTCA)DO-178B標(biāo)準(zhǔn),雖然這一特性對用戶的需求并不一定實(shí)用,但卻可在一定程度上</p><p>  證明該系統(tǒng)的穩(wěn)定和安全性。</p><p><b> ?。?)特點(diǎn)</b></p><p>  1、公開源代碼:源代碼完全公開;</p><p>  2、可移植性強(qiáng):和處理器硬件相關(guān)的部分是

8、用匯編些的,絕大部分是用C語言寫的,可移植性很強(qiáng);可以移植到8、16、32、64位處理器上運(yùn)行;</p><p>  3、可固化:可固化到產(chǎn)品中,稱為嵌入式產(chǎn)品的一部分;</p><p>  4、可裁剪:應(yīng)用程序可以只使用需要的系統(tǒng)服務(wù)。</p><p>  5、搶占式內(nèi)核:意味著操作系統(tǒng)總是運(yùn)行優(yōu)先級最高的就緒任務(wù),</p><p>  6

9、、多任務(wù):ucosii可以管理64個(gè)任務(wù),提供給用戶用的是56個(gè),系統(tǒng)保留8個(gè)任務(wù)。</p><p>  7、任務(wù)棧: 每個(gè)任務(wù)有自己單獨(dú)的棧;</p><p>  8、系統(tǒng)服務(wù):ucosii提供很多系統(tǒng)服務(wù),如郵箱、消息、信號量、時(shí)間相關(guān)函數(shù)。</p><p>  9、中斷管理:可以使暫時(shí)執(zhí)行的任務(wù)暫時(shí)掛起,如果高優(yōu)先級的任務(wù)被中斷喚醒,則去執(zhí)行更高優(yōu)先級的任務(wù)。

10、</p><p>  二、課題目標(biāo)及總體方案</p><p>  首先學(xué)習(xí)了解LCD的驅(qū)動程序,然后在移植好的UCOSII項(xiàng)目中添加LCD的驅(qū)動程序, 最后能夠在uCOSII下,編寫LCD應(yīng)用任務(wù)的簡單編程實(shí)例,來檢驗(yàn)LCD驅(qū)動程序的完好度。本實(shí)驗(yàn)實(shí)例為在LCD屏上顯示跑馬燈,同時(shí)模擬CPU板上D7、D8燈的交替閃爍,閃爍周期為跑馬燈周期。</p><p>  1.

11、 LCD驅(qū)動程序組成</p><p>  LCD驅(qū)動程序的文件夾Gui(如圖1所示),其中,包括四個(gè)文件夾:</p><p>  Font中存放的是字體文件,存放四個(gè)文件,F(xiàn)ont_Cn12.c為調(diào)用漢字庫12X12漢字的引用文件;Font_Cn16.c為調(diào)用漢字庫16X16漢字的引用文件;Font8X16為調(diào)用ASCII碼的源文件,它的大小為8X16;Gchar.c為顯示字符的源程序庫。

12、</p><p>  Glib中存放繪圖的中層和上層的函數(shù),上層函數(shù)是直接供用戶調(diào)用的API,。Glib文件夾內(nèi)存放兩個(gè)文件,Glib.c是圖形顯示庫的源代碼,它主要實(shí)現(xiàn)LCD的中層和上層供用戶調(diào)用的API函數(shù),Glib.h則是供其他文件或自身調(diào)用的頭文件。</p><p>  Init中存放GUI初始化的函數(shù),Init文件夾內(nèi)存放兩個(gè)文件,data.h是數(shù)據(jù)類型重定義的文件,GUI_In

13、it.c是GUI系統(tǒng)的初始化文件。</p><p>  Lcddriver中存放的是LCD的底層驅(qū)動函數(shù),以及對LCD控制器的初始化函數(shù)。Lcddriver文件內(nèi)存放兩個(gè)文件,Lcddriver.c包括LCD的底層讀寫內(nèi)存用來繪圖的函數(shù),以及初始化LCD控制寄存器的初始化硬件的函數(shù)。Lcddrive 是供其他文件或自身調(diào)用的頭文件。</p><p>  2. UCOSII操作系統(tǒng)下添加LC

14、D驅(qū)動程序</p><p>  在UCOSII操作系統(tǒng)下添加LCD驅(qū)動程序,也就是把整個(gè)GUI文件夾加入該項(xiàng)目里。</p><p>  同時(shí),還要在Application\INC目錄下的config.h文件中,加入GUI程序的頭文件,#include "..\..\Gui\Glib\Glib.h",這是為了在應(yīng)用中方便調(diào)用畫圖的API函數(shù)。</p><

15、;p>  如果,要在LCD上顯示英文或漢字,還要在Application\SRC\Main.c中聲明引用的是extern GUI_FONT CHINESE_FONT12;等外部定義過的字體。這樣,編譯就能通過,就把LCD的驅(qū)動程序以及小型的GUI圖形庫,加載到了UCOSII操作系統(tǒng)上了。</p><p>  在UCOSII操作系統(tǒng)下,要單獨(dú)開辟一個(gè)GUI任務(wù),進(jìn)行畫圖,一般這個(gè)任務(wù)的優(yōu)先級很低,一般它僅比

16、空閑任務(wù)的優(yōu)先級高,這樣做是為了可以使更多的任務(wù)等級顯示在屏上。</p><p>  在Application/SRC下的MAIN.C文件,有GUI的應(yīng)用任務(wù),繪圖的API函數(shù)即放在這里,或者作一個(gè)應(yīng)用函數(shù)的文件,在此任務(wù)里調(diào)用。所有的對LCD顯示操作內(nèi)容要在MAIN.C文件中編寫。</p><p><b>  3. 應(yīng)用程序</b></p><p

17、>  本實(shí)驗(yàn)實(shí)例為在LCD屏上顯示跑馬燈,同時(shí)模擬CPU板上D7、D8燈的交替閃爍,閃爍周期為跑馬燈周期。來檢驗(yàn)LCD驅(qū)動程序是否能正常工作。實(shí)驗(yàn)流程圖如下:</p><p>  程序開始先進(jìn)行各項(xiàng)初始化,包括開發(fā)板、GUI初始化、系統(tǒng)初始化,然后配置LCD屏幕設(shè)置,運(yùn)行時(shí)先調(diào)用跑馬燈延時(shí)程序Timedelay(),跑馬燈運(yùn)行一周后,置開發(fā)板上D7、D8燈亮滅,通過信號傳遞置LCD屏幕上模擬D7D8燈亮滅,

18、 接著調(diào)用Timedelay()函數(shù),循環(huán)任務(wù)。</p><p><b>  三、實(shí)驗(yàn)結(jié)果測試</b></p><p><b>  測試方法:</b></p><p>  1、在移植好的UCOSII項(xiàng)目中添加LCD的驅(qū)動程序。(方法參見第一章 第二節(jié))</p><p>  2、在main.c文件中編

19、寫程序(源程序見附錄),先使用畫圖函數(shù)繪出包含跑馬燈,模擬D7,D8兩燈在內(nèi)的LCD界,用函數(shù)timedelay()控制跑馬燈運(yùn)行,timedelay()亦是延時(shí)函數(shù)。D7,D8兩燈每交替閃說一次,調(diào)用一次timedelay()延時(shí)函數(shù)。</p><p>  3、連接電腦和試驗(yàn)箱,編譯程序,無錯誤,把程序下載到S3C44B0X,觀察結(jié)果。</p><p>  4、觀察現(xiàn)象,有問題檢查修改M

20、AIN.C文件。</p><p>  LCD界面顯示如下:</p><p><b>  四、總結(jié)</b></p><p>  實(shí)驗(yàn)結(jié)果顯示出預(yù)期的LCD界面,LCD屏幕顯示預(yù)定圖案(如圖2)。屏幕上D7、D8隨CPU板上的D7,D8兩燈同步閃爍,而且跑馬燈每轉(zhuǎn)一周,兩個(gè)等交替閃爍一次。說明LCD驅(qū)動即添加到內(nèi)核中沒有問題,系統(tǒng)工作正常。<

21、/p><p><b>  五、心得體會</b></p><p>  課程設(shè)計(jì)終于完成了,小組的成員終于松了一口氣。</p><p>  一開始的時(shí)候。遇到了很多問題,上課時(shí)老師說ARM匯編中,所有標(biāo)號必須在一行的頂格書寫,其后面不要添加“:”,而所有指令均不能頂格書寫。ARM匯編對標(biāo)識符的大小寫敏感,書寫標(biāo)號及指令時(shí)字母大小寫要一致。在ARM匯編中

22、,ARM指令、偽指令、寄存器名等可以全部大寫或者全部小寫,但不要大小寫混合使用。注釋使用“;”號,注釋的內(nèi)容由“;”號起到此行結(jié)束,注釋可以在一行的頂格書寫??墒菍?shí)際中我們在編程序時(shí),總是忘了這個(gè)忘了那個(gè)。我說嘛,這程序明明沒問題怎么老是編譯錯誤,經(jīng)過老師的指導(dǎo)問題順利解決??墒菬綄?shí)驗(yàn)箱里的時(shí)候發(fā)現(xiàn)燒不進(jìn)去。后來小組其他成員查資料才知道燒之前要先用軟件檢測一下芯片是否存在。結(jié)果發(fā)現(xiàn)原來是數(shù)據(jù)線壞了。經(jīng)過‘九九八十一難’,終于搞好。&l

23、t;/p><p>  課程設(shè)計(jì)讓我認(rèn)識到個(gè)人的力量是渺小的,依靠一個(gè)人的努力也是不夠的,許多事情只有靠大家精誠合作,一起思考討論,分工協(xié)作,才能完成。大家之間要默契配合,相互理解,闡述各自對問題不同看法、不同理解的相互交流是發(fā)現(xiàn)問題學(xué)的新知的良好契機(jī)。</p><p>  課程設(shè)計(jì)很快就結(jié)束了,我覺得最大的收獲就是能夠理論聯(lián)系實(shí)際,把書本上的知識活學(xué)活用道實(shí)際中來解決一些實(shí)際問題,這樣才能發(fā)揮

24、用途。獨(dú)立思考解決問題,并能夠接受他人意見來修正完善自己的想法,最終付諸于實(shí)現(xiàn)。</p><p><b>  六、參考文獻(xiàn)</b></p><p>  [1] 王永,何立民.嵌入式系統(tǒng)原理與設(shè)計(jì)[M].浙江:浙江大學(xué)出版社.</p><p>  [2]JEAN J.LABROSSE μC/OS-II―源碼公開的實(shí)時(shí)嵌入式操作系統(tǒng).北京:中國電

25、力出版社,2001[3]王田苗. 嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā).北京:清華大學(xué)出版社,2002</p><p>  [4] 毛德操,胡希明. 嵌入式系統(tǒng)[M]. 杭州:浙江大學(xué)出版社, 2003:325334.[5]Jean J. Labrosse 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ 第2版[M] .北京:北京航空航天大學(xué)出版社.</p><p><b>  七、附 錄</

26、b></p><p><b>  源程序:</b></p><p>  #include "..\inc\config.h"</p><p>  #defineSTACKSIZE256</p><p>  OS_STK_DATA stk;</p><p>  ext

27、ern GUI_FONT CHINESE_FONT12;</p><p>  extern GUI_FONT CHINESE_FONT16;</p><p>  extern GUI_FONT GUI_Font8x16;</p><p>  OS_EVENT * Send_D7light_Sem;</p><p>  OS_EVE

28、NT * Send_LCD_Sem;</p><p><b>  /*</b></p><p>  *************************************************************************************************************</p><p>  **

29、 分配各任務(wù)的堆棧容量 **</p><p>  *************************************************************************************************************</p><p>

30、;<b>  */</b></p><p>  OS_STK Stack_Task_1[STACKSIZE];</p><p>  OS_STK Stack_Task_2[STACKSIZE*3];</p><p><b>  /*</b></p><p>  *******************

31、******************************************************************************************</p><p>  - 函數(shù)名稱 : Task_3(void *pdata)</p><p>  - 函數(shù)說明 : GUI任務(wù),優(yōu)先級為56</p><p>  - 輸入?yún)?shù) : pda

32、ta</p><p>  - 輸出參數(shù) : 無</p><p>  *************************************************************************************************************</p><p><b>  */</b></p>

33、;<p>  void Task_2(void *pdata)</p><p><b>  {</b></p><p>  INT8U err,flag=0;</p><p>  Set_Color(GUI_WHITE);//LCD背景顏色</p><p>  Fill_Rect(

34、0,0,319,239);//背景顏色填充(0,0)至(319.239)的矩形</p><p><b>  //畫刷填充矩形</b></p><p>  Set_Color(GUI_BLUE);//LCD方框顏色</p><p>  Fill_Rect(0,0,319,2);

35、//填充4條邊</p><p>  Fill_Rect(0,0,2,239);</p><p>  Fill_Rect(0,237,319,239);</p><p>  Fill_Rect(317,0,319,239);</p><p>  Set_Color(GUI_WHITE);

36、 //小組成員姓名學(xué)號顯示</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"河海大學(xué)常州校區(qū)"CN_end,5,10);</p><p>  Set_Color(GUI_WHITE);

37、 //小組成員姓名學(xué)號顯示</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"嵌入式課設(shè)"CN_end,5,30);</p><p>  Set_Color(GUI_WHITE);

38、 </p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"指導(dǎo)老師:許老師"CN_end,5,50);</p><p>  Set_Color(GUI_WHITE);

39、 </p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"課題:液晶驅(qū)動"CN_end,5,70);</p><p>  Set_Color(GUI_WHITE);

40、 //小組成員姓名學(xué)號顯示</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"小組成員:"CN_end,160,5);</p><p>  Set_Color(GUI

41、_WHITE);</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"徐維響"CN_end,160,25);</p><p>  Set_Color(GUI_WHITE);</p><p>  Set_Font(&CHIN

42、ESE_FONT16);</p><p>  Disp_String (CN_start"徐帥東"CN_end,160,45);</p><p>  Set_Color(GUI_WHITE);</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (

43、CN_start"周斌"CN_end,160,65);</p><p>  Set_Color(GUI_WHITE);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("0962310229",230,

44、25); </p><p>  Set_Color(GUI_WHITE);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("0962310228",230,45); </p&g

45、t;<p>  Set_Color(GUI_WHITE);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("0962310231",230,65); </p><p>  Set_Colo

46、r(GUI_WHITE);//設(shè)定字體顏色</p><p>  Set_Font(&GUI_Font8x16); //設(shè)定字體類型</p><p>  Disp_String ("D7",5,175); //D7位置</p><p>  Disp_String ("

47、;D8",5,115); //D8位置</p><p>  for(;;) //閃爍</p><p><b>  {</b></p><p>  OSSemPend(Send_D7light_Sem, 0, &err); </p><p>  if(f

48、lag==0)//0狀態(tài)</p><p><b>  {</b></p><p>  Set_Color(GUI_GREEN);//圓1顏色</p><p>  Fill_Circle(50 , 120, 20);</p><p><b>  //圓1位置<

49、;/b></p><p>  Set_Color(GUI_RED);</p><p><b>  //圓2顏色</b></p><p>  Fill_Circle(50 , 180, 20);//圓2位置</p><p>  flag = 1;//轉(zhuǎn)換為1狀態(tài)<

50、/p><p><b>  }</b></p><p>  else//其他狀態(tài)(即1狀態(tài))</p><p><b>  {</b></p><p>  Set_Color(GUI_RED);//圓1顏色</p><p>  Fil

51、l_Circle(50, 120, 20);</p><p>  Set_Color(GUI_GREEN);//圓2顏色</p><p>  Fill_Circle(50, 180, 20);</p><p>  flag = 0;//轉(zhuǎn)換為0狀態(tài)</p><p><b>  }<

52、;/b></p><p>  OSSemPost(Send_LCD_Sem);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  ************

53、*************************************************************************************************</p><p>  - 函數(shù)名稱 : Task_START</p><p>  - 函數(shù)說明 : 系統(tǒng)啟動后運(yùn)行的第一個(gè)任務(wù),,點(diǎn)亮D7熄滅D8</p><p>  - 輸

54、入?yún)?shù) : pdata</p><p>  - 輸出參數(shù) : 無</p><p>  *************************************************************************************************************</p><p><b>  */</b>

55、</p><p>  void Task_1(void *pdata)</p><p><b>  {</b></p><p>  INT32U flag=0;</p><p>  INT8U err; </p><p>  Rtc_Tick_Init();

56、 //打開時(shí)鐘節(jié)拍,讓操作系統(tǒng)跑起來</p><p><b>  for(;;)</b></p><p><b>  { </b></p><p><b>  int i;</b></p><p>  OSSemPend(Send_LCD_Sem, 0, &err)

57、; </p><p>  if(flag==0)</p><p><b>  {</b></p><p>  for(i=0;i<500000;i++);</p><p>  rPCONB = 0x7cf;</p><p>  rPDATB = 0x7ef;</p><

58、p><b>  flag = 1;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  { </b></p><p>  for(i=0;i<500000;i++); &

59、lt;/p><p>  rPCONB = 0x7cf;</p><p>  rPDATB = 0x7df;</p><p><b>  flag = 0;</b></p><p><b>  }</b></p><p>  OSSemPost(Send_D7light_Sem);

60、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  *******************************************************************

61、******************************************</p><p>  - 函數(shù)名稱 : Main(void)</p><p>  - 函數(shù)說明 : 系統(tǒng)的主程序入口</p><p>  - 輸入?yún)?shù) : 無</p><p>  - 輸出參數(shù) : 無</p><p>  *******

62、******************************************************************************************************</p><p><b>  */</b></p><p>  void Main(void) </p&g

63、t;<p><b>  { </b></p><p>  Target_Init(); // ARMII實(shí)驗(yàn)系統(tǒng)的初始化,包括CPU板</p><p>  GUI_Init();</p><p>  OSInit(); // 操作系統(tǒng)的初始化&

64、lt;/p><p>  Send_D7light_Sem = OSSemCreate(0);</p><p>  Send_LCD_Sem = OSSemCreate(0);</p><p>  OSSemPend;</p><p>  OSSemPost(Send_D7light_Sem); //創(chuàng)建信號

65、量</p><p>  OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5); //創(chuàng)建任務(wù)一</p><p>  OSTaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2[(STACKS

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論