2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(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>  題 目 嵌入式系統(tǒng)項(xiàng)目設(shè)計(jì)</p><p>  課程設(shè)計(jì)(報(bào)告)任務(wù)書</p><p><b> ?。ɡ?工 科 類)</b></p><p>  Ⅰ、課程設(shè)計(jì)(報(bào)告)題目:</p><p>  

2、基于LCD的電子時(shí)鐘實(shí)驗(yàn) </p><p> ?、?、課程設(shè)計(jì)(論文)工作內(nèi)容</p><p>  學(xué)習(xí)LCD與ARM的LCD的控制器的接口原理,掌握內(nèi)置LCD控制器驅(qū)動(dòng)編寫方法和RTC控制方法,在可行性分析的基礎(chǔ)上實(shí)現(xiàn)以下功能: </p><p>  1、編寫程序?qū)崿F(xiàn)電子時(shí)鐘功能,通過實(shí)驗(yàn)系統(tǒng)的LCD將時(shí)間顯示出來; </p>&l

3、t;p>  2、仿照給定圖形在LCD上顯示類似的時(shí)鐘界面; </p><p>  3、動(dòng)態(tài)顯示當(dāng)前的時(shí)間,包括:年、月、日、時(shí)、分、秒,時(shí)針,分針、秒針必須為動(dòng)態(tài)實(shí)時(shí)指示當(dāng)前的時(shí)間。</p><p>  一、課程設(shè)計(jì)目標(biāo) </p><p>  1、培養(yǎng)綜合運(yùn)用知識(shí)和獨(dú)立開展實(shí)踐

4、創(chuàng)新的能力;</p><p>  2、培養(yǎng)學(xué)生的編程能力、用計(jì)算機(jī)解決實(shí)際問題的能力。</p><p>  3、培養(yǎng)學(xué)生遇到問題,解決問題的能力。 </p><p>  二、研究方法及手段應(yīng)用</p><p>  1、將任務(wù)分成若干模塊,查閱相關(guān)論文資料,分模塊調(diào)試和完成任務(wù);</p><p

5、>  2、實(shí)驗(yàn)設(shè)備有L-ARM-830教學(xué)實(shí)驗(yàn)箱,PentiumII以上的PC機(jī),仿真器電纜; </p><p>  3、PC操作系統(tǒng)WIN98或WIN2000或WINXP,ARM SDT2.5或ADS1.2集成開發(fā)環(huán)境,仿真器驅(qū)動(dòng)程序; </p><p>  4、本實(shí)驗(yàn)使用實(shí)驗(yàn)教學(xué)系統(tǒng)的CPU板,在進(jìn)行本實(shí)驗(yàn)時(shí),LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開

6、關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。</p><p>  三、課程設(shè)計(jì)預(yù)期效果</p><p>  1、完成實(shí)驗(yàn)環(huán)境搭建;</p><p>  2、分模塊調(diào)試和編譯;</p><p>  3、組合并完善程序;</p><p>  4、聯(lián)合仿真軟件運(yùn)行程序;</p><p>  5、液晶顯示器顯示時(shí)鐘圖樣,時(shí),

7、分,秒能指向正確的時(shí)間。</p><p>  學(xué)生姓名: 嚴(yán)維鋒 專業(yè)年級(jí): 自動(dòng)化2008級(jí) </p><p><b>  目 錄</b></p><p><b>  前 言3</b></p><p>  第一章 系統(tǒng)設(shè)計(jì)4</p><

8、;p>  第一節(jié) 課題目標(biāo)及總體方案4</p><p>  第二節(jié) 原理框圖5</p><p>  第三節(jié) 程序和芯片的初始化5</p><p>  第四節(jié) 構(gòu)建功能模塊7</p><p>  第五節(jié) main函數(shù)的局部原理分析8</p><p>  第二章 實(shí)驗(yàn)(測(cè)試)結(jié)果及討論13</p&

9、gt;<p>  第一節(jié) ads1.2 軟件的編譯,連接和運(yùn)行13</p><p>  第二節(jié) 程序調(diào)試14</p><p>  第三章 結(jié) 論14</p><p><b>  心得體會(huì)15</b></p><p><b>  參考文獻(xiàn)16</b></p>&

10、lt;p><b>  附 錄17</b></p><p><b>  源程序17</b></p><p><b>  前 言</b></p><p>  近年來,隨著計(jì)算機(jī)技術(shù)及集成電路技術(shù)的發(fā)展,嵌入式技術(shù)日漸普及,其強(qiáng)大的控制能力和專業(yè)性在通訊、網(wǎng)絡(luò)、工控、電子等領(lǐng)域發(fā)揮著越來越重要

11、的作用。嵌入式系統(tǒng)成為當(dāng)前當(dāng)之無愧的最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。</p><p>  實(shí)時(shí)時(shí)鐘(RTC)器件是一種能提供日歷/時(shí)鐘、數(shù)據(jù)存儲(chǔ)等功能的專用集成電路,常用作各種計(jì)算機(jī)系統(tǒng)的時(shí)鐘信號(hào)源和參數(shù)設(shè)置存儲(chǔ)電路。RTC具有計(jì)時(shí)準(zhǔn)確、耗電低和體積小等特點(diǎn),特別適用于在各種嵌入式系統(tǒng)忠記錄事件發(fā)生的時(shí)間和相關(guān)信息,尤其是在通信工程、電力自動(dòng)化、工業(yè)控制等自動(dòng)化程度較高領(lǐng)域的無人職守環(huán)境。隨著集成電路技術(shù)的不斷發(fā)

