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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  題 目 基于LCD的電子時鐘設(shè)計 </p><p>  專業(yè)、學號 </p><p>  授課班號 </p><p>  學生

2、姓名 </p><p>  指導(dǎo)教師 </p><p>  完成時間 </p><p>  課程設(shè)計(報告)任務(wù)書</p><p><b> ?。ɡ?工 科 類)&

3、lt;/b></p><p> ?、瘛⒄n程設(shè)計(報告)題目:</p><p>  基于LCD的電子時鐘設(shè)計 </p><p> ?、颉⒄n程設(shè)計(論文)工作內(nèi)容</p><p>  一、課程設(shè)計目標 </p><p>  1、

4、培養(yǎng)綜合運用知識和獨立開展實踐創(chuàng)新的能力;</p><p>  2、掌握嵌入式系統(tǒng)設(shè)計基本原理、培養(yǎng)嵌入式系統(tǒng)設(shè)計能力;</p><p>  二、研究方法及手段應(yīng)用</p><p>  1、將任務(wù)分成若干模塊,查閱相關(guān)論文資料,分模塊調(diào)試和完成任務(wù);</p><p>  2、使用實驗箱上的S3C44BOX芯片系統(tǒng)和LCD作為硬件基礎(chǔ);<

5、/p><p>  3、使用ADS1.2及H-JTAG對源程序進行編譯、仿真、調(diào)試,下載到芯片中實現(xiàn)LCD電子時鐘功能。</p><p><b>  課程設(shè)計預(yù)期效果</b></p><p>  1、完成實驗環(huán)境搭建:學習LCD與ARM的LCD的控制器的接口原理;掌握內(nèi)置LCD控制器驅(qū)動編寫方法;</p><p>  2、設(shè)計

6、完成電子時鐘源程序;</p><p>  3、源程序編譯、調(diào)試通過,下載到實驗箱中,實現(xiàn)電子時鐘功能,并在LCD上顯示類似的時鐘界面,動態(tài)顯示當前的時間,包括:年、月、日、時、分、秒,時針,分針、秒針必須為動態(tài)實時指示當前的時間。</p><p>  學生姓名: 專業(yè)年級: </p><p><b&

7、gt;  目 錄</b></p><p><b>  前 言2</b></p><p>  第一章 系統(tǒng)設(shè)計3</p><p>  第一節(jié) 課題目標及總體方案3</p><p>  第二節(jié) 硬件平臺簡介3</p><p>  一、 S3C44B0X簡介3</p&

8、gt;<p>  二、S3C44B0X與LCD連接5</p><p>  第二節(jié) 軟件系統(tǒng)設(shè)計5</p><p>  一、μC/OS-II系統(tǒng)模塊設(shè)計5</p><p>  二、LCD初始化模塊設(shè)計5</p><p>  三、 時鐘應(yīng)用系統(tǒng)模塊設(shè)計5</p><p>  第二章 實驗結(jié)果及討論

9、7</p><p>  第一節(jié) ADS1.2集成開發(fā)環(huán)境簡介7</p><p>  第二節(jié) 調(diào)試結(jié)果與分析9</p><p>  第三章 結(jié) 論10</p><p><b>  心得體會11</b></p><p><b>  參考文獻12</b></p

10、><p><b>  附 錄13</b></p><p><b>  源程序13</b></p><p><b>  前 言</b></p><p>  隨著科技的發(fā)展,嵌入式系統(tǒng)廣泛應(yīng)用于工業(yè)控制和商業(yè)管理領(lǐng)域,在多媒體手機、袖珍電腦、掌上電腦、車載導(dǎo)航器等方面的應(yīng)用,更

