課程設(shè)計(jì)---基于lcd的電子時(shí)鐘設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

9、7</p><p>  第一節(jié) ADS1.2集成開發(fā)環(huán)境簡(jiǎn)介7</p><p>  第二節(jié) 調(diào)試結(jié)果與分析9</p><p>  第三章 結(jié) 論10</p><p><b>  心得體會(huì)11</b></p><p><b>  參考文獻(xiàn)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)域,在多媒體手機(jī)、袖珍電腦、掌上電腦、車載導(dǎo)航器等方面的應(yīng)用,更

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

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

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

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

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

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

17、  S3C44B0X 內(nèi)置LCD控制器可以支持規(guī)格為每像素2位 (4 級(jí)灰度) 或每像素4 位(16 級(jí)灰度)的黑白LCD。也可以支持每像素8位(256級(jí)顏色)的彩色LCD屏。LCD控制器可以通過編程支持不同LCD屏的要求,例如行和列像素?cái)?shù),數(shù)據(jù)總線寬度,接口時(shí)序等。 </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è)計(jì)使用的EL-ARM-830教學(xué)實(shí)驗(yàn)箱包含有一塊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è)計(jì)</p><p>  一、μC/OS-II系統(tǒng)模塊設(shè)計(jì)</p><p>  本模塊的主要功能是將μC/OS-II系統(tǒng)移植到S3C44B0X上,作為調(diào)用硬件各項(xiàng)功能的基礎(chǔ),同時(shí)也完成S3C44B0X的功能本模塊主要涉及到μC/OS-II在ARM上的移植,不屬于本課程設(shè)計(jì)討論的范疇,故不再

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

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

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

23、gt;<p>  使用畫點(diǎn)函數(shù)完成鐘面基本構(gòu)造,即鐘面與12個(gè)整點(diǎn)時(shí)間點(diǎn)。</p><p>  除此之外,需要在整個(gè)移植后的系統(tǒng)中初始化堆棧并設(shè)定任務(wù),通過任務(wù)完成時(shí)鐘的各項(xiàng)功能。</p><p>  第二章 實(shí)驗(yàn)結(jié)果及討論</p><p>  第一節(jié) ADS1.2集成開發(fā)環(huán)境簡(jiǎ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)庫(kù)功能強(qiáng)等特點(diǎn),可以在Windows98、 Windows XP、Windows2000以及RedHat Linux上運(yùn)行。 </p><p>  ADS 1

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

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

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

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

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

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

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

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

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

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

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

36、;<p>  林志琦等.ARM微控制器與液晶屏接口的研究[J].長(zhǎng)春大學(xué)學(xué)報(bào),2010,20(2):71-74.</p><p>  周立功單片機(jī)公司. 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); //顯示下一時(shí)的 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);//顯示下一時(shí)的 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); //擦除上一時(shí)的

66、DrawLine(x_line,y_line,*Placexh,*Placeyh);</p><p>  Placexh=Placexh+1;</p><p>  Placeyh=Placeyh+1;</p><p>  Set_Color(GUI_GREEN);//顯示下一時(shí)的 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() // 整 點(diǎn)</p><p>  {Set_Color(GUI_YELLOW);</p><p>  Fill_Circle (160, 30,2); // 12點(diǎn)(x,y,r)</p><p>  Fill_Cir

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

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

71、cle (205, 105,2); // 4 點(diǎn)(x,y,r)</p><p>  Fill_Circle (210, 80,2); // 3 點(diǎn)(x,y,r)</p><p>  Fill_Circle (205, 55,2); // 2點(diǎn)(x,y,r)</p><p>  Fill_Circle (185, 35,2); // 1點(diǎn)(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)先級(jí)為

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)先級(jí)為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è)計(jì)*******/</p><p>  /*******時(shí) 鐘 位 置*******/</p><p>  

86、Show_Color();</p><p>  Show_ht();</p><p>  /******點(diǎn) 的 坐 標(biāo)********/</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);//時(shí)間 </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);//時(shí)間 日期</p><p>  }while(1);&

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

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

95、id *)0, (OS_STK *)&Stack_Task_2[(STACKSIZE*3) - 1], 9); //在任務(wù)里創(chuàng)建另一個(gè)任務(wù)</p><p><b>  for(;;)</b></p><p>  { OSTimeDly(50); //時(shí)鐘屏幕顯示</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實(shí)驗(yàn)系統(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論