12、展,RTC器件的新品也不斷推出。這些新品不僅具有準(zhǔn)確的RTC,還有大容量的存儲(chǔ)器、溫度傳感器和A/D數(shù)據(jù)采集通道等,已成為集RTC、數(shù)據(jù)采集和存儲(chǔ)于一體的綜合功能器件,特別適用于以微控制器為核心的嵌入式系統(tǒng)。本課程設(shè)計(jì)將體現(xiàn)嵌入式技術(shù)的優(yōu)越性。</p><p><b>  第一章 系統(tǒng)設(shè)計(jì)</b></p><p><b>  課題目標(biāo)及總體方案</b

13、></p><p><b>  一、設(shè)計(jì)要求</b></p><p>  學(xué)習(xí)LCD與ARM的LCD的控制器的接口原理,掌握內(nèi)置LCD控制器驅(qū)動(dòng)編寫方法和RTC控制方法,在可行性分析的基礎(chǔ)上實(shí)現(xiàn)以下功能: </p><p>  1、編寫程序?qū)崿F(xiàn)電子時(shí)鐘功能,通過實(shí)驗(yàn)系統(tǒng)的LCD將時(shí)間顯示出來; </p><p> 

14、 2、仿照?qǐng)D1在LCD上顯示類似的時(shí)鐘界面; </p><p>  圖1 LCD上顯示的時(shí)鐘界面</p><p>  動(dòng)態(tài)顯示當(dāng)前的時(shí)間,包括:年、月、日、時(shí)、分、秒,時(shí)針,分針、秒針必須為動(dòng)態(tài)實(shí)時(shí)指示當(dāng)前的時(shí)間。</p><p><b>  二、設(shè)計(jì)方案</b></p><p>  基于S3C44B0X的典型嵌入式系統(tǒng)

15、硬件體系結(jié)構(gòu)圖如圖2所示,通過對(duì)S3C44B0X處理器的學(xué)習(xí),可以利用其內(nèi)部的RTC單元和LCD控制器,外接LCD模塊、晶振和(后備)電源實(shí)現(xiàn)電子實(shí)時(shí)時(shí)鐘的功能。主要實(shí)現(xiàn)方法為:通過電源和晶振保證處理器的正常工作和時(shí)鐘來源,通過編程設(shè)定RTC單元的工作模式,實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘的功能;然后根據(jù)所要求顯示的圖形效果,編寫程序設(shè)定LCD控制器的相應(yīng)寄存器,將RTC單元和LCD控制器合理有效地結(jié)合起來;最終由LCD模塊作出相應(yīng)動(dòng)作,完成實(shí)時(shí)時(shí)鐘的顯示

16、功能。</p><p>  該設(shè)計(jì)的中英文字符顯示方案,有效地利用了嵌入式系統(tǒng)自身的ROM存儲(chǔ)容量,其最大的特點(diǎn)是以少量的存儲(chǔ)容量為代價(jià),來簡(jiǎn)單靈活地實(shí)現(xiàn)LCD上的字符顯示。此方案可以顯示所有的一、二級(jí)漢字,并且能實(shí)現(xiàn)漢字、英文的混合顯示,從而方便地構(gòu)造出良好的人機(jī)界面。所討論的硬件平臺(tái)是在S3C44BOX和液晶顯示器的基礎(chǔ)上搭建的,對(duì)于實(shí)現(xiàn)S3C44BOX與其它類型LCD模塊的連接和應(yīng)用,具有一定的參考價(jià)值。&

17、lt;/p><p>  圖2 S3C44B0X的典型嵌入式系統(tǒng)硬件體系結(jié)構(gòu)</p><p><b>  第二節(jié) 原理框圖</b></p><p>  根據(jù)課題所要實(shí)現(xiàn)的功能,結(jié)合S3C44B0X處理器的單元結(jié)構(gòu),作出如圖3所示的原理框圖。 </p><p><b>  圖3 原理框圖</b><

18、/p><p>  第三節(jié) 程序和芯片的初始化</p><p>  程序和芯片的初始化包括:</p><p><b>  LCD的初始化:</b></p><p>  U16 LCD_Init(U8 Lcd_Bpp)</p><p><b>  {</b></p>

19、<p>  switch(Lcd_Bpp)</p><p><b>  {</b></p><p><b>  Case 8:</b></p><p>  rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x1<<8)|(0x1<<10)|(

20、CLKVAL_COLOR<<12);</p><p>  rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21);</p><p>  rLCDSADDR1= (0x3<<27) | ( ((U32)Video_StartBuffer>>22)<<21 )| M5D((U32)Vi

21、deo_StartBuffer>>1);</p><p>  rLCDSADDR2=M5D((((U32)Video_StartBuffer +(SCR_XSIZE*LCD_YSIZE))>>1)) | (MVAL<<21)|1<<29;</p><p>  rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-