11、是極大地促進了嵌入式技術(shù)深入到生活和工作各個方面。嵌入式系統(tǒng)主要由嵌入式處理器、相關(guān)支撐硬件及嵌入式軟件系統(tǒng)組成;本文介紹基于ARM7的嵌入式微處理器S3C44BOX和LCD顯示器的電子時鐘的設(shè)計,實現(xiàn)電子時鐘的功能,并在LCD上顯示類似的時鐘界面;動態(tài)顯示當前的時間,包括:年、月、日、時、分、秒,時針。</p><p><b>  第一章 系統(tǒng)設(shè)計</b></p><

12、p>  第一節(jié) 課題目標及總體方案</p><p>  本課程設(shè)計設(shè)計一種基于ARM7的嵌入式微處理器S3C44B0X和LCD顯示器的電子時鐘,實現(xiàn)電子時鐘的功能,并在LCD上顯示類似的時鐘界面;動態(tài)顯示當前的時間,包括:年、月、日、時、分、秒,時針。</p><p>  本課程設(shè)計主要為軟件設(shè)計,硬件部分使用EL-ARM-830教學實驗箱上的S3C44B0X和LCD模塊。軟件部分

13、使用ADS1.2及H-JTAG對源程序進行編譯、仿真、調(diào)試,下載。軟件設(shè)計采用模塊化設(shè)計方法,分為μC/OS-II系統(tǒng)模塊、LCD初始化模塊、時鐘應(yīng)用系統(tǒng)模塊等,其中,時鐘系統(tǒng)應(yīng)用模塊包括時鐘計時模塊、時鐘顯示模塊等。各模塊之間功能獨立,協(xié)同完成本課程設(shè)計的全部功能。系統(tǒng)設(shè)計框圖如圖1。</p><p>  圖1 系統(tǒng)設(shè)計框圖 </p><p>  第二節(jié) 硬件平臺簡介</p>

14、;<p>  S3C44B0X簡介</p><p>  S3C44B0X 微處理器是三星公司研發(fā)的基于ARM7TDMI 核的高性能嵌入式處理器,為手持設(shè)備和一般類型應(yīng)用提供了高性價比和高性能的微控制器解決方案。由于其高性價比以及內(nèi)嵌了多種接口,在手持設(shè)備和消費類電子中得到了廣泛的應(yīng)用。為了降低成本,S3C44B0X提供了豐富的內(nèi)置部件,包括:8KB cache、內(nèi)部SRAM、LCD 控制器、帶自動握

15、手協(xié)議的2通道UART、4通道DMA、系統(tǒng)管理器(片選邏輯,F(xiàn)P/EDO/SDRAM控制器)、帶有PWM功能的5通道定時器,I/O端口,RTC,8通道10位ADC,IIC-BUS接口,IIS-BUS接口,同步SIO接口和PLL倍頻器。</p><p>  S3C44B0X 采用了ARM7TDMI內(nèi)核,0.25um工藝的CMOS標準宏單元和存儲編譯器。它的低功耗和出色的全靜態(tài)設(shè)計特別適用于對成本和功耗敏感的應(yīng)用。同

16、樣S3C44B0X還采用了一種新的總線結(jié)構(gòu),即SAMBAII(三星ARM CPU 嵌入式微處理器總線結(jié)構(gòu))。 </p><p>  S3C44B0X的特性是它的CPU核,是由ARM公司設(shè)計的16/32位ARM7TDMI RISC處理器(主頻66MHZ)。ARM7TDMI體系結(jié)構(gòu)的特點是它集成了Thumb代碼壓縮器,片上的ICE斷點調(diào)試支持,和一個32 位的硬件乘法器。</p><p>

17、  S3C44B0X 內(nèi)置LCD控制器可以支持規(guī)格為每像素2位 (4 級灰度) 或每像素4 位(16 級灰度)的黑白LCD。也可以支持每像素8位(256級顏色)的彩色LCD屏。LCD控制器可以通過編程支持不同LCD屏的要求,例如行和列像素數(shù),數(shù)據(jù)總線寬度,接口時序等。 </p><p>  基于S3C44B0X的典型嵌入式系統(tǒng)硬件體系結(jié)構(gòu)如圖2所示。</p><p>  圖2 S3C4

