2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、/p><p>  授課班號 </p><p>  學生姓名 </p><p>  指導教師 </p><p><b>  摘要</b></p><p> 

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

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

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

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

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

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

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

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

11、 LCD驅(qū)動程序組成</p><p>  LCD驅(qū)動程序的文件夾Gui(如圖1所示),其中,包括四個文件夾:</p><p>  Font中存放的是字體文件,存放四個文件,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)存放兩個文件,Glib.c是圖形顯示庫的源代碼,它主要實現(xiàn)LCD的中層和上層供用戶調(diào)用的API函數(shù),Glib.h則是供其他文件或自身調(diào)用的頭文件。</p><p>  Init中存放GUI初始化的函數(shù),Init文件夾內(nèi)存放兩個文件,data.h是數(shù)據(jù)類型重定義的文件,GUI_In

13、it.c是GUI系統(tǒng)的初始化文件。</p><p>  Lcddriver中存放的是LCD的底層驅(qū)動函數(shù),以及對LCD控制器的初始化函數(shù)。Lcddriver文件內(nèi)存放兩個文件,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ū)動程序,也就是把整個GUI文件夾加入該項目里。</p><p>  同時,還要在Application\INC目錄下的config.h文件中,加入GUI程序的頭文件,#include "..\..\Gui\Glib\Glib.h",這是為了在應用中方便調(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)下,要單獨開辟一個GUI任務,進行畫圖,一般這個任務的優(yōu)先級很低,一般它僅比

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

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

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

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

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

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

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

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

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

25、力出版社,2001[3]王田苗. 嵌入式系統(tǒng)設(shè)計與實例開發(fā).北京:清華大學出版社,2002</p><p>  [4] 毛德操,胡希明. 嵌入式系統(tǒng)[M]. 杭州:浙江大學出版社, 2003:325334.[5]Jean J. Labrosse 嵌入式實時操作系統(tǒng)μC/OS-Ⅱ 第2版[M] .北京:北京航空航天大學出版社.</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、 分配各任務的堆棧容量 **</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任務,優(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、 //小組成員姓名學號顯示</p><p>  Set_Font(&CHINESE_FONT16);</p><p>  Disp_String (CN_start"河海大學常州校區(qū)"CN_end,5,10);</p><p>  Set_Color(GUI_WHITE);

37、 //小組成員姓名學號顯示</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"指導老師:許老師"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、 //小組成員姓名學號顯示</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)啟動后運行的第一個任務,,點亮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、 //打開時鐘節(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實驗系統(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)建任務一</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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論