22、LCD_XSIZE)/2)<<9 );</p><p>  rREDLUT =0xfdb96420;</p><p>  rGREENLUT=0xfdb96420;</p><p>  rBLUELUT =0xfb40;</p><p>  rDITHMODE=0x0;</p><p>  rDP1_2

23、=0xa5a5; </p><p>  rDP4_7 =0xba5da65;</p><p>  rDP3_5 =0xa5a5f;</p><p>  rDP2_3 =0xd6b;</p><p>  rDP5_7 =0xeb7b5ed;</p><p>  rDP3_4 =0x7dbe;</p>

24、<p>  rDP4_5 =0x7ebdf;</p><p>  rDP6_7 =0x7fdfbfe;</p><p>  rDITHMODE=0x12210;</p><p>  rLCDCON1=(1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_

25、COLOR<<12);</p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  return 1;</b></p><p><b>  }</b></p>

26、<p>  return 0; </p><p><b>  }</b></p><p><b>  中斷向量的初始化:</b></p><p>  void KeyINT_Init(void) {</p><p>  if ((rINTPND &

27、BIT_EINT4567))</p><p><b>  {</b></p><p>  SPC = BIT_EINT4567;</p><p><b>  }</b></p><p>  rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567); </p>&

28、lt;p><b>  }</b></p><p><b>  RTC的初始化:</b></p><p>  void Rtc_Tick_Init(void)</p><p><b>  {</b></p><p>  if ((rINTPND & BIT_TICK

29、)) </p><p><b>  {</b></p><p>  rI_ISPC = BIT_TICK; </p><p><b>  }</b></p><p>  rINTMSK &= ~(BIT_GLOBAL | BIT_TICK); </p>&l

30、t;p>  rRTCCON = 0x0;</p><p>  rTICINT = 1 | (1<<7) </p><p><b>  }</b></p><p>  void Rtc_Tick_Init0(void)</p><p><b>  {</b>&

31、lt;/p><p>  if ((rINTPND & BIT_TICK)) </p><p><b>  {</b></p><p>  rI_ISPC = BIT_TICK; </p><p><b>  }</b></p><p>  rINTMSK

32、 &= ~(BIT_GLOBAL | BIT_TICK); </p><p>  rRTCCON = 0x0; </p><p>  rTICINT = 1 | (1<<6); </p><p><b>  }</b></p><p>  第四節(jié)

33、構(gòu)建功能模塊</p><p>  LCD顯示的時(shí)鐘界面包括:靜止不動(dòng)的圓形鐘面和一直在走動(dòng)的時(shí)鐘指針。</p><p>  所以需要構(gòu)建兩個(gè)重要的函數(shù)實(shí)現(xiàn)畫圓和畫直線。</p><p><b>  畫圓函數(shù):</b></p><p>  該算法是通過X變量的自增,補(bǔ)償1 修正正方形控制Y變量自減,找到距中心恒定距離的點(diǎn),

34、其中rs=45,X自0加1增至45。和原點(diǎn)坐標(biāo)運(yùn)算,可以在第一象限找到一點(diǎn),再通過折疊對(duì)稱找到其他象限的三個(gè)點(diǎn),通過畫點(diǎn)函數(shù)描繪出。再畫他的45度鏡像就好了。</p><p>  畫線函數(shù):void line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned char draw)</p><p>

35、;  以中心的坐標(biāo)為起點(diǎn),使用while函數(shù)與指針最外圈的點(diǎn)比較,不斷延長(zhǎng)直至相等,所以事先計(jì)算出時(shí)針,分針和秒針三個(gè)同心圓最外圈點(diǎn)的坐標(biāo),以便帶入函數(shù)。也同圓類似,要考慮不同象限點(diǎn)的情況,根據(jù)不同的位置帶參數(shù)到畫點(diǎn)函數(shù)中描繪。</p><p>  MAIN函數(shù)的局部原理分析</p><p>  首先讓我們先來看一下main函數(shù)的宏定義與變量定義,如下:</p><p&

36、gt;  從上面的程序可以看出,所使用的頭文件主要是config.h。這個(gè)文件的內(nèi)容不再詳述,后面的附錄會(huì)給出。</p><p>  同時(shí)該程序還給出了時(shí)分秒的初始值,其字符型為i8,也即char型(在其它文件中有定義)。初始值為:hour=0,min=0,sec=0,ms=0;例如如果當(dāng)前時(shí)間為6:20,十九秒,則將對(duì)應(yīng)的數(shù)字修改即可。同理,年月日的初始值設(shè)定是一樣的,并且字符類型也為char類型。</p

37、><p>  下面是針對(duì)字符類型的宏定義:</p><p>  #define I8 char</p><p>  #define U8 unsigned char </p><p>  #define I16 short </p><p>  #define U16 unsigned

38、 short </p><p>  #define I32 long </p><p>  #define U32 unsigned long </p><p>  #define I16P I16 </p><p>  #define U16P U16 </p>