18、4B0X硬件體系結(jié)構(gòu)圖</p><p>  二、S3C44B0X與LCD連接</p><p>  本課程設(shè)計使用的EL-ARM-830教學實驗箱包含有一塊5.7寸,256色,320X240像素的LCD顯示屏,S3C44B0X內(nèi)置了LCD控制器,控制LCD。</p><p>  S3C44B0X與LCD連接示意圖如圖3。</p><p>  圖

19、3 S3C44B0X與LCD連接示意圖</p><p>  第二節(jié) 軟件系統(tǒng)設(shè)計</p><p>  一、μC/OS-II系統(tǒng)模塊設(shè)計</p><p>  本模塊的主要功能是將μC/OS-II系統(tǒng)移植到S3C44B0X上,作為調(diào)用硬件各項功能的基礎(chǔ),同時也完成S3C44B0X的功能本模塊主要涉及到μC/OS-II在ARM上的移植,不屬于本課程設(shè)計討論的范疇,故不再

20、贅述。</p><p>  二、LCD初始化模塊設(shè)計</p><p>  本模塊的主要功能完成LCD的初始化,加載LCD驅(qū)動程序,使LCD與S3C44B0X實現(xiàn)對接,完成顯示功能。本模塊我們使用了實驗箱現(xiàn)有的相關(guān)程序。故不再贅述。</p><p>  時鐘應(yīng)用系統(tǒng)模塊設(shè)計</p><p>  本模塊是電子時鐘功能實現(xiàn)的主要模塊,也是本次課程設(shè)

21、計的核心模塊,本模塊實現(xiàn)的功能主要有:時間計時,鐘面時間顯示,數(shù)字時間顯示。</p><p>  其中,時間計時功能和在LCD上顯示數(shù)字鐘顯示功能較易實現(xiàn),之前的單片機課程設(shè)計和HDL課程設(shè)計均有所涉及。計時使用S3C44B0X內(nèi)部時鐘脈沖和分頻實現(xiàn),在LCD上顯示數(shù)字鐘顯示使用LCD數(shù)字顯示功能實現(xiàn)。</p><p>  在LCD上實現(xiàn)鐘面顯示功能較為復(fù)雜,主要包括以下過程:</p

22、><p>  給秒針、分針各設(shè)定60個坐標(包括X坐標和Y坐標),表示60秒和60分,給時針設(shè)定12個坐標(包括X坐標和Y坐標);</p><p>  設(shè)定鐘面顯示初值并完成初值與時針、分針、秒針的坐標的映射,更改初值可以完成時間的設(shè)定;</p><p>  使用畫線函數(shù)完成秒針、分針、時針顯示,主要功能是擦除上一秒(分、時)的軌跡和顯示這一秒(分、時)。</p&

23、gt;<p>  使用畫點函數(shù)完成鐘面基本構(gòu)造,即鐘面與12個整點時間點。</p><p>  除此之外,需要在整個移植后的系統(tǒng)中初始化堆棧并設(shè)定任務(wù),通過任務(wù)完成時鐘的各項功能。</p><p>  第二章 實驗結(jié)果及討論</p><p>  第一節(jié) ADS1.2集成開發(fā)環(huán)境簡介</p><p>  ADS集成開發(fā)環(huán)境是A

24、RM公司推出的ARM核微控制器集成開發(fā)工具,英文全稱為ARM Developer Suite,成熟版本為ADS1.2。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持軟件調(diào)試及JTAG硬件仿真調(diào)試,支持匯編、C、C++源程序,具有編譯效率高、系統(tǒng)庫功能強等特點,可以在Windows98、 Windows XP、Windows2000以及RedHat Linux上運行。 </p><p>  ADS 1

