欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      DSP 課程設(shè)計 交通燈的控制與實現(xiàn)

      時間:2019-05-12 01:04:15下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《DSP 課程設(shè)計 交通燈的控制與實現(xiàn)》,但愿對你工作學(xué)習有幫助,當然你在寫寫幫文庫還可以找到更多《DSP 課程設(shè)計 交通燈的控制與實現(xiàn)》。

      第一篇:DSP 課程設(shè)計 交通燈的控制與實現(xiàn)

      DSP課程設(shè)計報告--DSP交通燈的控制與實現(xiàn)

      學(xué)

      院:物

      學(xué)

      院 課

      程 :DSP 技術(shù)及應(yīng)用

      級 :321100 姓

      名 :

      學(xué)

      號 : *** 指導(dǎo)教師 :

      1.課程設(shè)計目的 2.課程設(shè)計正文

      2.1 課程設(shè)計要求 2.2F2812原理圖

      2.3F2812系統(tǒng)環(huán)境結(jié)構(gòu)實圖 2.4設(shè)計原理 2.5設(shè)計結(jié)果 2.6心得體會

      3.參考文獻

      4.此次課程設(shè)計的程序

      1.課程設(shè)計目的

      這學(xué)期我們學(xué)習了《DSP》這一門課程,為了實現(xiàn)理論結(jié)合實踐,鍛煉我們的動手能力,我們針對這門課程進行的課程設(shè)計。通過這次的課程設(shè)計,更加深入的學(xué)習這門課程,掌握這門技術(shù),加深對DSP控制器的原理的理解和掌握。利用DSP開發(fā)環(huán)境CCS C2000對源程序文件進行編譯、鏈接、裝載調(diào)試,以完成基本的DSP項目文件設(shè)計。

      2.課程設(shè)計正文 2.1 課程設(shè)計要求

      ⑴ 設(shè)計一個十字路口交通燈(帶一個倒計時數(shù)碼管),每個方向有三色(紅、黃、綠)。

      ⑵ 實現(xiàn)交通燈雙向車道紅綠燈切換功能、交通燈全亮功能、數(shù)碼管全亮功能。⑶ 保證每次切換倒計時20秒,在此時熄滅綠燈。

      2.2 F2812原理圖

      2.3 F2812系統(tǒng)調(diào)試環(huán)境結(jié)構(gòu)實物

      圖2.3 F2812系統(tǒng)調(diào)試環(huán)境實物結(jié)構(gòu)

      2.4設(shè)計原理

      1.交通燈控制要求

      利用 ICETEK-EDU 實驗箱提供的設(shè)備,設(shè)計模擬實際生活中十字路口交通燈控制的程序。

      要求如下:

      -交通燈分紅黃綠三色,東、南、西、北各一組,用燈光信號實現(xiàn)對交通的控制:綠燈信號

      表示通行,黃燈表示警告,紅燈禁止通行,燈光閃爍表示信號即將改變。

      -計時顯示:8×8 點陣顯示兩位計數(shù),為倒計時,每秒改變計數(shù)顯示。

      -正常交通控制信號順序:正常交通燈信號自動變換

      (1)南北方向綠燈,東西紅燈(20 秒)。

      (2)南北方向綠燈閃爍。

      (3)南北方向黃燈。

      (4)南北方向紅燈,東西方向黃燈。

      (5)東西方向綠燈(20 秒)。

      (6)東西方向綠燈閃爍。

      (7)東西方向黃燈。

      (8)返回(1)循環(huán)控制。

      -緊急情況處理:模仿緊急情況(重要車隊通過、急救車通過等)發(fā)生時,交通警察手動控制

      (1)當任意方向通行剩余時間多于 10 秒,將時間改成 10 秒。

      (2)正常變換到四面紅燈(20 秒)。

      (3)直接返回正常信號順序的下一個通行信號(跳過閃爍綠燈、黃燈狀態(tài))。2.交通燈模擬

      利用 ICETEK-CTR 上的一組發(fā)光二極管(共 12 只,分為東西南北四組、紅黃綠三色)的亮滅實現(xiàn)交通信號的模擬。3.計時顯示

      利用 ICETEK-CTR 上的發(fā)光二極管顯示陣列模擬顯示。4.計時

      使用 TMS320F2812DSP 片上定時器,定時產(chǎn)生時鐘計數(shù),再利用此計數(shù)對應(yīng)具體時間。5.緊急情況

      利用 ICETEK-CTR 上鍵盤產(chǎn)生外中斷,中斷正常信號順序,模擬突發(fā)情況。6.程序設(shè)計

      根據(jù)設(shè)計要求,由于控制是由不同的各種狀態(tài)按順序發(fā)生的,我們可以采用狀態(tài)機制控制方法來解決此問題。這種方法是:首先列舉所有可能發(fā)生的狀態(tài);然后將這些狀態(tài)編號,按順序產(chǎn)生這些狀態(tài);狀態(tài)延續(xù)的時間用程序控制。對于突發(fā)情況,可采用在正常順序的控制中插入特殊控制序列的方式完成。

      2.5.設(shè)計結(jié)果

      程序可以完成交通燈功能,順序循環(huán)工作。在中斷信號到來后,進入特殊過程:當前計時如果大于 10 改成 10,否則不變,等待狀態(tài)切換;切換后進入四面禁行狀態(tài),計數(shù) 20 秒后返回斷點后的通行(有兩方向是綠燈)狀態(tài)。設(shè)計結(jié)果部分截圖

      2.6心得體會

      兩周的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計過程中,和同學(xué)們相互探討,相互學(xué)習。在此次的課程設(shè)計中,主要資料的查閱和對電路圖的總體設(shè)計,對電路的設(shè)計包括繪制電路原理圖。由于平時在對本課程的學(xué)習中,沒有注重系統(tǒng)的設(shè)計,故在設(shè)計電路原理圖的過程中也遇到了各種各樣的問題。但是,這些問題在跟同組的同學(xué)討論和向老師請教后也得到了解決。由此可以得出,我對本門課程的掌握還是很不好,動手的能力還是很欠缺的。在今后的學(xué)習過程中不僅要注意對理念知識的掌握,而且還要培養(yǎng)自己的對手操作能力。最后在老師的辛勤的指導(dǎo)下,終于迎刃而解,終于覺得平時所學(xué)的知識有了實用的價值,達到了理論與實際相結(jié)合的目的,不僅學(xué)到了不少知識,而且鍛煉了自己的能力,使自己對以后的路有了更加清楚的認識,同時,對未來有了更多的信心。最后,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!

      3.參考文獻

      [1] 蘇濤,藺麗華,盧光躍.DSP實用技術(shù).西安電子科技大學(xué)出版社.2002 [2] 趙紅怡編.DSP技術(shù)與運用實例.2006.4.此次課程設(shè)計的程序

      #include “DSP281x_Device.h”

      // DSP281x Headerfile Include File #include “DSP281x_Examples.h”

      // DSP281x Examples Include File

      void Delay(unsigned int nTime);void SetLEDArray1(int nNumber);// 修改顯示內(nèi)容 void RefreshLEDArray1();

      // 刷新顯示 interrupt void cpu_timer0_isr(void);interrupt void XINT2_isr(void);void EndICETEKCTR();

      #define XINT2CR(*((unsigned int *)0x7071))#define XNMICR(*((unsigned int *)0x7077))#define T46uS 0x0d40 #define SCANCODE_0 0x70 #define SCANCODE_1 0x69 #define SCANCODE_2 0x72 #define SCANCODE_3 0x7A #define SCANCODE_4 0x6B #define SCANCODE_5 0x73 #define SCANCODE_6 0x74 #define SCANCODE_7 0x6C #define SCANCODE_8 0x75 #define SCANCODE_9 0x7D #define SCANCODE_Del 0x49 #define SCANCODE_Enter 0x5A #define SCANCODE_Plus 0x79 #define SCANCODE_Minus 0x7B #define SCANCODE_Mult 0x7C #define SCANCODE_Divid 0x4A #define SCANCODE_Num 0x77 #define CTRGR *(int *)0x108000 #define CTRLCDCMDR *(int *)0x108001 #define CTRKEY *(int *)0x108001 #define CTRLCDCR *(int *)0x108002 #define CTRCLKEY *(int *)0x108002 #define CTRLCDLCR *(int *)0x108003 #define CTRLCDRCR *(int *)0x108004 #define CTRLA *(int *)0x108005 #define CTRLR *(int *)0x108007

      Uint16 var1 = 0;Uint16 var2 = 0;Uint16 var3 = 0;Uint16 test_count = 0;Uint16 Test_flag = 0;Uint16 Test_var = 0;Uint16 Test_status[32];#define nStatusNSGreenEWRed 160 #define nStatusNSFlashEWRed 184 #define nStatusNSYellowEWRed 200 #define nStatusNSRedEWYellow 216 #define nStatusNSRedEWGreen 376 #define nStatusNSRedEWFlash 400 #define nStatusNSRedEWYellow1 416 #define nStatusNSYellowEWRed1 432 #define nTotalTime 448 #define nStatusHold 160

      #define statusNSGreenEWRed 0 #define statusNSFlashEWRed 1 #define statusNSYellowEWRed 2 #define statusNSRedEWYellow 3 #define statusNSRedEWGreen 4 #define statusNSRedEWFlash 5 #define statusHold 6 int a=0;unsigned int uWork,nTimeCount,nTimeMS;unsigned int uLightStatusEW,uLightStatusSN;unsigned int bHold;unsigned char ledbuf[8],ledx[8];unsigned char led[40]= { 0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00, 0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76, 0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71, 0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07, 0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E };

      void main(void){

      int nWork1,nWork2,nWork3,nWork4,k;

      int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;

      unsigned int nScanCode;

      nTimeCount=0;bHold=0;

      uLightStatusEW=uLightStatusSN=0;

      nNowStatus=0;nOldStatus=1;nOldTimeCount=0;

      //InitSysCtrl();//初始化cpu

      InitPll(0x0);

      DINT;//關(guān)中斷

      InitPieCtrl();//初始化pie寄存器

      IER = 0x0000;//禁止所有的中斷

      IFR = 0x0000;

      InitPieVectTable();//初始化pie中斷向量表

      EALLOW;// This is needed to write to EALLOW protected registers

      PieVectTable.TINT0 = &cpu_timer0_isr;//指定中斷服務(wù)子程序

      PieVectTable.XINT2 = &XINT2_isr;

      EDIS;

      // This is needed to disable write to EALLOW protected registers

      //EALLOW;// This is needed to write to EALLOW protected registers

      //PieVectTable.XINT2 = &XINT2_isr;

      //EDIS;

      // This is needed to disable write to EALLOW protected registers

      CpuTimer0.RegsAddr = &CpuTimer0Regs;// Initialize timer period to maximum:

      CpuTimer0Regs.PRD.all = 0xffff;//CpuTimer0Regs.PRDH.all = 0xffff;// Initialize pre-scale counter to divide by 1(SYSCLKOUT):

      CpuTimer0Regs.TPR.all = 0xff09;CpuTimer0Regs.TIM.all = 0xffff;//CpuTimer0Regs.TIMH.all = 0xffff;CpuTimer0Regs.TPRH.all = 0;// Make sure timer is stopped: CpuTimer0Regs.TCR.bit.TSS = 1;CpuTimer0Regs.TCR.bit.SOFT = 1;CpuTimer0Regs.TCR.bit.FREE = 1;// Reload all counter register with period value: CpuTimer0Regs.TCR.bit.TRB = 1;CpuTimer0Regs.TCR.bit.TIE = 1;// Reset interrupt counters: CpuTimer0.InterruptCount = 0;

      // Enable TINT0 in the PIE: Group 1 interrupt 7

      PieCtrlRegs.PIEIER1.bit.INTx5 = 1;

      PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

      XINT2CR =0x1;/*打開管腳xint2外中斷*/

      //XNMICR=0x1;/*打開nmi中斷*/ // Enable global Interrupts and higher priority real-time debug events:

      EINT;

      // Enable Global interrupt INTM

      ERTM;

      // Enable Global realtime interrupt DBGM

      CTRGR=0;// 初始化ICETEK-CTR CTRGR=0x80;CTRGR=0;CTRLR=0;// 關(guān)閉東西方向的交通燈

      CTRLR=0x40;// 關(guān)閉南北方向的交通燈

      CTRLR=0x0c1;// 開啟發(fā)光二極管顯示陣列

      for(k=0;k<8;k++){

      ledbuf[k]=0x0ff;// 顯示為空白

      ledx[k]=(k<<4);// 生成顯示列控制字 } k=CTRLCDCR;// 清除鍵盤緩沖區(qū)

      StartCpuTimer0();//啟動定時器0

      // 根據(jù)計時器計數(shù)切換狀態(tài)

      // 根據(jù)狀態(tài)設(shè)置計數(shù)和交通燈狀態(tài) while(1)

      {

      if(bHold && nNowStatus==statusHold)

      {

      if(nTimeCount>=nStatusHold)

      {

      nNowStatus=nSaveStatus;

      nTimeCount=nSaveTimeCount;

      bHold=0;

      }

      }

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      if(nNowStatus==nOldStatus)

      {

      switch(nNowStatus)

      {

      case statusNSFlashEWRed:

      nWork1=nTimeCount-nStatusNSGreenEWRed;

      nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed;

      nWork3=nWork2/3;

      nWork4=nWork3/2;

      if(nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0)

      uLightStatusSN=((nWork1%nWork3)<=nWork4)?(0x49):(0x40);

      break;

      case statusNSRedEWFlash:

      nWork1=nTimeCount-nStatusNSRedEWGreen;

      nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;

      nWork3=nWork2/3;

      nWork4=nWork3/2;

      if(nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0)

      uLightStatusEW=((nWork1%nWork3)<=nWork4)?(0x09):(0x00);break;case statusNSGreenEWRed: nWork1=nStatusNSGreenEWRed/20;if(nWork1>0){

      nWork2=20-nTimeCount/nWork1;

      if(bHold)

      {

      if(nWork2>10)

      {

      nTimeCount=nWork1*10;

      nWork2=10;

      }

      }

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray1(nWork2);

      } } break;case statusNSRedEWGreen: nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;if(nWork1>0){

      nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;

      if(bHold)

      {

      if(nWork2>10)

      {

      nTimeCount=nStatusNSRedEWYellow+nWork1*10;

      nWork2=10;

      }

      }

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray1(nWork2);

      } } break;case statusHold:

      nWork1=nStatusHold/20;

      if(nWork1>0)

      {

      nWork2=20-nTimeCount/nWork1;

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray1(nWork2);

      }

      }

      break;

      }

      }

      else

      {

      if(bHold)

      {

      nSaveStatus=nNowStatus;

      nSaveTimeCount=nTimeCount;

      nNowStatus=statusHold;

      nTimeCount=0;

      if(nSaveStatus==statusNSFlashEWRed nSaveStatus==statusNSYellowEWRed)

      {

      nSaveStatus=statusNSRedEWGreen;

      nSaveTimeCount=nStatusNSRedEWYellow;

      }

      else if(nSaveStatus==statusNSRedEWFlash nSaveStatus==statusNSRedEWYellow)

      {

      nSaveStatus=statusNSGreenEWRed;

      nSaveTimeCount=0;

      }

      }

      nOldStatus=nNowStatus;

      switch(nNowStatus)

      {

      case statusNSGreenEWRed:

      uLightStatusEW=0x24;uLightStatusSN=0x49;

      SetLEDArray1(20);

      break;

      case statusNSFlashEWRed:

      uLightStatusEW=0x24;uLightStatusSN=0x49;

      SetLEDArray1(0);

      ||

      ||

      break;

      case statusNSYellowEWRed:

      uLightStatusEW=0x24;uLightStatusSN=0x52;

      SetLEDArray1(20);

      break;

      case statusNSRedEWYellow:

      uLightStatusEW=0x12;uLightStatusSN=0x64;

      SetLEDArray1(20);

      break;

      case statusNSRedEWGreen:

      uLightStatusEW=0x09;uLightStatusSN=0x64;

      SetLEDArray1(20);

      break;

      case statusNSRedEWFlash:

      uLightStatusEW=0x09;uLightStatusSN=0x64;

      SetLEDArray1(0);

      break;

      case statusHold:

      uLightStatusEW=0x24;uLightStatusSN=0x64;

      SetLEDArray1(20);

      break;

      }

      }

      CTRLR=uLightStatusEW;CTRLR=uLightStatusSN;// 設(shè)置交通燈狀態(tài)

      RefreshLEDArray1();// 刷新發(fā)光二極管顯示

      nScanCode=CTRKEY;// 讀鍵盤掃描碼

      nScanCode&=0x0ff;

      if(nScanCode==SCANCODE_Enter)break;

      }

      EndICETEKCTR();exit(0);}

      interrupt void cpu_timer0_isr(void){

      //CpuTimer0.InterruptCount++;

      // Acknowledge this interrupt to receive more interrupts from group 1

      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

      CpuTimer0Regs.TCR.bit.TIF = 1;

      CpuTimer0Regs.TCR.bit.TRB = 1;

      nTimeMS++;if(nTimeMS>=5){

      nTimeMS=0;

      nTimeCount++;

      nTimeCount%=nTotalTime;} }

      interrupt void XINT2_isr(void){

      //StopCpuTimer0();

      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

      bHold=1;

      //StartCpuTimer0();}

      void Delay(unsigned int nDelay){ int ii,jj,kk=0;for(ii=0;ii

      for(jj=0;jj<64;jj++)

      {

      kk++;

      } } } // 設(shè)置發(fā)光二極管顯示內(nèi)容 void SetLEDArray1(int nNumber){ int i,k,kk,kkk;

      kkk=nNumber;

      k=kkk/10*4;kk=kkk%10*4;for(i=0;i<4;i++){

      ledbuf[7-i]=~led[k+i];

      ledbuf[3-i]=~led[kk+i];} } void RefreshLEDArray1(){ int i;for(i=0;i<8;i++){

      CTRGR=ledx[i];

      CTRLA=ledbuf[i];} } void EndICETEKCTR(){ int k;CTRLR=0;

      CTRLR=0x40;CTRLR=0x0c0;k=CTRLCDCR;} // 關(guān)閉東西方向的交通燈 // 關(guān)閉南北方向的交通燈 // 關(guān)閉發(fā)光二極管顯示陣列// 清除鍵盤緩沖區(qū)

      第二篇:DSP課程設(shè)計

      TMS320C54x與PC通信系統(tǒng)的設(shè)計(單號)

      一、設(shè)計目的

      本次課程設(shè)計的目的是為了進一步提高學(xué)生的自我開發(fā)能力,培養(yǎng)學(xué)生的查閱資料,獨立分析問題、解決問題以及實際動手的能力。也是對理論學(xué)習的一個應(yīng)用和補充的過程。

      二、設(shè)計的內(nèi)容及要求

      1、設(shè)計內(nèi)容

      主機接口HPI是一種高速、異步并行接口。TMS320C54x通過HPI接口與PC并行口的通信。

      2、設(shè)計要求

      (1)DSP最小硬件系統(tǒng)的設(shè)計

      (2)TMS320C54x與PC并行口硬件電路設(shè)計(3)軟件設(shè)計

      三、總體設(shè)計方案

      四、硬件系統(tǒng)設(shè)計

      五、軟件系統(tǒng)設(shè)計

      六、心得體會

      七、參考文獻

      附錄1 軟件系統(tǒng)設(shè)計程序 附錄2 硬件系統(tǒng)原理圖

      (注:按以上七個部分編寫論文,內(nèi)容自己擴充)在PDF文檔中P158-177中有相關(guān)資料可查閱

      本系統(tǒng)設(shè)計是要實現(xiàn)

      TMS320C54x與TLC320AD50的通信系統(tǒng)的設(shè)計(雙號)

      一、設(shè)計目的

      本次課程設(shè)計的目的是為了進一步提高學(xué)生的自我開發(fā)能力,培養(yǎng)學(xué)生的查閱資料,獨立分析問題、解決問題以及實際動手的能力。也是對理論學(xué)習的一個應(yīng)用和補充的過程。

      二、設(shè)計的內(nèi)容及要求

      1、設(shè)計內(nèi)容

      模/數(shù)接口設(shè)計是DSP系統(tǒng)設(shè)計中一個重要的組成部分。本系統(tǒng)設(shè)計是要實現(xiàn)對模擬信號的采集,并將其轉(zhuǎn)換為數(shù)字信號通過TMS320C54x的串行通信接口將數(shù)據(jù)存儲、處理及輸出等功能。

      2、設(shè)計要求

      (1)DSP最小硬件系統(tǒng)的設(shè)計

      (2)TMS320C54x與TLC320AD50串行口硬件電路設(shè)計(3)軟件設(shè)計

      三、總體設(shè)計方案

      四、硬件系統(tǒng)設(shè)計

      五、軟件系統(tǒng)設(shè)計

      六、心得體會

      七、參考文獻

      附錄1 軟件系統(tǒng)設(shè)計程序 附錄2 硬件系統(tǒng)原理圖

      (注:按以上七個部分編寫論文,內(nèi)容自己擴充)

      第三篇:基于DSP實現(xiàn)道路交通燈控制系統(tǒng)設(shè)計

      引言..........................................................................................................1 2項目設(shè)計實現(xiàn)功能...................................................................................2 2.1交通燈控制要求...............................................................................2 2.2 液晶顯示器控制..............................................................................3 3 項目實現(xiàn)方案..........................................................................................3 3.1項目設(shè)計整體思路..........................................................................3 3.2設(shè)計原理...........................................................................................5 3.2.1 CPU定時器原理.....................................................................5 3.2.2 DSP外設(shè)中斷擴展模塊.........................................................6 3.2.3 發(fā)光二極原理.........................................................................6 3.2.4 TMS320F28x DSP 的I/O.......................................................7 3.2.5 液晶顯示器控制原理.............................................................8 4 程序設(shè)計..................................................................................................8 4.1 程序總體設(shè)計..................................................................................8 4.2 程序編寫(見附頁).....................................................................9 5 心得體會..................................................................................................9 附頁............................................................................................................10

      DSP原理及應(yīng)用

      基于DSP實現(xiàn)道路交通燈控制系統(tǒng)設(shè)計

      摘要:DSP數(shù)字信號處理,是一門涉及多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。隨著計算機和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運而生并得到迅速發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實信號的方法。本次設(shè)計是基于dsp原理設(shè)計交通燈控制系統(tǒng)軟硬件系統(tǒng),利用發(fā)光二極管亮滅模擬交通信號,數(shù)碼管倒計時時間,利用TMS320F2812 DSP片上定時器產(chǎn)生時鐘計數(shù),設(shè)計模擬實際生活中的十字路口交通燈。

      關(guān)鍵字:DSP;TMS320F2812;發(fā)光二極管;交通燈;

      Abstract: DSP digital signal processing, is a multidisciplinary and widely applied in many fields of the emerging discipline.Along with the computer and the rapid development of information technology, digital signal processing technology to emerge as the times require and develop rapidly.Digital signal processing is through the use of a mathematical skills to perform the conversion or extraction of information, to deal with real signal method.The design is based on the principle of DSP design of traffic light control system software and hardware system, using light-emitting diodes to eliminate simulated traffic signal countdown time, digital tube, the use of TMS320F2812 DSP on-chip timer generates a clock counting, designed to simulate the actual life of the crossroads traffic lights.Keyword: DSP;TMS320F2812;light emitting diode;traffic lights;1 引言

      交通是經(jīng)濟、社會發(fā)展的基礎(chǔ)性產(chǎn)業(yè),是社會、經(jīng)濟活動中人流、物流、資金流和信息 流的主要流動方式。現(xiàn)代社會中,如果沒有高效運轉(zhuǎn)的交通運輸體系,就不可能有經(jīng)濟的持續(xù)發(fā)展。然而,隨著社會經(jīng)濟的發(fā)展,機動車輛迅速增加,人們在賺取由機動車輛所帶來的巨額利潤以及充分享受汽車帶來的巨大便利的同時,越來越被交通擁堵、交通事故頻發(fā)、環(huán)境污染加劇和燃油損耗上升等諸多問題所困擾。

      隨著交通的不斷發(fā)展和汽車化進程的加快,交通擁擠加劇,交通事故頻發(fā),交通環(huán)境惡化,已經(jīng)成為引人注目的城市問題之一。交通問題不僅在發(fā)展中國家,就在發(fā)達國家也是一個令人困擾的嚴重問題。眾所周知,緩解交通擁擠的最直接和最有效辦法是提高路網(wǎng)的通信能力。但無論哪個國家的大城市,不可能無限制地修建道路,不論是資金

      DSP原理及應(yīng)用

      因素還是土地因素,都限制了道路的無節(jié)制增長。因此,無限制地修建道路難滿足日益增長的交通需求。與此同時,通過限制車輛增加削減交通需求也受到客觀因素的制約而無法取得滿意的結(jié)果。事實上,由于交通系統(tǒng)是一個相當復(fù)雜的大系統(tǒng),無論單獨從車輛方面考慮還是從道路方面考慮,都很難從根本上解決問題。

      道路交通系統(tǒng)是一個地區(qū)、一個城市的主要組成部份,這個系統(tǒng)的運行狀況如何,直接反映了一個地區(qū)、一個城市的現(xiàn)代化管理水平。在這一系統(tǒng)中,道路不僅僅是易變化的部分,而其它組成部分則存在著較大的可變性和隨機性。只有對這一系統(tǒng)的組成及其運行機理進行科學(xué)客觀的分析研究,對能制定出科學(xué)有效的管理和控制對策,從而保障系統(tǒng)的有效運行。

      2項目設(shè)計實現(xiàn)功能

      2.1交通燈控制要求

      交通燈分紅黃綠三色,東、南、西、北各一組,用燈光信號實現(xiàn)對交通的控制:綠燈信號表示通行,黃燈表示警告,紅燈禁止通行,燈光閃爍表示信號即將改變。計時顯示:液晶屏幕上8×8 點陣顯示0-9 計數(shù)。

      正常交通控制信號順序:正常交通燈信號自動變換: ⑴ 南北方向綠燈,東西紅燈(20 秒)。⑵ 南北方向綠燈閃爍。⑶ 南北方向黃燈。

      ⑷ 南北方向紅燈,東西方向黃燈。⑸ 東西方向綠燈(20 秒)。⑹ 東西方向綠燈閃爍。⑺ 東西方向黃燈。⑻ 返回⑴循環(huán)控制。

      緊急情況處理:模仿緊急情況(重要車隊通過、急救車通過等)發(fā)生時,交通警察手動控制

      ⑴ 當任意方向通行剩余時間多于10 秒,將時間改成10 秒。

      DSP原理及應(yīng)用

      ⑵ 正常變換到四面紅燈(20 秒)。

      ⑶ 直接返回正常信號順序的下一個通行信號(跳過閃爍綠燈、黃燈狀態(tài))。

      2.2 液晶顯示器控制

      本次設(shè)計使用ICETEK-F2812-A板,ICETEK-F2812-A是一塊以TMS320F2812DSP 為核心的DSP 擴展評估板,它通過擴展接口與實驗箱的顯示/控制模塊連接,可以控制其各種外圍設(shè)備。液晶顯示模塊的訪問、控制是由2812DSP對擴展擴展接口的操作完成。

      控制擴展口的尋址:命令控制擴展接口的地址為0x108001,數(shù)據(jù)控制擴展接口的地址為0x108003 和0x108004,輔助控制擴展接口的地址為0x108002。

      可以觀察到液晶顯示從0到9的計數(shù)。靈活使用控制字,可以實現(xiàn)復(fù)雜多變的顯示。當使用點陣圖形顯示時需要在 DSP 內(nèi)存中建立圖形存儲緩沖;適當更新顯示可取得動畫效果。在實際生活中觀察點陣顯示的霓虹燈廣告、交通指示牌、報站牌等領(lǐng)會這種控制的具體應(yīng)用。項目實現(xiàn)方案

      3.1項目設(shè)計整體思路

      根據(jù)DSP的硬件中斷、定時器、I/O訪問原理。用定時器定時。用I/O口控制紅綠黃燈的開關(guān),用硬件中斷模擬緊急情況發(fā)生(如:急救車,消防車)。有緊急情況發(fā)生,兩向全紅,以便讓緊急車通過。緊急車通過后,交通的恢復(fù)中斷前的狀態(tài)。

      DSP原理及應(yīng)用

      設(shè)計總流程圖 中斷服務(wù)流程

      DSP原理及應(yīng)用

      3.2設(shè)計原理 3.2.1 CPU定時器原理

      F2810/F2812芯片內(nèi)部有3個32位CPU定時器(TIMER0/1/2),其中定時器1和定時器2預(yù)留給實時操作系統(tǒng)使用(如 DSPBIOS),只有CPU定時器0用戶可以在應(yīng)用程序中使用。定時器功能框圖如下:

      在F281x芯片中,向CPU申請中斷的定時器中斷信號(TINT0、TINT1及TINT2)連接方式如下圖:

      為保證定時器正常,需要進行一下操作:首先將計數(shù)值寫入32位計數(shù)寄存器(TIMH:TIM)內(nèi),該計數(shù)值放在周期寄存器(PRDH:PRD)中;然后按SYSCLOCKOUT的頻率對計數(shù)值進行減計數(shù)。當計數(shù)器的值計到0時,定時器會產(chǎn)生一個中斷脈沖輸出。

      DSP原理及應(yīng)用

      3.2.2 DSP外設(shè)中斷擴展模塊

      2812的CPU為了能夠及時有效的處理好各個外設(shè)的中斷請求,設(shè)計了一個專門處理外設(shè)中斷的擴展模塊(the Peripheral Interrupt Expansion block),叫做外設(shè)中斷控制器PIE,它能夠?qū)Ω鞣N中斷請求源(例如來自于外設(shè)或者其他外部引腳的請求)做出判斷以及相應(yīng)的決策。PIE 可以支持96個不同的中斷,這些中斷分成了12個組,每個組有8個中斷,而且每個組都被反饋到CPU內(nèi)核的12 條中斷線中的某一條上(INT1-INT12)。PIE 目前只使用了96 個終端中的45 個,其他的等待將來的功能擴展。

      2812的中斷是3級中斷機制,分別是外設(shè)級,PIE級以及CPU級,對于某一個具體的外設(shè)中斷請求,任意一級的不許可,CPU最終都不會執(zhí)行該外設(shè)中斷。

      3.2.3 發(fā)光二極原理

      顯示/控制模塊上的發(fā)光二極管是由連接在F2812DSP 擴展擴展接口上的寄存器EWR和SNR控制的。這兩個寄存器均為6 位寄存器,其位定義見下表:

      DSP原理及應(yīng)用

      兩個寄存器的地址均映射到 F2812DSP 的擴展空間,地址為108007H,DSP 通過對擴展區(qū)域該地址的寫操作來修改兩個寄存器上各位的狀態(tài),當寄存器某位取‘1’值時,相應(yīng)指示燈被點亮,取‘0’值則熄滅。當寫入108007H 的數(shù)據(jù)(8 位有效值)的高兩位為‘00’時,數(shù)據(jù)的低6 位將寫入EWR 寄存器;當高兩位的值為‘01’時,寫入SNR 寄存器。

      3.2.4 TMS320F28x DSP 的I/O TMS320F28x DSP 的I/O 空間大部分被保留用于外部擴展。在擴展時一般將帶有控制能的寄存器或分離地址訪問的存儲單元的地址映射到I/O 空間,訪問這部分的單元又稱I/O 端口訪問。例如:可將控制指示燈組的寄存器或鎖存器映射到一個I/O 端口地址上;A/D、D/A 等專用芯片控制端和狀態(tài)寄存器也常映射到I/O 端口上??傊?,在I/O 空間中擴展的設(shè)備一般重點用于控制,而使用大片連續(xù)存儲空間的存儲器單元一般映射到數(shù)據(jù)空間。ICETEK-F2812-A 板將指示燈、DIP 開關(guān)、A/D 和D/A 的控制端等映射在I/O 空間。在程序中,訪問I/O 端口的語句較為簡單。

      DSP原理及應(yīng)用

      3.2.5 液晶顯示器控制原理

      顯示開關(guān):0x3f 打開顯示;0x3e 關(guān)閉顯示;

      設(shè)置顯示起始行:0x0c0+起始行取值,其中起始行取值為0 至63; 設(shè)置操作頁:0x0b8+頁號,其中頁號取值為0-7; 設(shè)置操作列:0x40+列號,其中列號為取值為0-63;

      寫顯示數(shù)據(jù):在使用命令控制字選擇操作位置(頁數(shù)、列數(shù))之后,可以將待顯示的數(shù)據(jù)寫入液晶顯示模塊的緩存。將數(shù)據(jù)發(fā)送到相應(yīng)數(shù)據(jù)控制擴展接口即可。液晶顯示器與DSP 的連接:

      數(shù)據(jù)信號的傳送:由于液晶顯示模塊相對運行在8MHz 主頻下的DSP 屬于較為慢速設(shè)備,連接時需要考慮數(shù)據(jù)線上信號的等待問題;

      電平轉(zhuǎn)換:由于DSP 為3.3V 設(shè)備,而液晶顯示模塊屬于5V 設(shè)備,所以在連接控制線、數(shù)據(jù)線時需要加電平隔離和轉(zhuǎn)換設(shè)備。程序設(shè)計

      4.1 程序總體設(shè)計① 根據(jù)設(shè)計要求,由于控制是由不同的各種狀態(tài)按順序發(fā)生的, 我們可以采用狀態(tài)機制控制方法來解決此問題。這種方法是: 首先列舉所有可能發(fā)生的狀態(tài);然后將這些狀態(tài)編號, 按順序產(chǎn)生這些狀態(tài);狀態(tài)延續(xù)的時間用程序控制,對于突發(fā)情況, 可采用在正常順序的控制中插入特殊控制序列的方式完成。

      ② 定時器的設(shè)定, VC5509A 定時器是由一個4 位的預(yù)定標值PSC 和一個16 位的減法計數(shù)的計數(shù)器TIM 組成。在實際工作中首先是每經(jīng)過一個周期PSC 值減1, 一直減到0

      DSP原理及應(yīng)用

      后TIM 開始減1, 直到減到0 后的第一個周期, 計數(shù)器會向CPU 發(fā)出中斷請求。③ 突發(fā)事件設(shè)置, 在實際交通過程中會出現(xiàn)突發(fā)狀況, 比如說有救護車或者110 緊急車要通過, 此時就可以通過小鍵盤進行突發(fā)狀況模擬。通過按鍵進入到中斷服務(wù)子程序, 相當于原來先要通過的車輛在突發(fā)狀況來了以后就要先讓緊急車輛通過。

      4.2 程序編寫(見附頁)心得體會

      隨著信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)已逐漸發(fā)展成為一門主流技術(shù),它在電子信息,通信,軟件無線電,制動控制,儀表儀器,信息家電等高科技領(lǐng)域得到了越來越廣泛的應(yīng)用。數(shù)字信號處理器由于運算速度快,具有可編程特性和接口靈活的特點,使的它在許多電子產(chǎn)品的研制,開發(fā)與應(yīng)用中,發(fā)揮著越來越重要的作用。采用DSP 芯片來實現(xiàn)數(shù)字信號處理系統(tǒng)更是當前的發(fā)展趨勢。

      通過做基于DSP 的交通燈的設(shè)計,進一步熟悉DSP 芯片及其開發(fā)環(huán)境CCS的功能。同時對當前交通控制的現(xiàn)狀有了進一部的了解。為以后的學(xué)習打下了堅實的基礎(chǔ)。隨著科學(xué)技術(shù)的發(fā)展及各門學(xué)科的相互融合,DSP 將有更為廣闊的應(yīng)用前景。交通控制也會更智能,為人們的出行提供更多的便利。

      DSP原理及應(yīng)用

      附頁#include “scancode.h” #define SPSA0 *(unsigned int *)0x38 #define SPSD0 *(unsigned int *)0x39 #define REGISTERCLKMD(*(unsigned int *)0x58)#define TIM *(int *)0x24 #define PRD *(int *)0x25 #define TCR *(int *)0x26 #define IMR *(int *)0x0 #define IFR *(int *)0x

      1#define PMST *(int *)0x1d

      #define nStatusNSGreenEWRed 160 #define nStatusNSFlashEWRed 184 #define nStatusNSYellowEWRed 200 #define nStatusNSRedEWYellow 216 #define nStatusNSRedEWGreen 376 #define nStatusNSRedEWFlash 400 #define nStatusNSRedEWYellow1 416 #define nStatusNSYellowEWRed1 432 #define nTotalTime 448 #define nStatusHold 160

      #define statusNSGreenEWRed 0 #define statusNSFlashEWRed 1 #define statusNSYellowEWRed 2 #define statusNSRedEWYellow 3 #define statusNSRedEWGreen 4 #define statusNSRedEWFlash 5 #define statusHold 6

      #define LCDDELAY 1 #define LCDCMDTURNON 0x3f #define LCDCMDTURNOFF 0x3e #define LCDCMDSTARTLINE 0xc0 #define LCDCMDPAGE 0xb8 #define LCDCMDVERADDRESS 0x40

      ioport unsigned int port3004;// CTR擴展寄存器定義

      ioport unsigned int port8000;ioport unsigned int port8001;ioport unsigned int port8002;ioport unsigned int port8003;ioport unsigned int port8004;ioport unsigned int port8005;ioport unsigned int port8007;

      #define CTRGR port8000 #define CTRLCDCMDR port8001 #define CTRKEY port8001 #define CTRCLKEY port8002 #define CTRLCDCR port8002 #define CTRLCDLCR port8003 #define CTRLCDRCR port8004 #define CTRLA port8005 #define CTRLR port8007

      void InitDSP();void InitTimer();void InitICETEKCTR();

      void interrupt time(void);

      void interrupt xint2(void);// XINT2中斷服務(wù)程序

      void SetLEDArray(int nNumber);

      // 修改顯示內(nèi)容 void RefreshLEDArray();

      // 刷新顯示

      void EndICETEKCTR();void TurnOnLCD();void LCDCLS();

      void Delay(unsigned int nDelay);

      unsigned int uWork,nTimeCount;unsigned int

      uLightStatusEW,uLightStatusSN;unsigned int bHold;unsigned char

      ledbuf[8],ledx[8];unsigned char led[40]= { 0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00, 0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76, 0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71, 0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07, 0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E };

      unsigned char ledkey[10][8]= { {0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00}, //0 {0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00}, //1 {0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00}, //2 {0x00,0x00,0x44,0x92,0x9

      2,0x92,0x6C,0x00},{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00}, {0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00}, {0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00}, {0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00}, {0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00}, {0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00} };main(){ int

      nWork1,nWork2,nWork3,nWork4,tKey;int

      nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;unsigned int nScanCode;

      nTimeCount=0;bHold=0;uLightStatusEW=uLightStatusSN=0;

      nNowStatus=0;nOldStatus=1;nOldTimeCount=0;InitDSP();

      // 初始化DSP,設(shè)置運行速度

      InitICETEKCTR();// 初始化顯示/控制模塊

      InitTimer();// 設(shè)置定時器中斷

      // 根據(jù)計時器計數(shù)切換狀態(tài)

      // 根據(jù)狀態(tài)設(shè)置計數(shù)和交通燈狀態(tài)

      while(1)

      {

      if(bHold && nNowStatus==statusHold)

      {

      if

      (nTimeCount>=nStatusHold)

      {

      nNowStatus=nSaveStatus;nTimeCount=nSaveTimeCount;bHold=0;

      }

      }

      else if

      DSP原理及應(yīng)用

      (nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      else if(nTimeCount

      if(nNowStatus==nOldStatus)

      {

      switch(nNowStatus)

      {

      case statusNSFlashEWRed:

      nWork1=nTimeCount-nStatusNSGreenEWRed;

      nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed;

      nWork3=nWork2/3;

      nWork4=nWork3/2;

      if(nWork1>=0 && nWork2>0 &&

      nWork3>0 && nWork4>0)

      uLightStatusSN=((nWork1%nWork3)<=nWork4)?(0x49):(0x40);

      break;

      case statusNSRedEWFlash:

      nWork1=nTimeCount-nStatusNSRedEWGreen;

      nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;

      nWork3=nWork2/3;

      nWork4=nWork3/2;

      if(nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0)

      uLightStatusEW=((nWork1%nWork3)<=nWork4)?(0x09):(0x00);

      break;

      case statusNSGreenEWRed:

      nWork1=nStatusNSGreenEWRed/20;

      if(nWork1>0)

      {

      nWork2=20-nTimeCount/nWork1;

      if(bHold)

      {

      if(nWork2>10)

      {

      nTimeCount=nWork1*10;

      nWork2=10;

      }

      }

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray(nWork2);

      }

      }

      break;

      case statusNSRedEWGreen:

      nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;

      if(nWork1>0)

      {

      nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;

      if(bHold){

      if(nWork2>10)

      {

      nTimeCount=nStatusNSRedEWYellow+nWork1*10;

      nWork2=10;

      }

      }

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray(nWork2);

      }

      }

      break;

      case statusHold:

      nWork1=nStatusHold/20;

      if(nWork1>0)

      {

      nWork2=20-nTimeCount/nWork1;

      if(nOldTimeCount!=nWork2)

      {

      nOldTimeCount=nWork2;

      SetLEDArray(nWork2);

      }

      }

      DSP原理及應(yīng)用

      break;

      }

      }

      else

      {

      if(bHold)

      {

      nSaveStatus=nNowStatus;

      nSaveTimeCount=nTimeCount;

      nNowStatus=statusHold;

      nTimeCount=0;

      if(nSaveStatus==statusNSFlashEWRed || nSaveStatus==statusNSYellowEWRed)

      {

      nSaveStatus=statusNSRedEWGreen;

      nSaveTimeCount=nStatusNSRedEWYellow;

      }

      else if(nSaveStatus==statusNSRedEWFlash || nSaveStatus==statusNSRedEWYellow)

      {

      nSaveStatus=statusNSGreenEWRed;

      nSaveTimeCount=0;

      }

      }

      nOldStatus=nNowStatus;

      switch(nNowStatus)

      {

      case statusNSGreenEWRed:

      uLightStatusEW=0x24;uLightStatusSN=0x49;

      SetLEDArray(20);

      break;

      case statusNSFlashEWRed:

      uLightStatusEW=0x24;

      uLightStatusSN=0x49;

      SetLEDArray(0);break;

      case statusNSYellowEWRed:

      uLightStatusEW=0x24;uLightStatusSN=0x52;

      SetLEDArray(20);

      break;

      case statusNSRedEWYellow:

      uLightStatusEW=0x12;uLightStatusSN=0x64;

      SetLEDArray(20);

      break;

      case statusNSRedEWGreen:

      uLightStatusEW=0x09;uLightStatusSN=0x64;

      SetLEDArray(20);

      break;

      case statusNSRedEWFlash:

      uLightStatusEW=0x09;uLightStatusSN=0x64;

      SetLEDArray(0);

      break;

      case statusHold:

      uLightStatusEW=0x24;uLightStatusSN=0x64;

      SetLEDArray(20);

      break;

      }

      }

      CTRLR=uLightStatusEW;CTRLR=uLightStatusSN;// 設(shè)置交通燈狀態(tài)

      RefreshLEDArray();// 刷新發(fā)光二極管顯示

      nScanCode=port8001;// 讀鍵盤掃描碼

      nScanCode&=0x0ff;

      tKey=CTRCLKEY;

      if

      (nScanCode==SCANCODE_9)

      break;} EndICETEKCTR();exit(0);}

      // 定時器中斷服務(wù)程序,進行時鐘計數(shù)

      void interrupt time(void){ nTimeCount++;nTimeCount%=nTotalTime;}

      // 設(shè)置發(fā)光二極管顯示內(nèi)容 void SetLEDArray(int nNumber){

      int i,ShowNumber;

      ShowNumber=nNumber/2;if(ShowNumber>9)ShowNumber=0;CTRLCDCMDR=LCDCMDPAGE;// 設(shè)置操作頁=0 Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;// 起始列=0 Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for(i=0;i<8;i++){

      CTRLCDLCR=ledkey[ShowNumber][i];

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);} }

      // 將緩存中點陣送發(fā)光二極管顯示

      void RefreshLEDArray(){ int i;for(i=0;i<8;i++){

      CTRGR=ledx[i];

      CTRLA=ledbuf[i];} }

      // 初始化DSP,設(shè)置運行速度=8MHz void InitDSP(){ REGISTERCLKMD=0;// 復(fù)位PLL REGISTERCLKMD=0x1007;//

      DSP原理及應(yīng)用

      速度設(shè)置=16MHz }

      // 設(shè)置定時器參數(shù)、允許中斷 void InitTimer(){ unsigned int k;

      asm(“ ssbx INTM”);// 關(guān)中斷,進行關(guān)鍵設(shè)置時不許打擾

      // 設(shè)置通用定時器

      k=PMST;

      // 設(shè)置PMST寄存器

      PMST =k&0xff;// 中斷向量表起始地址=80H IMR = 0x0c;// 使能TINT TCR = 0x41f;// 預(yù)分頻系數(shù)為16 TIM = 0;// 時鐘計數(shù)器清0 PRD = 0x0f423;// 周期寄存器為0ffH TCR = 0x42f;// 復(fù)位、啟動

      IFR = 0x0c;// 清中斷標志位

      port3004=0;

      // 使能XINT2 asm(“ rsbx INTM”);// 開中斷 }

      // 初始化ICETEK-CTR板上設(shè)備 void InitICETEKCTR(){ int k;

      CTRGR=0;// 初始化ICETEK-CTR CTRGR=0x80;CTRGR=0;CTRLR=0;// 關(guān)閉東西方向的交通燈

      CTRLR=0x40;// 關(guān)閉南北方向的交通燈

      CTRLR=0x0c1;// 開啟發(fā)光二極管顯示陣列

      CTRLR=0xc8;//使能外部中斷 for(k=0;k<8;k++){

      ledbuf[k]=0x0ff;// 顯示為空白

      ledx[k]=(k<<4);// 生成顯示列控制字

      } k=CTRCLKEY;// 清除鍵盤

      緩沖區(qū)

      TurnOnLCD();

      // 打開顯示

      LCDCLS();

      // 清除顯示內(nèi)存

      CTRLCDCMDR=LCDCMDSTARTLINE;// 設(shè)置顯示起始行

      CTRLCDCR=0;}

      void interrupt xint2(void)// XINT2中斷服務(wù)程序 { bHold=1;}

      void EndICETEKCTR(){ int k;CTRLR=0;// 關(guān)閉東西方向的交通燈

      CTRLR=0x40;// 關(guān)閉南北方向的交通燈

      CTRLR=0x0c0;// 關(guān)閉發(fā)光二極管顯示陣列

      k=CTRCLKEY;// 清除鍵盤緩沖區(qū) }

      void TurnOnLCD(){ CTRLCDCMDR=LCDCMDTURNON;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDSTARTLINE;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}

      void LCDCLS(){ int i,j;CTRLCDCMDR=LCDCMDSTARTLINE;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for(i=0;i<8;i++){

      CTRLCDCMDR=LCDCMDPAGE+i;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      CTRLCDCMDR=LCDCMDVERADDRE

      SS;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      for(j=0;j<64;j++)

      { CTRLCDLCR=0;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      }

      CTRLCDCMDR=LCDCMDPAGE+i;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      CTRLCDCMDR=LCDCMDVERADDRESS;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      for(j=0;j<64;j++)

      {

      CTRLCDRCR=0;

      Delay(LCDDELAY);

      CTRLCDCR=0;

      Delay(LCDDELAY);

      } } }

      void Delay(unsigned int nDelay){ int ii,jj,kk=0;for(ii=0;ii

      for

      (jj=0;jj<1024;jj++)

      {

      kk++;

      } } }

      第四篇:微機原理課程設(shè)計-8255控制交通燈

      微機原理課程設(shè)計:8255模擬交通燈

      1、目的:學(xué)習8255使用方法,學(xué)習模擬交通燈控制的方法,學(xué)習雙色燈的使用。

      2、要求:控制4個雙色LED燈(可發(fā)紅,綠,黃光),模擬十字路口交通燈管理。

      3、電路及連線

      PC0-PC3連DG1-DG4,PC4-PC7連DR1-DR4。8255片選CS8255連138譯碼處210H。

      4、說明(1)因為本實驗是模擬交通燈控制實驗,所以要先了解實際交通燈的變化規(guī)律。假設(shè)一個十字路口為東西南北走向。初始狀態(tài)0為東西紅燈,南北紅燈。然后轉(zhuǎn)狀態(tài)1南北綠燈通車,東西紅燈。過一段時間轉(zhuǎn)狀態(tài)2,南北綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,東西仍然紅燈。再轉(zhuǎn)狀態(tài)3,東西綠燈通車,南北紅燈。過一段時間轉(zhuǎn)狀態(tài)4,東西綠燈閃幾次轉(zhuǎn)亮黃燈,延時幾秒,南北仍然紅燈。最后循環(huán)至狀態(tài)1。

      (2)雙色LED是由一個紅色LED管芯和一個綠色LED管芯封裝在一起,公用負端。當紅色正端加高電平,綠色正端加低電平時,紅燈亮;紅色正端加低電平,綠色正端加高電平時,綠燈亮;兩端都加高電平時,黃燈亮。(3)74LS240為8輸入輸出的反向驅(qū)動器。

      5、完成的任務(wù)

      (1)利用計算機和微機原理試驗箱,將實驗6的程序Tlamp_88.asm在試驗箱運行和調(diào)試。全速運行,觀察整體效果。單步運行,觀察程序每條語句額執(zhí)行效果,理解語句含義。(2)修改實驗連線為,PC7-PC4連DG1-DG4,PC3-PC0連DR1-DR4。8255片選CS8255連138譯碼處210H孔。將Tlamp_88.asm另存為jiaotong.asm。修改jiaotong.asm,實現(xiàn)交通燈原有功能。

      (3)修改實驗連線為,PB7-PB4連DG1-DG4,PB3-PB0連DR1-DR4。8255片選CS8255連138譯碼處210H孔。將jiaotong.asm另存為jiaotong2.asm。修改jiaotong2.asm,實現(xiàn)交通燈原有功能。

      (4)將jiaotong2.asm另存為jiaotong3.asm。修改jiaotong3.asm,實現(xiàn)交通燈各個燈亮和滅的時間是原有時間的3倍。

      6、實驗程序框圖

      7、源程序: Tlamp_88.asm

      ;FOR

      EAT 598 PC55

      EQU 212H

      211 P55CTL EQU 213H D1

      EQU 10H

      D2

      EQU 50H

      DATA

      SEGMENT PB

      DB ? DATA

      ENDS STACK

      SEGMENT STACK STA

      DW 50 DUP(?)TOP

      EQU LENGTH STA STACK

      ENDS CODE

      SEGMENT ASSUME CS:CODE,DS:DATA START:

      PUSH

      CS

      POP

      DS

      MOV

      DX,P55CTL

      ;設(shè)置為全輸出

      MOV

      AL,80H

      OUT

      DX,AL

      MOV

      DX,204H

      MOV

      AL,00H

      OUT

      DX,AL

      ;清LED

      MOV

      DX,PC55

      ;全紅

      MOV

      AL,0FH

      OUT

      DX,AL

      MOV

      BX,7fH

      CALL

      DLY BG:

      MOV

      AL,96H

      ;南北綠,東西紅

      OUT

      DX,AL

      MOV

      BX,D2

      CALL

      DLY

      MOV

      CX,03H XH1:

      MOV

      AL,9FH

      ;南北綠滅

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      MOV

      AL,96H

      ;南北綠亮

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      LOOP

      XH1

      MOV

      AL,06H

      ;南北黃

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      MOV

      BX,D1

      CALL

      DLY

      MOV

      AL,69H;南北紅,東西綠

      OUT

      DX,AL

      MOV

      BX,D2

      CALL

      DLY

      MOV

      CX,03

      XH2:

      MOV

      AL,6FH;東西綠滅

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      MOV

      AL,69H

      ;東西綠亮

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      LOOP

      XH2

      MOV

      AL,09H

      ;東西黃

      OUT

      DX,AL

      MOV

      BX,D1

      CALL

      DLY

      MOV

      BX,D1

      CALL

      DLY

      JMP

      BG

      DLY

      PROC

      NEAR

      PUSH

      CX

      DDD:

      MOV

      CX,0FFFH CCC:

      LOOP

      CCC

      DEC

      BX

      CMP

      BX,0

      JNE

      DDD

      POP

      CX

      RET

      DLY

      ENDP

      CODE

      ENDS END

      START

      第五篇:課程設(shè)計任務(wù)書-24交通燈控制電路設(shè)計

      課程設(shè)計任務(wù)書

      題目:交通燈控制電路設(shè)計

      時間: 年 月 日—— 年 月 日

      設(shè)計的說明:

      本設(shè)計需要用到實驗箱上交通燈模塊中的發(fā)光二極管,即紅、黃、綠各三個。依人們的交通常規(guī),“紅燈停,綠燈行,黃燈提醒”。交通燈顯示用實驗箱的交通燈模塊和七段碼管中的任意兩個來顯示。系統(tǒng)時鐘選擇時鐘模塊的1KHz時鐘,黃燈閃爍時鐘要求為2Hz,七段碼管的時間顯示為1Hz 脈沖,即每1s 中遞減一次,在顯示時間小于3 秒的時候,通車方向的黃燈以2Hz 的頻率閃爍。系統(tǒng)中用S1 按鍵進行復(fù)位。

      設(shè)計的任務(wù)和要求:

      1、在十字路口的兩個方向上各設(shè)一組紅、綠、黃燈;初始狀態(tài)是兩個路口的紅燈全亮之后,東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,延時一段時間后,東西路口綠燈滅,黃燈開始閃爍。閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方向開始通車,延時一段時間后,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,重復(fù)上述過程。

      2、設(shè)置數(shù)碼管顯示允許通行或者禁止通行的時間,東西路和南北路的通車時間均設(shè)定為20s。數(shù)碼管的時間總是顯示為19、18、17……2、1、0、19、18……。在顯示時間小于3 秒的時候,通車方向的黃燈閃爍。

      3、當各條路中任意一條上出現(xiàn)特殊情況,如消防車、救護車或其他需要優(yōu)先放行的車輛時,各方向上均是紅燈亮。倒計時停止,且顯示數(shù)字在閃爍。當特殊運行狀態(tài)結(jié)束后,控制器恢復(fù)原來狀態(tài),繼續(xù)正常運行。

      4、要求對整體電路進行仿真,提供仿真波形圖,并分析結(jié)果

      5、硬件測試結(jié)果用照片的形式記錄下來。

      提高部分:編寫能手動控制交通燈通行時間的交通燈控制器。

      指導(dǎo)教師:

      學(xué)生:

      日期:

      下載DSP 課程設(shè)計  交通燈的控制與實現(xiàn)word格式文檔
      下載DSP 課程設(shè)計 交通燈的控制與實現(xiàn).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        PLC交通燈課程設(shè)計

        PLC的定義及工作原理 ⒈定義:可編程控制器,簡稱PLC(Programmable logic Controller),是指以計算機技術(shù)為基礎(chǔ)的新型工業(yè)控制裝置?!癙LC是一種專門為在工業(yè)環(huán)境下應(yīng)用而設(shè)計的數(shù)......

        交通燈單片機課程設(shè)計

        《單片機原理與接口技術(shù)課程設(shè)計報告》 課題:以交通燈為主的多功能任務(wù)設(shè)計 班級 學(xué)號 學(xué)生姓名指導(dǎo)教師 淮陰工學(xué)院 電子與電氣工程學(xué)院 2015-6 1 目錄 一、 課程設(shè)計目......

        交通燈控制電路設(shè)計自動化 數(shù)字電子技術(shù)課程設(shè)計

        綜 述 本次設(shè)計主要分為四個部分,第一部分:信號產(chǎn)生電路;第二部分:電子示電路;第三部分:倒計時設(shè)計,第四部分:交通燈及交通燈控制電路 在本次設(shè)計中采用555定時器產(chǎn)生CP=1Hz的脈沖信......

        DSP課程設(shè)計教學(xué)大綱

        DSP課程設(shè)計教學(xué)大綱 課程名稱:DSP課程設(shè)計 英文名稱:Design of DSP course 學(xué) 時:2周 學(xué) 分:2 適用專業(yè):電子信息工程、通信工程專業(yè)本科生 課程類別:必修 課程性質(zhì):集中實踐環(huán)......

        數(shù)電課程設(shè)計——交通燈(范文模版)

        課 程 設(shè) 計 課程名稱 數(shù)字電子技術(shù)基礎(chǔ) 題目名稱 交通燈控制電路學(xué)生學(xué)院 專業(yè)班級 學(xué)號學(xué)生姓名 鄧嘉琦 指導(dǎo)教師2014 年5 月 25 日 一、設(shè)計題目: 交通燈控制電路 二、實......

        數(shù)字電路課程設(shè)計報告—交通燈

        數(shù)字電路課程設(shè)計 --交通燈控制器的設(shè)計 院系:姓名: 指導(dǎo)教師: 完成日期:2011年6月7日 數(shù)字電路課程設(shè)計 --交通燈控制器的設(shè)計 一、課程設(shè)計目的 1.熟悉集成電路的引腳安排......

        交通燈控制邏輯電路設(shè)計與總結(jié)報告

        交通燈控制邏輯電路設(shè)計與總結(jié)報告 一、設(shè)計任務(wù) 用CPLD設(shè)計路口交通燈控制器 二、設(shè)計要求 1、滿足一下時序要求:南北方向紅燈亮,東西方向綠燈亮;南北方向綠燈亮,東西方向紅燈......

        DSP數(shù)字圖像取反課程設(shè)計大全

        西南石油大學(xué) 2012級專業(yè)綜合實踐” 報 告 報告題目 :DSP數(shù)字圖像取反課程設(shè)計 學(xué) 院 :電氣信息學(xué)院 作 者 :曾翔 聯(lián)系方式 :*** 輔導(dǎo)老師 :曹玉英 完成日期 : 2016年 01......