39、<p>  下面我們來看看對(duì)于時(shí)針,分針,秒針的坐標(biāo)設(shè)定,程序如下:</p><p>  上述為秒針的坐標(biāo)定義,SpaceXS[61]對(duì)應(yīng)于秒針的橫坐標(biāo)值,SpaceYS[61]對(duì)應(yīng)于縱坐標(biāo)值。第一個(gè)點(diǎn)對(duì)應(yīng)的是十二點(diǎn)的位置,即(160,30)點(diǎn)。因此只要設(shè)定兩個(gè)指針,分別指向這兩個(gè)數(shù)組的首地址,每當(dāng)時(shí)間秒變化時(shí),就將這兩個(gè)指針加一,從而指向下一坐標(biāo),達(dá)到動(dòng)態(tài)變化的效果。</p><p

40、>  分針,時(shí)針的定義與上述定義完全一樣,只不過時(shí)針定義時(shí)變量個(gè)數(shù)為十三個(gè),具體如下定義:</p><p>  SpaceXH[13]={160,175,185,190,185,175,160,145,135,130,135,145,160},</p><p>  SpaceYH[13]={50,55,65,80,95,105,110,105,95,80,65,55,50};<

41、/p><p>  此外還要設(shè)定一些指針,用來指向各個(gè)數(shù)組的首地址,來方便坐標(biāo)的變化,定義如下:</p><p>  *Placex=&SpaceXS[0],*Placey=&SpaceYS[0],*Placexm=&SpaceXM[0],</p><p>  *Placeym=&SpaceYM[0],*Placexh=&Space

42、XH[0],*Placeyh=&SpaceYH[0];</p><p>  下面我們先來介紹此程序中用到的幾個(gè)重要的函數(shù)。</p><p>  首先來說Set_Color()函數(shù),這是一個(gè)設(shè)定顏色的函數(shù),此函數(shù)的代碼在其他文件中經(jīng)行了編寫,只要在括號(hào)中輸入相應(yīng)的顏色就可,顏色定義如下:</p><p>  #define GUI_BLACK

43、0x000000 </p><p>  #define GUI_BLUE 0x0000FF</p><p>  #define GUI_GREEN 0x00FF00</p><p>  #define GUI_CYAN 0xf0f000</p><p>  #define GUI_RE

44、D 0xFF0000</p><p>  #define GUI_MAGENTA 0x800080 #define GUI_BROWN 0x2020a0</p><p>  #define GUI_DARKGRAY 0x404040 #define GUI_GRAY 0x808080</p>&l

45、t;p>  #define GUI_LIGHTGRAY 0xd0d0d0 #define GUI_LIGHTBLUE 0xf08080</p><p>  #define GUI_LIGHTGREEN 0x80f080 #define GUI_LIGHTCYAN 0x80f0f0</p><p>  #define GUI_LIGHTRED

46、 0x8080f0 #define GUI_LIGHTMAGENTA 0xf080f0</p><p>  #define GUI_YELLOW 0xF0f000 #define GUI_WHITE 0xffffff </p><p>  下面來說Fill_Circle (x, y, r)函數(shù)。</p><p><b>

47、  如下所示:</b></p><p>  void Fill_Circle (U16 x0, U16 y0, U16 r) </p><p><b>  {</b></p><p><b>  U32 i;</b></p><p>  U32 imax = ((int)((

48、int)r*707))/1000+1;</p><p>  U32 sqmax = (int)r*(int)r+(int)r/2;</p><p>  U16 x = r;</p><p>  LCD_DrawHLine(x0-r,y0,x0+r);</p><p>  for (i=1; i<= imax; i++) </p&g

49、t;<p><b>  {</b></p><p>  if ((i*i+x*x) >sqmax) </p><p><b>  {</b></p><p>  if (x>imax) </p><p><b>  {</b></p>&

50、lt;p>  LCD_DrawHLine (x0-i+1,y0+x, x0+i-1);</p><p>  LCD_DrawHLine (x0-i+1,y0-x, x0+i-1);</p><p><b>  }</b></p><p><b>  x--;</b></p><p><b

51、>  }</b></p><p>  LCD_DrawHLine(x0-x,y0+i, x0+x);</p><p>  LCD_DrawHLine(x0-x,y0-i, x0+x);</p><p><b>  }</b></p><p><b>  }</b></p>

52、;<p>  當(dāng)此函數(shù)執(zhí)行完以后會(huì)在液晶顯示儀顯示出一個(gè)實(shí)心圓,與前面的setcolor函數(shù)配合可以畫出特定顏色的的圓,x為橫坐標(biāo),y為縱坐標(biāo),r為半徑。</p><p>  還有一個(gè)為fillrect()函數(shù)。也即矩形填充函數(shù),此函數(shù)可以在顯示屏上顯示特定大小的矩形圖案,并結(jié)合顏色設(shè)定函數(shù)得出相應(yīng)的顏色相應(yīng)函數(shù)如下:</p><p>  void Fill_Rect(U16

53、 x0, U16 y0, U16 x1, U16 y1) </p><p><b>  {</b></p><p>  LCD_FillRect(x0,y0,x1,y1);</p><p><b>  }</b></p><p>  既然是實(shí)時(shí)時(shí)鐘,那么程序是如何實(shí)現(xiàn)指針的偏轉(zhuǎn)的,是靠什么思路實(shí)現(xiàn)的