25、.2使用CodeWarrior IDE集成開發(fā)環(huán)境,并集成了ARM匯編器、 ARM的C/C++編譯器、Thumb的C/C++編譯器、ARM連接器,包含工程管理器、代碼生成接口、語法敏感(對關(guān)鍵字以不同顏色顯示)編輯器、源文件和類瀏覽器等等。CodeWarrior IDE 主窗口如圖4所示。</p><p>  圖4 CodeWarrior開發(fā)環(huán)境 </p><p>  AXD調(diào)試器為AR

26、M擴展調(diào)試器(即ARM eXtended Debugger),包括 ADW/ADU的所有特性,支持硬件仿真和軟件仿真(ARMulator)。AXD能夠裝載映像文件到目標內(nèi)存,具有單步、全速和斷點等調(diào)試功能,可以觀察變量、寄存器和內(nèi)存的數(shù)據(jù)等等。AXD 調(diào)試器主窗口如圖5所示。</p><p>  圖5 CodeWarrior開發(fā)環(huán)境 </p><p>  本課程設(shè)計在ADS1.2集成開發(fā)

27、環(huán)境內(nèi)編寫源程序并進行編譯,調(diào)試,然后利用H-JTAG下載到芯片中進行片上調(diào)試,H-JTAG連接完成后如圖6所示。</p><p>  圖6 H-JTAG連接成功示意圖</p><p><b>  調(diào)試結(jié)果與分析</b></p><p>  通過編譯調(diào)試下載到實驗箱的S3C44B0X芯片中進行調(diào)試,LCD顯示結(jié)果如圖7所示。</p>

28、;<p>  圖7 LCD調(diào)試結(jié)果顯示</p><p>  屏幕右上角顯示出學號姓名和作品信息;</p><p>  屏幕中間顯示的是鐘面,有時針、分針和秒針,顯示實時時間;</p><p>  屏幕下方顯示的是數(shù)字時鐘,顯示時分秒(與鐘面時間相對應(yīng))和年月日。</p><p>  完成系統(tǒng)設(shè)計要求的各項功能。</p&g

29、t;<p><b>  第三章 結(jié) 論</b></p><p>  本課程設(shè)計屬于嵌入式系統(tǒng)項目設(shè)計,利用EL-ARM-830教學實驗箱上的嵌入式微處理器S3C44B0X和LCD模塊,使用C語言編程,結(jié)合ADS1.2對源程序進行編譯、連接和運行,使用H-JTAG下載,設(shè)計完成了基于LCD的電子時鐘,實現(xiàn)如下功能:</p><p>  LCD顯示“鐘面”

30、樣式,時針、分針、秒針顯示實時時間;</p><p>  LCD顯示“數(shù)字鐘”樣式,動態(tài)顯示年、月、日、時、分、秒;</p><p>  顯示時間可以修改并保持“鐘面”與“數(shù)字鐘”時間保持一致;</p><p>  LCD左上角動態(tài)顯示小組成員姓名、學號及選題信息。</p><p>  本課程設(shè)計完成選題要求,但是有如下方面有待改進:<

31、/p><p>  “鐘面”現(xiàn)實不夠精確,分針和時針只設(shè)定了60個坐標位置,分針和時針走動不均勻;</p><p>  數(shù)字鐘部分尚未考慮到“大月”和“小月”以及“平年”和“閏年”的日期問題,所有月份均設(shè)定為30天;</p><p>  時間修改麻煩,需要對源程序中設(shè)定的初值進行修改,無法通過鍵盤對時間進行修改;</p><p>  未調(diào)用S4C4

32、4B0X內(nèi)部實時時鐘(RTC)模塊,不能顯示出精確的內(nèi)部實時時間。</p><p>  上述問題我們會在今后的學習和實踐中予以改善,我們將繼續(xù)學習嵌入式系統(tǒng)原理和設(shè)計,繼續(xù)學習LCD顯示技術(shù),為將來的畢業(yè)設(shè)計打好基礎(chǔ)。</p><p><b>  心得體會</b></p><p>  本次課程設(shè)計是嵌入式系統(tǒng)項目設(shè)計,是在本學期我們學完了嵌入式

