嵌入式觸摸屏課程設(shè)計---arm嵌入式系統(tǒng)_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論