十字路口嵌入式系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  嵌入式系統(tǒng)</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  設(shè)計(jì)任務(wù)一 十字路口交通燈控制</p><p><b>  一、設(shè)計(jì)目的:</b></p><p>  1.了解基于ARM7核的LPC2106的管腳功能和特點(diǎn)

2、,掌握I/O控制寄存器的設(shè)置方法;</p><p>  2.掌握ARM7應(yīng)用系統(tǒng)編程開(kāi)發(fā)方法,能用C語(yǔ)言編寫(xiě)應(yīng)用程序;</p><p>  3.熟練掌握ADS1.2軟件的使用以及PROTEUS仿真調(diào)試的方法;</p><p><b>  二、具體任務(wù):</b></p><p>  1.采用PROTEUS完成十字路口交通燈

3、控制的硬件電路設(shè)計(jì),要求單片機(jī)選型為飛利浦公司的LPC2106,東西南北方向分別設(shè)置紅黃綠3個(gè)指示燈,東西方向和南北方向各用1個(gè)數(shù)碼管顯示通行時(shí)間;</p><p>  2.用ADS1.2編寫(xiě)C語(yǔ)言應(yīng)用程序,完成十字路口交通燈控制;</p><p>  3.采用PROTEUS將應(yīng)用程序裝載在LPC2106中,進(jìn)行仿真驗(yàn)證。要求東西方向和南北方向的數(shù)碼管顯示通行時(shí)間并倒計(jì)時(shí),可以設(shè)置成一樣,

4、例如都是9秒倒計(jì)時(shí);每當(dāng)?shù)褂?jì)時(shí)時(shí)間到,完成紅黃綠指示燈的狀態(tài)切換,模擬實(shí)現(xiàn)十字路口的交通燈管理控制。</p><p>  三、硬件電路設(shè)計(jì)。(參考下圖完成硬件電路設(shè)計(jì),用屏幕抓圖的方式將自己設(shè)計(jì)的PROTEUS電路圖粘貼在下面,并用文字對(duì)所設(shè)計(jì)的電路功能、原理進(jìn)一步說(shuō)明)</p><p><b>  硬件電路說(shuō)明:</b></p><p>  

5、此電路設(shè)計(jì)實(shí)現(xiàn)的功能是:模擬實(shí)現(xiàn)十字路口的交通燈管理控制。東西綠燈南北紅燈亮30秒,然后是東西綠燈變?yōu)辄S燈亮3秒,南北紅燈不變。再到東西黃燈變?yōu)榧t燈,南北紅燈變?yōu)榫G燈,都是亮30秒。最后是南北綠燈變?yōu)辄S燈亮3秒,東西紅燈不變。因?yàn)榇穗娐分徊捎脙蓚€(gè)數(shù)碼管,僅僅可以完成一些簡(jiǎn)單的功能,這樣可以先編寫(xiě)簡(jiǎn)單的程序。按理是要4個(gè)數(shù)碼管來(lái)顯示的,這樣就可以調(diào)整由綠燈變?yōu)辄S燈時(shí),而紅燈不變的時(shí)間差。因?yàn)闀r(shí)間有限,所以只實(shí)現(xiàn)交通燈的基本功能實(shí)現(xiàn),后續(xù)電

6、路還需改進(jìn)!</p><p>  四、源程序。(只將C語(yǔ)言應(yīng)用程序附在后面,其它項(xiàng)目文檔不要提供)</p><p>  #include"config.h"</p><p>  #include"LPC2106.h" </p><p><b>  uint32</b></p&

7、gt;<p>  table1[]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f};</p><p><b>  uint32 </b></p><p>  table2[]={0x2600,0x2500,0x4100,0x1a00,0x1900};</p><p>  ui

8、nt32 table3[]={0x5b,0x06,0x3f};</p><p>  void delay(uint32 n)//延時(shí)函數(shù),當(dāng)n為1時(shí)大致延時(shí)1毫秒</p><p><b>  {</b></p><p>  uint32 i,j;</p><p>  for(i=n;i>0;i--)&