33、系統(tǒng)課程以后相應(yīng)的課程設(shè)計。因為課時的安排,嵌入式系統(tǒng)只有2個學分,在有限的課時內(nèi)我們掌握的知識也是相當有限的,我們對嵌入式系統(tǒng)的硬件和軟件的基本原理、基本特點,嵌入式系統(tǒng)設(shè)計的基本方法有了一個初步的了解掌握。這些知識對于我們完成本次課程設(shè)計是遠遠不夠的。我們自己查找了許多關(guān)于S3C44B0X和LCD的資料和文獻作為課程設(shè)計的知識儲備,同時也參考了去年學長學姐完成的課題,取人之長、補己之短。經(jīng)過我們的努力,在老師同學的幫助下,我們順利完

34、成了課程設(shè)計,對嵌入式系統(tǒng)的硬件、軟件有了更為深入的了解,也深入掌握了嵌入式系統(tǒng)設(shè)計的基本方法,達到了預(yù)期的目的。</p><p>  本次課程設(shè)計首先要感謝奚吉老師,對我們的課程設(shè)計給予了充分的關(guān)懷和幫助;然后要感謝我的搭檔范娟,我們一起完成了本次課程設(shè)計。</p><p><b>  參考文獻</b></p><p>  王勇.嵌入式系統(tǒng)原

35、理與設(shè)計[M].杭州:浙江大學大學出版社,2007.</p><p>  耿輝等.S3C44B0X的LCD顯示解決方案 中國科技論文在線,2007. </p><p>  SAMSUNG公司. S3C44B0X數(shù)據(jù)手冊. www.samsungsemi.com,2006. </p><p>  EL-ARM-830 實驗系統(tǒng)的資源介紹,2000.</p>

36、;<p>  林志琦等.ARM微控制器與液晶屏接口的研究[J].長春大學學報,2010,20(2):71-74.</p><p>  周立功單片機公司. ADS集成開發(fā)環(huán)境及EasyJTAG仿真器應(yīng)用,2005.</p><p><b>  附 錄</b></p><p><b>  源程序</b><

37、/p><p>  #include "..\inc\config.h"</p><p>  #defineSTACKSIZE256</p><p>  #define x_line 160</p><p>  #define y_line 80</p><p>  OS_STK_DATA stk;

38、</p><p>  extern GUI_FONT GUI_Font8x16;</p><p>  OS_EVENT * Send_D7light_Sem;</p><p>  OS_EVENT * Send_LCD_Sem;</p><p>  OS_EVENT *Key_Mbox;</p><p>  I8 H

39、our[3],Min[3],Sec[3];</p><p>  I8 hour = 15%12, min = 20, sec = 40;</p><p>  I8 YEA1[3],YEA2[3],MON[3],DAY[3];</p><p>  int yea1 = 20,yea2=11, mon = 6, day = 23;</p><p>

40、;  int SpaceXS[61]={160,165,170,175,180,185,</p><p>  189,193,197,201,205,</p><p>  206,207,208,209,210,</p><p>  209,208,207,206,205,</p><p>  201,197,193,189,185,<

41、/p><p>  180,175,170,165,160,</p><p>  155,150,145,140,135,</p><p>  131,127,123,119,115,</p><p>  114,113,112,111,110,</p><p>  111,112,113,114,115,</p>

42、;<p>  119,123,127,131,135,</p><p>  140,145,150,155,160, </p><p><b>  },</b></p><p>  SpaceYS[61]={30,31,32,33,34,</p><p>  35,39,43,47,5

43、1,</p><p>  55,60,65,70,75,</p><p>  80,85,90,95,100,</p><p>  105,109,113,117,121,</p><p>  125,126,127,128,129,</p><p>  130,129,128,127,126,</p>

44、<p>  125,121,117,113,109,</p><p>  105,100,95,90,85,</p><p>  80,75,70,65,60,</p><p>  55,51,47,43,39,</p><p>  35,34,33,32,31,30},</p><p>  SpaceXM[

45、61]={160,164,168,172,176,180,183,186,189,192,195,196,197,198,199,200,199,198,197,196,195,192,189,186,183,180,176,172,168,164,160,156,152,148,144,140,137,134,131,128,125,124,123,122,121,120,121,122,123,124,125,128,131,134

46、,137,140,144,148,152,156,</p><p>  160 }, SpaceYM[61]={40,41,42,43,44,45,48,51,54,57, 60,64,68,72,76,80,84,88,92,96,100,103,106,109,112,115,116,117,118,119,120,119,118,117,116,115,112,109,106,103,100,96,92,

47、88,84,80,76,72,68,64,60,57,54,51,48,45,44,43,42,41,4},</p><p>  SpaceXH[13]={160,175,185,190,185,175,160,145,135,130,135,145,160}, SpaceYH[13]={50,55,65,80,95,105,110,105,95,80,65,55,50},</p><p&g