54、。下面的程序是以秒針為例簡(jiǎn)述這其中的原理的。</p><p>  可以看到,程序中有擦除上一秒的程序。之所以能靠一個(gè)設(shè)定顏色的程序來將其擦出是因?yàn)?,之前已?jīng)將底色設(shè)定為該指針擦除時(shí)的顏色。既然該指針與底色有一樣的顏色,所以觀察者就看不到之前的指針了,所以就達(dá)到了擦出的目的,當(dāng)顯示下一秒時(shí),只要將指針的顏色設(shè)定為與底色不同,即達(dá)到了顯示的效果。</p><p>  同時(shí),還要顯示分針和時(shí)針。

55、</p><p>  對(duì)于擦除分針和時(shí)針得原理與上面所述大同小異,這里只給出程序,不在詳細(xì)討論,程序如下:</p><p>  那么是通過怎樣的方式將以上時(shí)分秒的變化聯(lián)系起來的呢?其實(shí)這全靠if。。。else。。。的條件判斷語句,程序如下:</p><p>  我們可以看到其中有一個(gè)delay函數(shù),這個(gè)函數(shù)的自變量為1200,即為delay(1200),它實(shí)現(xiàn)了一秒

56、的延時(shí),一秒以后sec加一,從而實(shí)現(xiàn)一秒的計(jì)時(shí)。當(dāng)為60秒時(shí),分針指向下一分鐘,擦除上一分鐘,也就是調(diào)用上面的三個(gè)顯示與擦除函數(shù)。</p><p>  第二章 實(shí)驗(yàn)(測(cè)試)結(jié)果及討論</p><p>  第一節(jié) ADS1.2 軟件的編譯,連接和運(yùn)行</p><p><b>  構(gòu)建完整的程序:</b></p><p>

57、;  添加頭文件,中斷處理匯編程序段,初始化函數(shù)和主函數(shù):</p><p>  void Main(void) </p><p><b>  { </b></p><p>  Target_Init(); // ARMII實(shí)驗(yàn)系統(tǒng)的初始化,包括CPU板</p><

58、;p>  GUI_Init();</p><p>  OSInit();</p><p>  Key_Mbox = OSMboxCreate((void *)0);//鍵盤初始</p><p>  OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1],

59、 5); //創(chuàng)建任務(wù)一</p><p>  OSStart(); </p><p><b>  }</b></p><p><b>  編譯</b></p><p><b>  所有的文件:</b></p><p><b>  第

60、二節(jié) 程序調(diào)試</b></p><p>  連接芯片與LCD端口,運(yùn)行程序,觀察效果。此時(shí)LCD上將顯示如圖4所示的時(shí)鐘界面。</p><p>  圖4 程序運(yùn)行時(shí)LCD顯示的時(shí)鐘界面</p><p><b>  第三章 結(jié) 論</b></p><p>  基于LCD的電子時(shí)鐘可以準(zhǔn)確地將動(dòng)態(tài)時(shí)鐘進(jìn)行顯示

61、,并且能通過圖像時(shí)鐘形式和數(shù)字時(shí)鐘多種形式表現(xiàn)出來,此外根據(jù)需要還可添加日歷功能。</p><p>  在將程序燒入系統(tǒng)后,我們發(fā)現(xiàn)了兩個(gè)比較嚴(yán)重的問題。第一個(gè)問題是我小組成員的名字出現(xiàn)亂碼,經(jīng)過我組及指導(dǎo)老師的細(xì)心排查,我們發(fā)現(xiàn)出現(xiàn)的原因是,字符重疊的原因。當(dāng)擦除上一個(gè)名字時(shí),我的名字沒有對(duì)齊從而沒有擦除干凈,與下一個(gè)要顯示的字符相重合,從而出現(xiàn)亂碼。解決辦法是在兩個(gè)字的中間加入一個(gè)漢字寬度的空格,就可以消除此

62、現(xiàn)象了。</p><p>  第二個(gè)問題是秒針擦除不干凈的問題。當(dāng)秒針走向下一個(gè)位置時(shí),它的上一個(gè)位置仍然有圖形。此時(shí)背景顏色是深藍(lán)。但是我們發(fā)現(xiàn)擦除時(shí)的指針確實(shí)是深藍(lán),為什么還會(huì)有痕跡呢?于是我組將指針顏色改成淺藍(lán),將背景顏色也改成淺藍(lán),終于痕跡不在了。</p><p>  到此,基本的問題已經(jīng)解決,即實(shí)現(xiàn)了實(shí)驗(yàn)所設(shè)定的要求。</p><p><b> 

63、 心得體會(huì)</b></p><p>  在此次的基于LCD的電子時(shí)鐘設(shè)計(jì)的過程中,我學(xué)會(huì)了把課本中的知識(shí)應(yīng)用到實(shí)際操作中來,學(xué)會(huì)了通過查看其他課外資料來學(xué)習(xí)新的知識(shí)。此外,通過這一過程也提升了自己獨(dú)立思考的能力。切實(shí)做到發(fā)現(xiàn)問題,仔細(xì)思考,團(tuán)結(jié)合作,動(dòng)手實(shí)踐,解決問題這一系列過程。雖然這只是一次小系統(tǒng)設(shè)計(jì),但通過它,我了解了課程設(shè)計(jì)的一般步驟和設(shè)計(jì)中應(yīng)注意的問題,受益良多。</p>&l