9、lt;/p><p>  for(j=2000;j>0;j--);</p><p><b>  } </b></p><p>  int main() </p><p><b>  { </b></p><p>  int i=0,n=0,m=0;<

10、;/p><p>  PINSEL0=0x0000000;//寄存器初始化,選擇其I/0口功能</p><p>  PINSEL1=0x00000000;</p><p>  IODIR=0x0000ffff; //清0寄存器設(shè)置 </p><p><b>  while(1) </b></p>&

11、lt;p><b>  { </b></p><p>  for(i=0;i<3;i++)</p><p><b>  {</b></p><p>  for(n=0;n<10;n++)</p><p><b>  {</b></p><

12、p>  for(m=0;m<50;m++)</p><p><b>  {</b></p><p>  IOSET=table2[0] + table3[i];</p><p>  delay(10);</p><p>  IOCLR=0x0000ffff;</p><p>  IOS

13、ET=table2[1]+ table1[n] ;</p><p>  delay(10);</p><p>  IOCLR=0x0000ffff;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

14、}</b></p><p>  for(n=6;n<10;)</p><p><b>  {</b></p><p>  IOCLR=IOSET;</p><p>  IOSET=table2[2]+ table1[n++];</p><p>  delay(500);</

15、p><p>  IOCLR=0x0000ffff;</p><p><b>  }</b></p><p>  for(i=0;i<3;i++)</p><p><b>  {</b></p><p>  for(n=0;n<10;n++)</p>&l

16、t;p><b>  {</b></p><p>  for(m=0;m<50;m++)</p><p><b>  {</b></p><p>  IOSET=table2[3] + table3[i];</p><p>  delay(10);</p><p>

17、  IOCLR=0x0000ffff;</p><p>  IOSET=table2[4] + table1[n];</p><p>  delay(10);</p><p>  IOCLR=0x0000ffff;</p><p><b>  }</b></p><p><b>  }

18、</b></p><p><b>  }</b></p><p>  for(n=6;n<10;)</p><p><b>  { </b></p><p>  IOCLR=IOSET;</p><p>  IOSET=table2[2]+ table

19、1[n++];</p><p>  delay(10);</p><p>  IOCLR=0x0000ffff;</p><p><b>  }</b></p><p>  } </p><p><b>  } </b></p><p&g

20、t;  五、仿真效果。(PROTEUS運(yùn)行仿真效果圖如下)</p><p><b>  圖一:</b></p><p><b>  圖二:</b></p><p><b>  圖三:</b></p><p>  設(shè)計(jì)任務(wù)二 uC/OS-Ⅱ的移植與應(yīng)用</p>&l

21、t;p><b>  一、設(shè)計(jì)目的:</b></p><p>  1.了解嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-Ⅱ可移植、可裁剪等性能特點(diǎn),正確理解實(shí)時(shí)操作系統(tǒng)中任務(wù)、信號(hào)、消息、中斷等基本概念以及uC/OS-Ⅱ多任務(wù)管理的調(diào)度算法;</p><p>  2.掌握uC/OS-Ⅱ在ARM7上移植的方法;</p><p>  3.能將uC/OS-Ⅱ移植

22、在LPC2106中,并根據(jù)具體要求創(chuàng)建用戶任務(wù),解決實(shí)際問(wèn)題;</p><p><b>  二、具體任務(wù):</b></p><p>  1.uC/OS-Ⅱ移植在LPC2106中。</p><p>  2.編寫(xiě)用戶任務(wù)程序,完成實(shí)時(shí)溫度的采集控制。硬件電路見(jiàn)參考硬件電路圖,圖中用滑動(dòng)變阻器代替溫度傳感器轉(zhuǎn)換后的電壓,用ADC0809完成A/D轉(zhuǎn)換

23、,并用數(shù)碼管顯示出來(lái)。</p><p>  三、參考硬件電路。(用文字對(duì)所設(shè)計(jì)的電路功能、原理做詳細(xì)說(shuō)明)</p><p><b>  附圖:</b></p><p><b>  硬件電路說(shuō)明:</b></p><p>  硬件電路要實(shí)現(xiàn)的功能時(shí)完成實(shí)時(shí)溫度的采集控制。圖中用滑動(dòng)變阻器代替溫度傳感器

24、轉(zhuǎn)換后的電壓,用ADC0809完成A/D轉(zhuǎn)換,并用數(shù)碼管顯示出來(lái)。每當(dāng)我們按下啟動(dòng)鍵時(shí),ADC0808將通道0的電壓值轉(zhuǎn)換并顯示在數(shù)碼管上顯示出來(lái)。由于此電路使用了嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-Ⅱ,電路功能的實(shí)現(xiàn)可以劃分為3個(gè)任務(wù),第一個(gè)任務(wù)按鍵識(shí)別;第二個(gè)任務(wù)A/D轉(zhuǎn)換;第三個(gè)任務(wù)數(shù)碼管顯示。</p><p>  四、源程序。(只將C語(yǔ)言應(yīng)用程序附在后面,其它項(xiàng)目文檔不要提供,C語(yǔ)言應(yīng)用程序要有一定的注釋說(shuō)明)

25、</p><p><b>  源程序:</b></p><p>  /********************************************************************************************************/</p><p>  #include "config.

26、h"</p><p>  #define TASK_STK_SIZE 64</p><p>  #define con 0x00001fff</p><p>  #define key 0x00001000</p><p>  #define adstart 0x000

27、02000</p><p>  #define adend 0x00004000</p><p>  const uint32 led_code[16]={0x0000003F,0x00000006,0x0000005B,0x0000004F,0x00000066,0x0000006D,0x0000007D,0x00000007, 0x0000007F,0x0000

28、0006F,0x00000077,0x0000007C,0x00000039,0x0000005E,0x00000079,0x00000071};</p><p>  //定義任務(wù)堆棧大小</p><p>  OS_STK Task0Stk[TASK_STK_SIZE];</p><p>  OS_STK Task1Stk[TASK_STK_SI

29、ZE];</p><p>  OS_STK Task2Stk[TASK_STK_SIZE];</p><p>  INT32U data;</p><p><b>  //任務(wù)聲明</b></p><p>  void Task0(void *data);</p><p>  voi