48、t;  *Placex=&SpaceXS[40],*Placey=&SpaceYS[40],*Placexm=&SpaceXM[20],*Placeym=&SpaceYM[20], *Placexh=&SpaceXH[15%12],*Placeyh=&SpaceYH[15%12];</p><p>  void show(I8 s)</p><

49、p><b>  {</b></p><p>  if(s%5==0)</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("0862310104",1

50、0,30); </p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("0862310121",10,10);}</p><p>  else if(s%5==1)</p><p>  {Set_Color(GUI_YELLOW);</p&g

51、t;<p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("guxin ",10,10); </p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("fanjuan

52、",10,30); </p><p><b>  }</b></p><p>  else if(s%5==2)</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Set_Font(&GUI_Font8x16); </p><p>

53、  Disp_String("0862310104",10,30); </p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String("0862310121",10,10); </p><p><b>  }</b></p>

54、<p>  else if(s%5==3)</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("fanjuan ",10,30); </p><p>  Set

55、_Font(&GUI_Font8x16); </p><p>  Disp_String ("guxin ",10,10); </p><p><b>  }</b></p><p>  else if(s%5==4)</p><p>  {Set_Color(GUI_YELLOW)

56、;</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("S3C44BOX ",10,10);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Disp_String ("LC

57、D CLOCK ",10,30); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void Shows()</p><p>  {show(sec);</p><p>  Set_Color(GUI_GRAY

58、); //擦除上一秒 Draw_Line(x_line,y_line,*Placex,*Placey);</p><p>  Placex=Placex+1;</p><p>  Placey=Placey+1;</p><p>  Set_Color(GUI_YELLOW);//顯示下一秒的 </p><p>  Draw_Lin

59、e(x_line,y_line,*Placex,*Placey);</p><p>  Set_Color(GUI_RED); //顯示下一分的 DrawLine(x_line,y_line,*Placexm,*Placeym); </p><p>  Set_Color(GUI_GREEN); //顯示下一時的 Draw_Line(x_line,y_line,*Pla

60、cexh,*Placeyh); if(Placex==&SpaceXS[60]&&Placey==&SpaceYS[60])</p><p>  { Placex=&SpaceXS[0];</p><p>  Placey=&SpaceYS[0];</p><p><b>  } </b&

61、gt;</p><p><b>  }</b></p><p>  void Showm()</p><p>  {Set_Color(GUI_GREEN);</p><p>  Set_Color(GUI_RED);</p><p>  Set_Color(GUI_YELLOW); </p

62、><p>  Set_Color(GUI_GRAY); //擦除上一分的</p><p>  DrawLine(x_line,y_line,*Placexm,*Placeym);</p><p>  Placexm=Placexm+1;</p><p>  Placeym=Placeym+1;</p><p>  Set

63、_Color(GUI_RED); //顯示下一分的 DrawLine(x_line,y_line,*Placexm,*Placeym);Set_Color(GUI_GREEN);//顯示下一時的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placexm==&SpaceXM[60]&&Placeym==&SpaceYM[60])</p>

64、<p><b>  {</b></p><p>  Placexm=&SpaceXM[0];</p><p>  Placeym=&SpaceYM[0];</p><p><b>  } </b></p><p><b>  }</b>&