64、t;p>  最初接收任務(wù)書,我們有些不知所措,雖然這學(xué)期學(xué)習(xí)了嵌入式系統(tǒng)的理論課程,但是畢竟缺少實(shí)踐,還是難以著手。隨后與任務(wù)相同的別組同學(xué)一起討論,確定了初步的設(shè)計(jì)方案,也就是主體部分是基于S3C44B0X處理器的體系結(jié)構(gòu)。然后就是分模塊的設(shè)計(jì)。</p><p>  課程設(shè)計(jì)已經(jīng)結(jié)束,自己從這一過程中體會(huì)到了很多,有完成的喜悅,有停滯不前的郁悶,不管何種情況,我都提醒自己要靜下心來,冷靜的分析,老師在驗(yàn)收

65、的時(shí)候,笑著問我請(qǐng)了多少外援,當(dāng)時(shí)回答是一本書,現(xiàn)在想想有些逞強(qiáng),還是有些經(jīng)驗(yàn)豐富的同學(xué)在我不懂的時(shí)候幫助我的,不然我可能還要花些時(shí)間折騰。課程設(shè)計(jì)的過程讓我懂得面對(duì)問題要勤于思考,遇到困難,要勇于面對(duì),這在任何知識(shí)的學(xué)習(xí)中都是彌足珍貴的。</p><p><b>  參考文獻(xiàn)</b></p><p>  【1】王勇,嵌入式系統(tǒng)原理與設(shè)計(jì),浙江大學(xué)出版社,2007.&

66、lt;/p><p>  【2】謝自美,電子線路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試,華中理工大學(xué)出版社,2003。</p><p>  【3】宋春榮,通用集成電路速查手冊(cè),山東科學(xué)技術(shù)出版社,1995。</p><p>  【4】桑楠. 嵌入式系統(tǒng)原理及應(yīng)用開發(fā)技術(shù),北京:北京航空航天大學(xué)出版社, 2002 </p><p><b>  附 錄<

67、/b></p><p><b>  源程序:</b></p><p>  #include "..\inc\config.h"</p><p>  #defineSTACKSIZE256</p><p>  #define x_line 160</p><p>  #

68、define y_line 80</p><p>  OS_STK_DATA stk;</p><p>  extern GUI_FONT CHINESE_FONT12;</p><p>  extern GUI_FONT CHINESE_FONT16;</p><p>  extern GUI_FONT GUI_Font8x16;&

69、lt;/p><p>  OS_EVENT * Send_LCD_Sem;</p><p>  OS_EVENT *Key_Mbox;</p><p>  I8 Hour[3],Min[3],Sec[3];</p><p>  I8 hour = 0, min = 0, sec = 0,ms;</p><p>  I8 YE

70、A1[3],YEA2[3],MON[3],DAY[3];</p><p>  int yea1 = 20,yea2=11, mon = 6, day = 29;</p><p>  I8 XH0[3],XH1[3],XH2[3],XH3[3];</p><p>  I8 XH4[3],XH5[3];</p><p>  char xh0=01

71、,xh1=62,xh2=51,xh3=01;</p><p>  char xh4=27,xh5=28,xh6=29;</p><p>  //int TimeCount = 0;</p><p>  int SpaceXS[61]={160,165,170,175,180,185,</p><p>  189,193,197,201,205

72、,</p><p>  206,207,208,209,210,</p><p>  209,208,207,206,205,</p><p>  201,197,193,189,185,</p><p>  180,175,170,165,160,</p><p>  155,150,145,140,135,<

73、/p><p>  131,127,123,119,115,</p><p>  114,113,112,111,110,</p><p>  111,112,113,114,115,</p><p>  119,123,127,131,135,</p><p>  140,145,150,155,160,

74、 </p><p><b>  },</b></p><p>  SpaceYS[61]={30,31,32,33,34,</p><p>  35,39,43,47,51,</p><p>  55,60,65,70,75,</p><p>  80,85,90,95,100,</p&

75、gt;<p>  105,109,113,117,121,</p><p>  125,126,127,128,129,</p><p>  130,129,128,127,126,</p><p>  125,121,117,113,109,</p><p>  105,100,95,90,85,</p><

76、;p>  80,75,70,65,60,</p><p>  55,51,47,43,39,</p><p>  35,34,33,32,31,30},</p><p>  SpaceXM[61]={160,164,168,172,176,180,183,186,189,192,</p><p>  195,196,197,198,19

77、9,200,199,198,197,196,</p><p>  195,192,189,186,183,180,176,172,168,164,</p><p>  160,156,152,148,144,140,137,134,131,128,</p><p>  125,124,123,122,121,120,121,122,123,124,</p>

78、;<p>  125,128,131,134,137,140,144,148,152,156,</p><p>  160 </p><p><b>  },</b></p><p>  SpaceYM[61]={40,41,42,43,44,45,48,51,54,57,</p><p&g

79、t;  60,64,68,72,76,80,84,88,92,96,</p><p>  100,103,106,109,112,115,116,117,118,119,</p><p>  120,119,118,117,116,115,112,109,106,103,</p><p>  100,96,92,88,84,80,76,72,68,64,</p

80、><p>  60,57,54,51,48,45,44,43,42,41,</p><p><b>  40</b></p><p><b>  },</b></p><p>  SpaceXH[13]={160,175,185,190,185,175,160,145,135,130,135,145,1

81、60},</p><p>  SpaceYH[13]={50,55,65,80,95,105,110,105,95,80,65,55,50},</p><p>  *Placex=&SpaceXS[0],*Placey=&SpaceYS[0],*Placexm=&SpaceXM[0],*Placeym=&SpaceYM[0],</p><

