版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式課程設(shè)計(jì)-- 基于lcd的電子時(shí)鐘實(shí)驗(yàn)
- 嵌入式課程設(shè)計(jì)--基于lcd的電子時(shí)鐘
- 嵌入式課程設(shè)計(jì)報(bào)告---基于lcd的電子時(shí)鐘
- 課程設(shè)計(jì)---基于lcd的電子時(shí)鐘設(shè)計(jì)
- arm7電子時(shí)鐘嵌入式課程設(shè)計(jì)報(bào)告
- 嵌入式課程設(shè)計(jì)報(bào)告--具有日歷功能的電子時(shí)鐘
- 電子時(shí)鐘系統(tǒng)設(shè)計(jì)-《嵌入式系統(tǒng)》課程設(shè)計(jì)說明書
- 嵌入式系統(tǒng)原理及應(yīng)用課程設(shè)計(jì)--電子時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)
- 電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘 課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)--電子時(shí)鐘
- 電子時(shí)鐘(lcd顯示)課程設(shè)計(jì)說明書
- 電子時(shí)鐘課程設(shè)計(jì)--proteus環(huán)境下的電子時(shí)鐘設(shè)計(jì)
- 課程設(shè)計(jì)----電子時(shí)鐘設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)--數(shù)字電子時(shí)鐘焊接調(diào)試報(bào)告
- 基于微機(jī)原理電子時(shí)鐘課程設(shè)計(jì)
- 電子時(shí)鐘接口課程設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì) (2)
評(píng)論
0/150
提交評(píng)論