65、lt;/p><p>  void Showh()</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Set_Color(GUI_GREEN);</p><p>  Set_Color(GUI_RED);</p><p>  Set_Color(GUI_GRAY); //擦除上一時的

66、DrawLine(x_line,y_line,*Placexh,*Placeyh);</p><p>  Placexh=Placexh+1;</p><p>  Placeyh=Placeyh+1;</p><p>  Set_Color(GUI_GREEN);//顯示下一時的 DrawLine(x_line,y_line,*Placexh,*Placeyh)

67、; if(Placexh==&SpaceXH[12]&&Placeyh==&SpaceYH[12])</p><p>  {Placexh=&SpaceXH[0];</p><p>  Placeyh=&SpaceYH[0];</p><p><b>  }</b></p><

68、p><b>  }</b></p><p>  void Shouw_Cricle() // 整 點</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Fill_Circle (160, 30,2); // 12點(x,y,r)</p><p>  Fill_Cir

69、cle (135, 35,2); // 11 點(x,y,r)</p><p>  Fill_Circle (115, 55,2); // 10 點(x,y,r)</p><p>  Fill_Circle (110, 80,2); // 9 點(x,y,r)</p><p>  Fill_Circle (115, 105,2); // 8 點(x,y,r)

70、</p><p>  Fill_Circle (135, 125,2); // 7 點(x,y,r)</p><p>  Fill_Circle (160, 130,2); // 6 點(x,y,r)</p><p>  Fill_Circle (185, 125,2); // 5 點(x,y,r)</p><p>  Fill_Cir

71、cle (205, 105,2); // 4 點(x,y,r)</p><p>  Fill_Circle (210, 80,2); // 3 點(x,y,r)</p><p>  Fill_Circle (205, 55,2); // 2點(x,y,r)</p><p>  Fill_Circle (185, 35,2); // 1點(x,y,r)</

72、p><p><b>  }</b></p><p>  void Show_ht()</p><p>  {Set_Color(GUI_GRAY); </p><p>  Fill_Circle (160,80,54);</p><p><b>  }</b></p>

73、;<p>  void ChangeForm(char Time[],char time)</p><p>  { Time[0] = time / 10 + 48;</p><p>  Time[1] = time % 10 + 48;</p><p>  Time[2] = '\0';</p><p>

74、<b>  }</b></p><p>  void Display_Time(char x,char y) </p><p>  { ChangeForm(Hour, hour);</p><p>  ChangeForm(Min, min);</p><p>  ChangeForm(Sec, sec);

75、</p><p>  ChangeForm(MON, mon);</p><p>  ChangeForm(DAY, day);</p><p>  ChangeForm(YEA1, yea1);</p><p>  ChangeForm(YEA2, yea2);</p><p>  Disp_String (

76、Hour,x,160); </p><p>  Disp_String (":",x + 16,160); </p><p>  Disp_String (Min,x + 24,160); </p><p>  Disp_String (":",x + 40,160); </p><p>  Disp_

77、String (Sec,x + 48,160);</p><p>  Disp_String (YEA1,x , 180); </p><p>  Disp_String (YEA2,x +16,180); </p><p>  Disp_String ("-",x + 32,180);</p><p>  Disp

78、_String (MON,x + 40,180); </p><p>  Disp_String ("-",x + 56,180); </p><p>  Disp_String (DAY,x + 64,180); </p><p><b>  }</b></p><p>  void Show

79、_Color()</p><p>  {Set_Color( GUI_BLUE );</p><p>  Fill_Rect(0,0,319,239);</p><p>  Set_Color(GUI_BLUE);</p><p>  Set_BkColor (GUI_BLUE);</p><p>  Fill_Re

80、ct(0,0,319,2);</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><b>  }</b></p><p> 