82、p>  *Placexh=&SpaceXH[0],*Placeyh=&SpaceYH[0];</p><p>  void Display_xh1(char xx1,char yy1);</p><p>  void Display_xh2(char xx2,char yy2);</p><p>  void Display_xh3(char

83、xx3,char yy3);</p><p>  void show(I8 s)</p><p><b>  {</b></p><p>  if(s%4==1)</p><p><b>  {</b></p><p>  Set_Color(GUI_RED);</p&

84、gt;<p>  Set_Font (&CHINESE_FONT16);</p><p>  Disp_String (CN_start"孫維廣"CN_end,64,210);</p><p>  Set_Font(&GUI_Font8x16); </p><p>  Set_Color(GUI_RED);<

85、;/p><p>  Display_xh1(250,210); </p><p><b>  }</b></p><p>  else if(s%4==2)</p><p><b>  {</b></p><p>  Set_Color(GUI_RED);</p>

86、<p>  Set_Font (&CHINESE_FONT16);</p><p>  Disp_String (CN_start"陶貴華"CN_end,64,210);</p><p>  Set_Color(GUI_RED);</p><p>  Set_Font(&GUI_Font8x16); </p&

87、gt;<p>  Display_xh2(250,210); </p><p><b>  }</b></p><p>  else if(s%4==3)</p><p><b>  {</b></p><p>  Set_Color(GUI_RED);</p><

88、p>  Set_Font (&CHINESE_FONT16);</p><p>  Disp_String (CN_start"嚴(yán)維鋒"CN_end,64,210);</p><p>  Set_Color(GUI_RED);</p><p>  Set_Font(&GUI_Font8x16); </p>

89、<p>  Display_xh3(250,210);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Shows()</p><p><b>  {</b></p><p>

90、  show(sec);</p><p>  Set_Color(GUI_GRAY); //擦除上一秒的</p><p>  Draw_Line(x_line,y_line,*Placex,*Placey);</p><p>  Placex=Placex+1;</p><p>  Placey=Placey+1;</p>

91、;<p>  Set_Color(GUI_YELLOW); //顯示下一秒的 </p><p>  Draw_Line(x_line,y_line,*Placex,*Placey);</p><p>  Set_Color(GUI_RED); //顯示下一分的</p><p>  Draw_Line(x_line,y_line,*Pla

92、cexm,*Placeym);</p><p>  Set_Color(GUI_GREEN); //顯示下一時(shí)的 </p><p>  Draw_Line(x_line,y_line,*Placexh,*Placeyh);</p><p>  if(Placex==&SpaceXS[60]&&Placey==&SpaceYS[6

93、0])</p><p><b>  {</b></p><p>  Placex=&SpaceXS[0];</p><p>  Placey=&SpaceYS[0];</p><p><b>  } </b></p><p><b>  }<

94、;/b></p><p>  void Showm()</p><p><b>  {</b></p><p>  Set_Color(GUI_GREEN);</p><p>  Fill_Circle (288, 50, 25);</p><p>  Set_Color(GUI_RED)

95、;</p><p>  Fill_Circle (280, 50, 10);</p><p>  Fill_Circle (296, 50, 10);</p><p>  Fill_Circle (288, 40, 10);</p><p>  Fill_Circle (288, 60, 10);</p><p> 

96、 Set_Color(GUI_YELLOW);</p><p>  Fill_Circle (288, 50, 5);</p><p>  Set_Color(GUI_GRAY); //擦除上一分的</p><p>  Draw_Line(x_line,y_line,*Placexm,*Placeym);</p><p>  Pla

97、cexm=Placexm+1;</p><p>  Placeym=Placeym+1;</p><p>  Set_Color(GUI_RED); //顯示下一分的</p><p>  Draw_Line(x_line,y_line,*Placexm,*Placeym);</p><p>  Set_Color(GUI_GREEN

98、); //顯示下一時(shí)的 </p><p>  Draw_Line(x_line,y_line,*Placexh,*Placeyh);</p><p>  if(Placexm==&SpaceXM[60]&&Placeym==&SpaceYM[60])</p><p><b>  {</b></p>

99、;<p>  Placexm=&SpaceXM[0];</p><p>  Placeym=&SpaceYM[0];</p><p><b>  }</b></p><p><b>  }</b></p><p>  void Showh()</p>&

