版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 信息工程學(xué)院</b></p><p> 課程設(shè)計說明書(論文)</p><p> 題 目: 嵌入式觸摸屏的設(shè)計 </p><p> 課 程 名 稱: ARM嵌入式系統(tǒng) </p><p> 專 業(yè): 電子信息工程 </p>
2、<p> 班 級: </p><p> 學(xué) 生 姓 名: </p><p> 學(xué) 號: </p><p> 設(shè) 計 地 點: </p><p> 指 導(dǎo) 教 師:
3、 </p><p> 設(shè)計起止時間:2012年11月12 日至2012年12月13日</p><p><b> 目錄</b></p><p> 一、設(shè)計功能要求3</p><p> 二、系統(tǒng)總體設(shè)計方案3</p><p> 三、系統(tǒng)分析與設(shè)計3</p>
4、<p> 3.1主程序設(shè)計簡易流程圖:3</p><p> 3.2 H-JTAG軟件配置4</p><p> 3.3 H-JTAG軟件配置4</p><p> 3.4 IAR軟件程序編寫調(diào)試步驟5</p><p><b> 四、源碼清單7</b></p><p>&l
5、t;b> 一、設(shè)計功能要求</b></p><p> 使用ARM嵌入式實驗板,完成觸摸屏的設(shè)計。要求有六個有效觸摸點,觸摸后可跳入相應(yīng)的二級菜單,顯示相應(yīng)的內(nèi)容。(界面自行設(shè)計)</p><p> 二、系統(tǒng)總體設(shè)計方案</p><p> 1、設(shè)計主界面,子界面。</p><p> 2、使用主函數(shù)對所定義觸電進行判斷
6、。當(dāng)觸點所在坐標(biāo)被觸及時,跳入相對應(yīng)的程序,執(zhí)行顯示。</p><p><b> 三、系統(tǒng)分析與設(shè)計</b></p><p> 3.1主程序設(shè)計簡易流程圖:</p><p> 2、使用可識別的函數(shù)對主界面和子界面進行設(shè)計。</p><p> 3.2 H-JTAG軟件配置</p><p>
7、 1、連接LPC2378實驗板,啟動H-JTAG軟件;</p><p> 2、選擇菜單欄中的“Settings”下拉菜單中的第一項,在彈出的“USB/LPT Selection”選項卡中選擇第一項“LPT (Parallel”</p><p> 3、選擇工具欄中第四個圖標(biāo),在彈出的“H-Flasher”選項卡中,選中左側(cè)第一項“Flash Selection”,在窗口右側(cè)的選項中選擇
8、本實驗所需的主要芯片類型:NXP-LPC2378</p><p> 4、在“H-Flasher”選項卡中,選中左側(cè)第二項“Configuration”,在右側(cè)的Ext XTAL(MHz)填上12;INIT TCK與PGM TCK分別選擇1.0MHz。見(圖b)所示。</p><p> (圖b) H-Flasher”選項卡</p><p> 3.3 H-JT
9、AG軟件配置</p><p> 1、連接LPC2378實驗板,啟動H-JTAG軟件;</p><p> 2、選擇菜單欄中的“Settings”下拉菜單中的第一項,在彈出的“USB/LPT Selection”選項卡中選擇第一項“LPT (Parallel”</p><p> 3、選擇工具欄中第四個圖標(biāo),在彈出的“H-Flasher”選項卡中,選中左側(cè)第一項“
10、Flash Selection”,在窗口右側(cè)的選項中選擇本實驗所需的主要芯片類型:NXP-LPC2378</p><p> 4、在“H-Flasher”選項卡中,選中左側(cè)第二項“Configuration”,在右側(cè)的Ext XTAL(MHz)填上12;INIT TCK與PGM TCK分別選擇1.0MHz。見(圖c)所示。</p><p> (圖c) H-Flasher”選項卡<
11、/p><p> 3.4 IAR軟件程序編寫調(diào)試步驟</p><p> 1、連接實驗板,啟動IAR軟件;</p><p> 2、新建workspace</p><p> 文件菜單下“File-New-Workspace”。</p><p> 3、新建項目project</p><p>
12、項目菜單下“Project-Create New Project…”在Create New Project…選項卡中選擇“C-main”,選擇合適的路徑保存命名為KUN。</p><p><b> 4、編寫程序</b></p><p> 在彈出的main.c文件中編寫程序,具體程序見碼元程序;</p><p> 添加LPC2378函數(shù)包,
13、右鍵單擊工程名,選擇ADD-Add Group建立LPC2378組,右鍵單擊組名選擇“ADD-Add Files…”添加路徑d:\common\src文件夾下的“cstartup.s、irq.c、target.c、timer.c”文件。</p><p> 添加LCD函數(shù)包,右鍵單擊工程名,選擇ADD-Add Group建立LCD組,右鍵單擊組名選擇ADD-Add Files…添加lcd函數(shù)包文件夾中的“hw.c
14、、hw.h、ini.c”文件。</p><p> 5、設(shè)置選項option</p><p> 右鍵單擊項目名,選擇“Options…”,在彈出的Options for node “KUN”選項卡中設(shè)置,見(圖d)。</p><p> ?。▓Dd) Options for node “KUN”選項卡</p><p> General opt
15、ions:在Device中選擇選擇芯片NXP-LPC2378</p><p> C/C++ compiler:在復(fù)選項卡“Preprocessor”中的“Additional include directories:(one per line)”下輸入d:\common\inc</p><p> Linker:在“override default”前打√,點擊“…”在路徑d:\comm
16、on\icf下選擇“LPC2378_Ram.icf”</p><p> Debugger:Driver下拉菜單中選擇RDI選項,選中左側(cè)RDI選項,在Manufacturer RDI driver后點擊“…”選擇路徑C:/Program Files\H-JTAG 下的“H-JTAG.dll”文件。</p><p><b> 6、編譯Make</b></p&g
17、t;<p> 單擊工具欄中的make圖標(biāo),當(dāng)彈出的message窗口中顯示0錯誤0警告,繼續(xù)操作下面的步驟,若出現(xiàn)錯誤根據(jù)提示修改程序,直至出現(xiàn)0錯誤。</p><p><b> 7、調(diào)試Debug</b></p><p> 確認(rèn)實驗板連接好,H-JTAG軟件配置正確后,單擊工具欄中的debug圖標(biāo)。</p><p><
18、;b> 8、運行</b></p><p> 在彈出的調(diào)試工具欄中單擊運行圖標(biāo),運行程序。將在面板上看到設(shè)計好的界面,觸摸屏幕,相應(yīng)的設(shè)計點即可進入子界面。</p><p><b> 四、源碼清單</b></p><p><b> 1、主程序:</b></p><p> #
19、include "nxp/iolpc2378.h"</p><p> #include "type.h"</p><p> #include "hw.h"</p><p> int main()</p><p><b> {</b></p>
20、<p> LCDInit( );</p><p> uint8 id=55;</p><p> uint8 state=0;</p><p> uint16 x_t,y_t,*x_a,*y_a;</p><p><b> x_a=&x_t;</b></p><p>&
21、lt;b> y_a=&y_t;</b></p><p> zhujiemian();</p><p><b> while(1)</b></p><p><b> {</b></p><p> WaitNoBusy();</p><p>
22、 switch(state)</p><p><b> {</b></p><p><b> case 0:</b></p><p> if(GetTouchValue(x_a,y_a))</p><p><b> {</b></p><p>
23、 id=gettouchid(x_t,y_t);</p><p><b> if(id==0)</b></p><p><b> {</b></p><p> WaitNoTouch();</p><p> jiemian1();</p><p><b>
24、 state=1;</b></p><p><b> }</b></p><p><b> if(id==1)</b></p><p><b> {</b></p><p> WaitNoTouch();</p><p> jiem
25、ian2();</p><p><b> state=1;</b></p><p><b> }</b></p><p><b> if(id==2)</b></p><p><b> {</b></p><p> Wai
26、tNoTouch();</p><p> jiemian3();</p><p><b> state=1;</b></p><p><b> }</b></p><p><b> if(id==3)</b></p><p><b>
27、 {</b></p><p> WaitNoTouch();</p><p> jiemian4();</p><p><b> state=1;</b></p><p><b> }</b></p><p><b> if(id==4)<
28、;/b></p><p><b> {</b></p><p> WaitNoTouch();</p><p> jiemian5();</p><p><b> state=1;</b></p><p><b> }</b></p
29、><p><b> if(id==5)</b></p><p><b> {</b></p><p> WaitNoTouch();</p><p> jiemian6();</p><p><b> state=1;</b></p>
30、<p><b> }</b></p><p> else break;</p><p><b> break;</b></p><p><b> case 1:</b></p><p> if(GetTouchValue(x_a,y_a))</p&g
31、t;<p><b> {</b></p><p> WaitNoTouch();</p><p> pagereturn();</p><p><b> state=2;</b></p><p><b> }</b></p><p&g
32、t;<b> break;</b></p><p><b> case 2:</b></p><p> if(GetTouchValue(x_a,y_a))</p><p><b> {</b></p><p> if(touchvlid(x_t,y_t))</
33、p><p><b> {</b></p><p> WaitNoTouch();</p><p><b> state=3;</b></p><p><b> }</b></p><p><b> else</b></p
34、><p><b> {</b></p><p> WaitNoTouch();</p><p><b> state=1;</b></p><p><b> }</b></p><p><b> break;</b></
35、p><p><b> case 3:</b></p><p><b> {</b></p><p> WaitNoTouch();</p><p> zhujiemian();</p><p><b> state=0;</b></p>
36、<p><b> break;</b></p><p><b> }</b></p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><
37、p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 2、界面設(shè)計程序</b></p><p> #include "nxp/iolpc2378.h&quo
38、t;</p><p> #include "type.h"</p><p> #include "hw.h"</p><p> /******************</p><p><b> 主界面設(shè)計</b></p><p> ********
39、**********/</p><p> void zhujiemian()</p><p><b> {</b></p><p> LCDInit( );</p><p> uint16 mingdan[]={39,75,130,105,</p><p> 188,75,279,105
40、,</p><p> 39,125,130,155,</p><p> 188,125,279,155,</p><p> 39,179,130,209,</p><p> 188,179,279,209</p><p><b> };</b></p><p>
41、 SetColor(0xfff0,0xffff);</p><p> DrawRectangles(mingdan,6);</p><p> SetColor(0x0000,0xffff);</p><p> PutString(42,78,0x12,"水瓶座");</p><p> PutString(191,7
42、8,0x12,"雙子座");</p><p> PutString(42,128,0x12,"金牛座");</p><p> PutString(191,128,0x12,"處女座");</p><p> PutString(42,182,0x12,"天蝎座");</p>
43、;<p> PutString(191,182,0x12,"射手座");</p><p> PutString(100,19,0x13,"星座介紹"); </p><p><b> }</b></p><p> /******************</p><
44、p><b> 子界面設(shè)計</b></p><p> ******************/</p><p> void jiemian1()</p><p><b> {</b></p><p> ClearScreen();</p><p> SetCol
45、or(0xaaff,0xffff);</p><p> PutString(10,80,0x13,"星座特點:自由博愛");</p><p> PutString(10,160,0x13,"幸運日期:星期六");</p><p><b> }</b></p><p> vo
46、id jiemian2()</p><p><b> {</b></p><p> ClearScreen();</p><p> SetColor(0xaaff,0xffff);</p><p> PutString(10,80,0x13,"星座特點:花心多變");</p>&
47、lt;p> PutString(10,160,0x13,"幸運日期:星期三");</p><p><b> }</b></p><p> void jiemian3()</p><p><b> {</b></p><p> ClearScreen();</
48、p><p> SetColor(0xaaff,0xffff);</p><p> PutString(10,80,0x13,"星座特點:穩(wěn)健固執(zhí)");</p><p> PutString(10,160,0x13,"幸運日期:星期五");</p><p><b> }</b>&
49、lt;/p><p> void jiemian4()</p><p><b> {</b></p><p> ClearScreen();</p><p> SetColor(0xaaff,0xffff);</p><p> PutString(10,80,0x13,"星座特點:完
50、美理性");</p><p> PutString(10,160,0x13,"幸運日期:星期五");</p><p><b> }</b></p><p> void jiemian5()</p><p><b> {</b></p><p&
51、gt; ClearScreen();</p><p> SetColor(0xaaff,0xffff);</p><p> PutString(10,80,0x13,"星座特點:神秘敏銳");</p><p> PutString(10,160,0x13,"幸運日期:星期二");</p><p>
52、;<b> }</b></p><p> void jiemian6()</p><p><b> {</b></p><p> ClearScreen();</p><p> SetColor(0xaaff,0xffff);</p><p> PutString
53、(10,80,0x13,"星座特點:自由樂觀");</p><p> PutString(10,160,0x13,"幸運日期:星期四");</p><p><b> }</b></p><p> /******************</p><p><b> 主
54、界面判跳</b></p><p> ******************/</p><p> uint8 gettouchid(uint16 x,uint16 y)</p><p><b> {</b></p><p> if(x>39 && x<130 &&
55、; y>75 && y<105)</p><p><b> return 0;</b></p><p> else if(x>188 && x<279 && y>75 && y<105)</p><p> return 1; </p&
56、gt;<p> if(x>39 && x<130 && y>125 && y<155)</p><p><b> return 2;</b></p><p> else if(x>188 && x<279 && y>179 &a
57、mp;& y<209)</p><p><b> return 3;</b></p><p> if(x>39 && x<130 && y>75 && y<105)</p><p><b> return 4;</b></p&
58、gt;<p> else if(x>188 && x<279 && y>179 && y<209)</p><p><b> return 5;</b></p><p> return 213;</p><p><b> }</b>
59、;</p><p> /******************</p><p><b> 子界面右上角顯示</b></p><p> ******************/</p><p> void pagereturn()</p><p><b> {</b>&l
60、t;/p><p> SetColor(0xfff3,0xffff);</p><p> DrawOneRectangle(250,5,290,25,1);</p><p> SetColor(0x0000,0xffff);</p><p> PutString(255,27,0x12,"返回");</p>
61、<p><b> }</b></p><p> /******************</p><p><b> 判斷返回是否有效</b></p><p> ******************/</p><p> uint8 touchvlid(uint16 x,uint16
62、 y)</p><p><b> {</b></p><p> if(x>250 && x<290 && y>5 && y<25)</p><p><b> return 1;</b></p><p><b>
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式lcd觸摸屏設(shè)計
- 嵌入式課程設(shè)計---觸摸屏控制實驗設(shè)計
- 嵌入式系統(tǒng)中的觸摸屏及其控制
- 基于c8051的嵌入式系統(tǒng)觸摸屏設(shè)計
- arm嵌入式系統(tǒng)課程設(shè)計-基于嵌入式系統(tǒng)的煙氣檢測監(jiān)控系統(tǒng)
- arm9嵌入式系統(tǒng)課程設(shè)計
- 嵌入式課程設(shè)計--基于arm嵌入式圖像處理系統(tǒng)設(shè)計與實現(xiàn)
- 基于QT的嵌入式綜合媒體無線觸摸屏系統(tǒng).pdf
- 嵌入式工控觸摸屏人機界面設(shè)計.pdf
- 嵌入式課程設(shè)計---嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式Linux中觸摸屏驅(qū)動的設(shè)計與實現(xiàn).pdf
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式課程設(shè)計
- 嵌入式系統(tǒng)綜述課程設(shè)計
- 嵌入式課程設(shè)計報告---嵌入式文件鎖應(yīng)用
- 基于嵌入式Linux的光學(xué)觸摸屏的設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論