30、d Task1(void *data);</p><p>  void Task2(void *data);</p><p>  /*********************************************************************************************************</p><p>  

31、** 函數(shù)名稱: main</p><p>  ** 功能描述: c語(yǔ)言的主函數(shù),由它啟動(dòng)多任務(wù)環(huán)境</p><p>  ********************************************************************************************************/</p><p>  int mai

32、n (void)</p><p><b>  {</b></p><p>  OSInit();//操作系統(tǒng)初始化</p><p>  OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1], 1);</p><p>  OSTa

33、skCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1],2);</p><p>  OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1],3); </p><p>  OSStart();//啟動(dòng)操作系統(tǒng)</p><

34、;p>  //while((IOPIN&key)!=0);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void delay(INT32U t)</p><p>  {while(t--);}</p>

35、<p>  void L_Init (void)</p><p><b>  {</b></p><p>  PINSEL0=0x00000000; </p><p>  PINSEL1=0x00000000; </p><p>  IODIR|= 0x00002

36、fFF; </p><p><b>  }</b></p><p>  /*********************************************************************************************************</p><p>  ** 函數(shù)名稱:T

37、ask0</p><p>  ** 功能描述: μCOS-II的第一個(gè)任務(wù),通常由它初始化目標(biāo)板和建立其它任務(wù)</p><p>  ********************************************************************************************************/</p><p>  vo