81、 /*分配各任務(wù)的堆棧容量*/</p><p>  OS_STK Stack_Task_1[STACKSIZE];</p><p>  OS_STK Stack_Task_2[STACKSIZE*3];</p><p>  /*- 函數(shù)名稱 : Task_3(void *pdata)</p><p>  - 函數(shù)說明 : GUI任務(wù),優(yōu)先級為

82、56</p><p>  - 輸入?yún)?shù) : pdata</p><p>  - 輸出參數(shù) : 無*/</p><p>  void Task_3(I8 s)</p><p>  {I8 display;</p><p><b>  for(;;)</b></p><p>

83、  { Delay(100);</p><p>  display++;</p><p>  Set_Color(GUI_RED);</p><p>  if(display==1000)</p><p>  { display=0;}</p><p><b>  }</b></p&g

84、t;<p><b>  }</b></p><p>  /*- 函數(shù)名稱 : Task_2(void *pdata)</p><p>  - 函數(shù)說明 : GUI任務(wù),優(yōu)先級為9</p><p>  - 輸入?yún)?shù) : pdata</p><p>  - 輸出參數(shù) : 無*/</p><p

85、>  void Task_2(void *pdata)</p><p>  { for(;;) </p><p><b>  {</b></p><p>  /*****全屏顏色設(shè)計*******/</p><p>  /*******時 鐘 位 置*******/</p><p>  

86、Show_Color();</p><p>  Show_ht();</p><p>  /******點 的 坐 標********/</p><p>  Shouw_Cricle();</p><p>  /**定背景顏色API**/</p><p>  Set_Color(GUI_YELLOW); //

87、顯示 </p><p>  DrawLine(x_line,y_line,*Placex,*Placey);</p><p>  Display_Time(130, 160);//時間 </p><p><b>  do</b></p><p>  {Delay(1200);</p><p

88、><b>  sec++;</b></p><p><b>  Shows();</b></p><p>  if (sec >= 60)</p><p>  { sec = 0;</p><p><b>  min++;</b></p><p&

89、gt;<b>  Showm();</b></p><p>  if (min >= 60)</p><p><b>  {min = 0;</b></p><p><b>  hour++;</b></p><p><b>  Showh();</b&g

90、t;</p><p>  if (hour >= 23)</p><p>  {hour = 0; </p><p><b>  day++;</b></p><p>  if(day >=32)</p><p>  {day = 1;</p><p>&l

91、t;b>  mon++;</b></p><p>  if(mon >= 13)</p><p>  { mon = 1;</p><p><b>  yea1++;</b></p><p><b>  }</b></p><p>  }

92、 </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  DisplayTime(130, 160);//時間 日期</p><p>  }while(1);&

93、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  /*- 函數(shù)名稱 : Task_1</p><p>  - 函數(shù)說明 : 系統(tǒng)啟動后運行的第一個任務(wù),優(yōu)先級為5</p><p>  - 輸入?yún)?shù) : pdata</

94、p><p>  - 輸出參數(shù) : 無*/</p><p>  void Task_1(void *pdata)</p><p>  { Rtc_Tick_Init(); //打開時鐘節(jié)拍,讓操作系統(tǒng)跑起來</p><p>  OSTaskCreate(Task_2, (vo

95、id *)0, (OS_STK *)&Stack_Task_2[(STACKSIZE*3) - 1], 9); //在任務(wù)里創(chuàng)建另一個任務(wù)</p><p><b>  for(;;)</b></p><p>  { OSTimeDly(50); //時鐘屏幕顯示</p><p><b>  }</b>&l

96、t;/p><p><b>  }</b></p><p>  /*******主 函 數(shù)***********/</p><p>  void Main(void) </p><p><b>  { </b></p><p&g

97、t;  Target_Init(); // ARMII實驗系統(tǒng)的初始化,包括CPU板</p><p>  GUI_Init();</p><p>  OSInit();</p><p>  OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5); //

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論