100、lt;p><b>  {</b></p><p>  Set_Color(GUI_YELLOW);</p><p>  Fill_Circle (288, 50, 25);</p><p>  Set_Color(GUI_GREEN);</p><p>  Fill_Circle (280, 50, 10);<

101、;/p><p>  Fill_Circle (296, 50, 10);</p><p>  Fill_Circle (288, 40, 10);</p><p>  Fill_Circle (288, 60, 10);</p><p>  Set_Color(GUI_RED);</p><p>  Fill_Circl

102、e (288, 50, 5);</p><p>  Set_Color(GUI_GRAY); //擦除上一時(shí)的</p><p>  Draw_Line(x_line,y_line,*Placexh,*Placeyh);</p><p>  Placexh=Placexh+1;</p><p>  Placeyh=Placeyh+1;

103、</p><p>  Set_Color(GUI_GREEN); //顯示下一時(shí)的 </p><p>  Draw_Line(x_line,y_line,*Placexh,*Placeyh);</p><p>  if(Placexh==&SpaceXH[12]&&Placeyh==&SpaceYH[12])</p>

104、<p><b>  {</b></p><p>  Placexh=&SpaceXH[0];</p><p>  Placeyh=&SpaceYH[0];</p><p><b>  }</b></p><p><b>  }</b></p&

105、gt;<p>  void Shouw_Cricle() // 整 點(diǎn)</p><p><b>  {</b></p><p>  Set_Color(GUI_YELLOW);</p><p>  Fill_Circle (160, 30,2); // 12點(diǎn)(x,y,r)</p><p> 

106、 Fill_Circle (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,

107、2); // 8 點(diǎn)(x,y,r)</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)&

108、lt;/p><p>  Fill_Circle (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>  Fil

109、l_Circle (185, 35,2); // 1點(diǎn)(x,y,r)</p><p><b>  }</b></p><p>  void Delay(int time);</p><p>  void ChangeForm(char Time[],char time)</p><p><b>  {&

110、lt;/b></p><p>  Time[0] = time / 10 + 48;</p><p>  Time[1] = time % 10 + 48;</p><p>  Time[2] = '\0';</p><p><b>  }</b></p><p>  voi

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

112、<p>  ChangeForm(MON, mon);</p><p>  ChangeForm(DAY, day);</p><p>  ChangeForm(YEA1, yea1);</p><p>  ChangeForm(YEA2, yea2);</p><p>  Disp_String (Hour,x,160

113、); </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_String (Se

114、c,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_String (M

115、ON,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 Display_xh1(ch

116、ar xx1,char yy1)//孫維廣學(xué)號(hào)</p><p><b>  {</b></p><p>  ChangeForm(XH0, xh0);</p><p>  ChangeForm(XH1, xh1);</p><p>  ChangeForm(XH2, xh2);</p><p> 

117、 ChangeForm(XH3, xh3);</p><p>  Disp_String (XH0,xx1,yy1); </p><p>  Disp_String (XH1,xx1+16,yy1); </p><p>  Disp_String (XH2,xx1+32,yy1); </p><p>  Disp_String (XH3,xx

118、1+48,yy1); </p><p><b>  }</b></p><p>  void Display_xh2(char xx2,char yy2)//陶貴華學(xué)號(hào)</p><p><b>  {</b></p><p>  ChangeForm(XH0, xh0);</p>&l

119、t;p>  ChangeForm(XH1, xh1);</p><p>  ChangeForm(XH2, xh2);</p><p>  ChangeForm(XH4, xh4);</p><p>  Disp_String (XH0,xx2,yy2); </p><p>  Disp_String (XH1,xx2+16,yy2);

120、 </p><p>  Disp_String (XH2,xx2+32,yy2); </p><p>  Disp_String (XH4,xx2+48,yy2); </p><p><b>  }</b></p><p>  void Display_xh3(char xx3,char yy3)//嚴(yán)維鋒學(xué)號(hào)</

121、p><p><b>  {</b></p><p>  ChangeForm(XH0, xh0);</p><p>  ChangeForm(XH1, xh1);</p><p>  ChangeForm(XH2, xh2);</p><p>  ChangeForm(XH5, xh5);</p

122、><p>  Disp_String (XH0,xx3,yy3); </p><p>  Disp_String (XH1,xx3+16,yy3); </p><p>  Disp_String (XH2,xx3+32,yy3); </p><p>  Disp_String (XH5,xx3+48,yy3); </p><p

123、><b>  }</b></p><p>  void Show_Color()</p><p><b>  {</b></p><p>  Set_Color( GUI_BLUE );</p><p>  Fill_Rect(0,0,319,239);</p><p>

124、;  Set_Color(GUI_RED);</p><p>  Set_BkColor (GUI_BLUE);</p><p>  Fill_Rect(0,0,319,2);</p><p>  Fill_Rect(0,0,2,239);</p><p>  Fill_Rect(0,237,319,239);</p><

125、p>  Fill_Rect(317,0,319,239);</p><p>  Set_Color(GUI_RED); </p><p>  Set_Font (&CHINESE_FONT16);</p><p>  Disp_String (CN_start"姓名:"CN_end,5,210);</p><

126、;p>  Disp_String (CN_start"學(xué)號(hào):"CN_end,210,210);</p><p>  Set_Color(GUI_WHITE ); </p><p>  Fill_Rect (79,17,242,20); //上線(x0,y0,x1,y1)</p><p>  Fill_Rect (79,20,82

127、,202); //左線(x0,y0,x1,y1)</p><p>  Fill_Rect (238,20,242,202); //右線(x0,y0,x1,y1)</p><p>  Fill_Rect (79,199,242,202); //下線(x0,y0,x1,y1)</p><p>  Set_Color(GUI_LIGHTRED); <

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論