38、id Task0(void *p_arg)</p><p><b>  { </b></p><p>  p_arg = p_arg; </p><p>  TargetInit();

39、 </p><p>  L_Init(); </p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  while((

40、IOPIN&key)!=0);</p><p>  L_Init(); </p><p>  while((IOPIN&key)==0);</p><p>  IOCLR= 0x0000ffFF;</p><p>  OSTaskSuspend(OS_PRIO_SELF);//無(wú)條件掛起一個(gè)任務(wù)(任務(wù)優(yōu)先級(jí)) &l

41、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************************************************************************************************</p>

42、<p>  ** 函數(shù)名稱:Task1</p><p>  ** 功能描述: μCOS-II的第2個(gè)任務(wù),AD轉(zhuǎn)換</p><p>  ********************************************************************************************************/</p><p&

43、gt;  void Task1(void *p_arg)</p><p><b>  { </b></p><p>  p_arg = p_arg; </p><p>  L_Init();

44、 </p><p>  for(;;)//送單次脈沖,啟動(dòng)A/D轉(zhuǎn)換</p><p>  {IOCLR=adstart;</p><p>  delay(50);</p><p>  IOSET=adstart;</p><p>  delay(50);</p>

45、<p>  IOCLR=adstart;</p><p>  delay(50);</p><p>  L_Init(); </p><p>  while((IOPIN&adend)==0);//A/D轉(zhuǎn)換是否結(jié)束</p><p>  IOSET=1<<11;//OE置1,將A/D轉(zhuǎn)換后的數(shù)據(jù)

46、讀入</p><p>  // OSTimeDlyHMSM(0,0,0,50);</p><p>  data=IOPIN;</p><p>  data=data>>15;</p><p>  OSTaskSuspend(OS_PRIO_SELF);</p><p><b>  }</b&

47、gt;</p><p><b>  } </b></p><p>  /****************************************************************************************************</p><p>  ** 函數(shù)名稱:Task2</p>&

48、lt;p>  ** 功能描述: μCOS-II的第3個(gè)任務(wù),LED顯示</p><p>  ********************************************************************************************************/</p><p>  void Task2(void *p_arg)</p&

49、gt;<p>  { INT32U d,g,s,b;</p><p>  p_arg = p_arg; </p><p>  L_Init(); </p><p><

50、;b>  while(1)</b></p><p>  { b=data/100; d=data %100;</p><p>  s=d/10; g=d%10; </p><p>  IOSET=(1<<10)|led_code[g];</p><p>  delay(30);</p

51、><p>  IOCLR=0x00000fff;</p><p>  IOSET=1<<10;</p><p>  IOCLR=1<<10;</p><p>  IOSET=(1<<9)|led_code[s]; </p><p>  delay(30);</p>&l

52、t;p>  IOCLR=0x00000fff;</p><p>  IOSET=1<<9;</p><p>  IOCLR=1<<9;</p><p>  IOSET=(1<<8)|led_code[b]; </p><p>  delay(30);</p><p>  I

53、OCLR=0x00000fff;</p><p>  IOSET=1<<8;</p><p>  IOCLR=1<<8;</p><p>  while((IOPIN&key)==0)</p><p>  {OSTaskResume(2); }//喚醒掛起的任務(wù)2需要的函數(shù)</p>&l

54、t;p><b>  }</b></p><p>  // OSTaskResume(0);</p><p><b>  }</b></p><p>  五、仿真效果。(用屏幕抓圖的方式將PROTEUS運(yùn)行仿真效果圖粘貼在下面)</p><p><b>  圖一:</b>&

55、lt;/p><p><b>  圖二:</b></p><p><b>  嵌入式課程設(shè)計(jì)總結(jié)</b></p><p>  課程設(shè)計(jì)共耗時(shí)兩個(gè)星期,終于到了結(jié)尾總結(jié)的時(shí)刻了。作為電氣自動(dòng)化專業(yè)的學(xué)生,設(shè)計(jì)是我們將來(lái)必需的技能,這次課程設(shè)計(jì)恰恰給我們提供了一個(gè)應(yīng)用自己所學(xué)知識(shí)的機(jī)會(huì),從到圖書(shū)館查找資料到對(duì)電路的設(shè)計(jì)到最后電路的成

56、型,都對(duì)我所學(xué)的知識(shí)進(jìn)行了檢驗(yàn)。可以說(shuō),本次課程設(shè)計(jì)有苦也有甜。設(shè)計(jì)思路是最重要的,只要你的設(shè)計(jì)思路是成功的,那你的設(shè)計(jì)已經(jīng)成功了一半。因此我們應(yīng)該在設(shè)計(jì)前做好充分的準(zhǔn)備,像查找詳細(xì)的資料,為我們?cè)O(shè)計(jì)的成功打下堅(jiān)實(shí)的基礎(chǔ)。</p><p>  本次為期兩周的課程設(shè)計(jì),通過(guò)“十字路口交通燈控制”和“uC/OS-Ⅱ的移植與應(yīng)用”這兩個(gè)課題,讓我對(duì)proteus這個(gè)軟件的操作和使用環(huán)境有了進(jìn)一步的了解和深入,知道如何更

57、加準(zhǔn)確的去設(shè)計(jì)嵌入式程序和硬件圖,再通過(guò)proteus的仿真,得到設(shè)計(jì)結(jié)果。同時(shí)也了解了嵌入式芯片引腳的各種功能,明白如何合理的運(yùn)用和使用它們。</p><p>  在此次的嵌入式課程設(shè)計(jì)過(guò)程中,更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法。也鍛煉了自己獨(dú)立思考問(wèn)題的能力和通過(guò)查看相關(guān)資料來(lái)解決問(wèn)題的習(xí)慣。雖然這只是一次簡(jiǎn)單的課程設(shè)計(jì),但通過(guò)這次課程設(shè)計(jì)我們了解了課程設(shè)計(jì)的一般步驟,和設(shè)計(jì)

58、中應(yīng)注意的問(wèn)題。設(shè)計(jì)本身并不是有很重要的意義,而是對(duì)待問(wèn)題時(shí)的態(tài)度和處理事情的能力。設(shè)計(jì)的過(guò)程,設(shè)計(jì)的思想和設(shè)計(jì)硬件電路中的每一個(gè)環(huán)節(jié),電路中各個(gè)部分的功能是如何實(shí)現(xiàn)的。各個(gè)芯片能夠完成什么樣的功能,使用芯片時(shí)應(yīng)該注意哪些要點(diǎn)。實(shí)驗(yàn)中,不僅可以把課堂中所學(xué)到的知識(shí),直接加以運(yùn)用,而且還可以把各個(gè)分離的知識(shí)點(diǎn)組合為一個(gè)整體。使自己在專業(yè)知識(shí)和動(dòng)手能力上有了和大的提高。</p><p>  通過(guò)*老師理論課上的講解以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論