DSP 课程设计 交通灯的控制与实现

时间:2019-05-12 01:04:15下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《DSP 课程设计 交通灯的控制与实现》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《DSP 课程设计 交通灯的控制与实现》。

第一篇:DSP 课程设计 交通灯的控制与实现

DSP课程设计报告--DSP交通灯的控制与实现

院:物

院 课

程 :DSP 技术及应用

级 :321100 姓

名 :

号 : *** 指导教师 :

1.课程设计目的 2.课程设计正文

2.1 课程设计要求 2.2F2812原理图

2.3F2812系统环境结构实图 2.4设计原理 2.5设计结果 2.6心得体会

3.参考文献

4.此次课程设计的程序

1.课程设计目的

这学期我们学习了《DSP》这一门课程,为了实现理论结合实践,锻炼我们的动手能力,我们针对这门课程进行的课程设计。通过这次的课程设计,更加深入的学习这门课程,掌握这门技术,加深对DSP控制器的原理的理解和掌握。利用DSP开发环境CCS C2000对源程序文件进行编译、链接、装载调试,以完成基本的DSP项目文件设计。

2.课程设计正文 2.1 课程设计要求

⑴ 设计一个十字路口交通灯(带一个倒计时数码管),每个方向有三色(红、黄、绿)。

⑵ 实现交通灯双向车道红绿灯切换功能、交通灯全亮功能、数码管全亮功能。⑶ 保证每次切换倒计时20秒,在此时熄灭绿灯。

2.2 F2812原理图

2.3 F2812系统调试环境结构实物

图2.3 F2812系统调试环境实物结构

2.4设计原理

1.交通灯控制要求

利用 ICETEK-EDU 实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制的程序。

要求如下:

-交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号

表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。

-计时显示:8×8 点阵显示两位计数,为倒计时,每秒改变计数显示。

-正常交通控制信号顺序:正常交通灯信号自动变换

(1)南北方向绿灯,东西红灯(20 秒)。

(2)南北方向绿灯闪烁。

(3)南北方向黄灯。

(4)南北方向红灯,东西方向黄灯。

(5)东西方向绿灯(20 秒)。

(6)东西方向绿灯闪烁。

(7)东西方向黄灯。

(8)返回(1)循环控制。

-紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制

(1)当任意方向通行剩余时间多于 10 秒,将时间改成 10 秒。

(2)正常变换到四面红灯(20 秒)。

(3)直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。2.交通灯模拟

利用 ICETEK-CTR 上的一组发光二极管(共 12 只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟。3.计时显示

利用 ICETEK-CTR 上的发光二极管显示阵列模拟显示。4.计时

使用 TMS320F2812DSP 片上定时器,定时产生时钟计数,再利用此计数对应具体时间。5.紧急情况

利用 ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,模拟突发情况。6.程序设计

根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题。这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。

2.5.设计结果

程序可以完成交通灯功能,顺序循环工作。在中断信号到来后,进入特殊过程:当前计时如果大于 10 改成 10,否则不变,等待状态切换;切换后进入四面禁行状态,计数 20 秒后返回断点后的通行(有两方向是绿灯)状态。设计结果部分截图

2.6心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习。在此次的课程设计中,主要资料的查阅和对电路图的总体设计,对电路的设计包括绘制电路原理图。由于平时在对本课程的学习中,没有注重系统的设计,故在设计电路原理图的过程中也遇到了各种各样的问题。但是,这些问题在跟同组的同学讨论和向老师请教后也得到了解决。由此可以得出,我对本门课程的掌握还是很不好,动手的能力还是很欠缺的。在今后的学习过程中不仅要注意对理念知识的掌握,而且还要培养自己的对手操作能力。最后在老师的辛勤的指导下,终于迎刃而解,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

3.参考文献

[1] 苏涛,蔺丽华,卢光跃.DSP实用技术.西安电子科技大学出版社.2002 [2] 赵红怡编.DSP技术与运用实例.2006.4.此次课程设计的程序

#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);// 修改显示内容 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;//关中断

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

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

IFR = 0x0000;

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

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

PieVectTable.TINT0 = &cpu_timer0_isr;//指定中断服务子程序

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;// 关闭东西方向的交通灯

CTRLR=0x40;// 关闭南北方向的交通灯

CTRLR=0x0c1;// 开启发光二极管显示阵列

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

ledbuf[k]=0x0ff;// 显示为空白

ledx[k]=(k<<4);// 生成显示列控制字 } k=CTRLCDCR;// 清除键盘缓冲区

StartCpuTimer0();//启动定时器0

// 根据计时器计数切换状态

// 根据状态设置计数和交通灯状态 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;// 设置交通灯状态

RefreshLEDArray1();// 刷新发光二极管显示

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++;

} } } // 设置发光二极管显示内容 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;} // 关闭东西方向的交通灯 // 关闭南北方向的交通灯 // 关闭发光二极管显示阵列// 清除键盘缓冲区

第二篇:DSP课程设计

TMS320C54x与PC通信系统的设计(单号)

一、设计目的

本次课程设计的目的是为了进一步提高学生的自我开发能力,培养学生的查阅资料,独立分析问题、解决问题以及实际动手的能力。也是对理论学习的一个应用和补充的过程。

二、设计的内容及要求

1、设计内容

主机接口HPI是一种高速、异步并行接口。TMS320C54x通过HPI接口与PC并行口的通信。

2、设计要求

(1)DSP最小硬件系统的设计

(2)TMS320C54x与PC并行口硬件电路设计(3)软件设计

三、总体设计方案

四、硬件系统设计

五、软件系统设计

六、心得体会

七、参考文献

附录1 软件系统设计程序 附录2 硬件系统原理图

(注:按以上七个部分编写论文,内容自己扩充)在PDF文档中P158-177中有相关资料可查阅

本系统设计是要实现

TMS320C54x与TLC320AD50的通信系统的设计(双号)

一、设计目的

本次课程设计的目的是为了进一步提高学生的自我开发能力,培养学生的查阅资料,独立分析问题、解决问题以及实际动手的能力。也是对理论学习的一个应用和补充的过程。

二、设计的内容及要求

1、设计内容

模/数接口设计是DSP系统设计中一个重要的组成部分。本系统设计是要实现对模拟信号的采集,并将其转换为数字信号通过TMS320C54x的串行通信接口将数据存储、处理及输出等功能。

2、设计要求

(1)DSP最小硬件系统的设计

(2)TMS320C54x与TLC320AD50串行口硬件电路设计(3)软件设计

三、总体设计方案

四、硬件系统设计

五、软件系统设计

六、心得体会

七、参考文献

附录1 软件系统设计程序 附录2 硬件系统原理图

(注:按以上七个部分编写论文,内容自己扩充)

第三篇:基于DSP实现道路交通灯控制系统设计

引言..........................................................................................................1 2项目设计实现功能...................................................................................2 2.1交通灯控制要求...............................................................................2 2.2 液晶显示器控制..............................................................................3 3 项目实现方案..........................................................................................3 3.1项目设计整体思路..........................................................................3 3.2设计原理...........................................................................................5 3.2.1 CPU定时器原理.....................................................................5 3.2.2 DSP外设中断扩展模块.........................................................6 3.2.3 发光二极原理.........................................................................6 3.2.4 TMS320F28x DSP 的I/O.......................................................7 3.2.5 液晶显示器控制原理.............................................................8 4 程序设计..................................................................................................8 4.1 程序总体设计..................................................................................8 4.2 程序编写(见附页).....................................................................9 5 心得体会..................................................................................................9 附页............................................................................................................10

DSP原理及应用

基于DSP实现道路交通灯控制系统设计

摘要:DSP数字信号处理,是一门涉及多学科而又广泛应用于许多领域的新兴学科。随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法。本次设计是基于dsp原理设计交通灯控制系统软硬件系统,利用发光二极管亮灭模拟交通信号,数码管倒计时时间,利用TMS320F2812 DSP片上定时器产生时钟计数,设计模拟实际生活中的十字路口交通灯。

关键字:DSP;TMS320F2812;发光二极管;交通灯;

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 引言

交通是经济、社会发展的基础性产业,是社会、经济活动中人流、物流、资金流和信息 流的主要流动方式。现代社会中,如果没有高效运转的交通运输体系,就不可能有经济的持续发展。然而,随着社会经济的发展,机动车辆迅速增加,人们在赚取由机动车辆所带来的巨额利润以及充分享受汽车带来的巨大便利的同时,越来越被交通拥堵、交通事故频发、环境污染加剧和燃油损耗上升等诸多问题所困扰。

随着交通的不断发展和汽车化进程的加快,交通拥挤加剧,交通事故频发,交通环境恶化,已经成为引人注目的城市问题之一。交通问题不仅在发展中国家,就在发达国家也是一个令人困扰的严重问题。众所周知,缓解交通拥挤的最直接和最有效办法是提高路网的通信能力。但无论哪个国家的大城市,不可能无限制地修建道路,不论是资金

DSP原理及应用

因素还是土地因素,都限制了道路的无节制增长。因此,无限制地修建道路难满足日益增长的交通需求。与此同时,通过限制车辆增加削减交通需求也受到客观因素的制约而无法取得满意的结果。事实上,由于交通系统是一个相当复杂的大系统,无论单独从车辆方面考虑还是从道路方面考虑,都很难从根本上解决问题。

道路交通系统是一个地区、一个城市的主要组成部份,这个系统的运行状况如何,直接反映了一个地区、一个城市的现代化管理水平。在这一系统中,道路不仅仅是易变化的部分,而其它组成部分则存在着较大的可变性和随机性。只有对这一系统的组成及其运行机理进行科学客观的分析研究,对能制定出科学有效的管理和控制对策,从而保障系统的有效运行。

2项目设计实现功能

2.1交通灯控制要求

交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。计时显示:液晶屏幕上8×8 点阵显示0-9 计数。

正常交通控制信号顺序:正常交通灯信号自动变换: ⑴ 南北方向绿灯,东西红灯(20 秒)。⑵ 南北方向绿灯闪烁。⑶ 南北方向黄灯。

⑷ 南北方向红灯,东西方向黄灯。⑸ 东西方向绿灯(20 秒)。⑹ 东西方向绿灯闪烁。⑺ 东西方向黄灯。⑻ 返回⑴循环控制。

紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制

⑴ 当任意方向通行剩余时间多于10 秒,将时间改成10 秒。

DSP原理及应用

⑵ 正常变换到四面红灯(20 秒)。

⑶ 直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。

2.2 液晶显示器控制

本次设计使用ICETEK-F2812-A板,ICETEK-F2812-A是一块以TMS320F2812DSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。液晶显示模块的访问、控制是由2812DSP对扩展扩展接口的操作完成。

控制扩展口的寻址:命令控制扩展接口的地址为0x108001,数据控制扩展接口的地址为0x108003 和0x108004,辅助控制扩展接口的地址为0x108002。

可以观察到液晶显示从0到9的计数。灵活使用控制字,可以实现复杂多变的显示。当使用点阵图形显示时需要在 DSP 内存中建立图形存储缓冲;适当更新显示可取得动画效果。在实际生活中观察点阵显示的霓虹灯广告、交通指示牌、报站牌等领会这种控制的具体应用。项目实现方案

3.1项目设计整体思路

根据DSP的硬件中断、定时器、I/O访问原理。用定时器定时。用I/O口控制红绿黄灯的开关,用硬件中断模拟紧急情况发生(如:急救车,消防车)。有紧急情况发生,两向全红,以便让紧急车通过。紧急车通过后,交通的恢复中断前的状态。

DSP原理及应用

设计总流程图 中断服务流程

DSP原理及应用

3.2设计原理 3.2.1 CPU定时器原理

F2810/F2812芯片内部有3个32位CPU定时器(TIMER0/1/2),其中定时器1和定时器2预留给实时操作系统使用(如 DSPBIOS),只有CPU定时器0用户可以在应用程序中使用。定时器功能框图如下:

在F281x芯片中,向CPU申请中断的定时器中断信号(TINT0、TINT1及TINT2)连接方式如下图:

为保证定时器正常,需要进行一下操作:首先将计数值写入32位计数寄存器(TIMH:TIM)内,该计数值放在周期寄存器(PRDH:PRD)中;然后按SYSCLOCKOUT的频率对计数值进行减计数。当计数器的值计到0时,定时器会产生一个中断脉冲输出。

DSP原理及应用

3.2.2 DSP外设中断扩展模块

2812的CPU为了能够及时有效的处理好各个外设的中断请求,设计了一个专门处理外设中断的扩展模块(the Peripheral Interrupt Expansion block),叫做外设中断控制器PIE,它能够对各种中断请求源(例如来自于外设或者其他外部引脚的请求)做出判断以及相应的决策。PIE 可以支持96个不同的中断,这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到CPU内核的12 条中断线中的某一条上(INT1-INT12)。PIE 目前只使用了96 个终端中的45 个,其他的等待将来的功能扩展。

2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。

3.2.3 发光二极原理

显示/控制模块上的发光二极管是由连接在F2812DSP 扩展扩展接口上的寄存器EWR和SNR控制的。这两个寄存器均为6 位寄存器,其位定义见下表:

DSP原理及应用

两个寄存器的地址均映射到 F2812DSP 的扩展空间,地址为108007H,DSP 通过对扩展区域该地址的写操作来修改两个寄存器上各位的状态,当寄存器某位取‘1’值时,相应指示灯被点亮,取‘0’值则熄灭。当写入108007H 的数据(8 位有效值)的高两位为‘00’时,数据的低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 等专用芯片控制端和状态寄存器也常映射到I/O 端口上。总之,在I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。ICETEK-F2812-A 板将指示灯、DIP 开关、A/D 和D/A 的控制端等映射在I/O 空间。在程序中,访问I/O 端口的语句较为简单。

DSP原理及应用

3.2.5 液晶显示器控制原理

显示开关:0x3f 打开显示;0x3e 关闭显示;

设置显示起始行:0x0c0+起始行取值,其中起始行取值为0 至63; 设置操作页:0x0b8+页号,其中页号取值为0-7; 设置操作列:0x40+列号,其中列号为取值为0-63;

写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制扩展接口即可。液晶显示器与DSP 的连接:

数据信号的传送:由于液晶显示模块相对运行在8MHz 主频下的DSP 属于较为慢速设备,连接时需要考虑数据线上信号的等待问题;

电平转换:由于DSP 为3.3V 设备,而液晶显示模块属于5V 设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。程序设计

4.1 程序总体设计① 根据设计要求,由于控制是由不同的各种状态按顺序发生的, 我们可以采用状态机制控制方法来解决此问题。这种方法是: 首先列举所有可能发生的状态;然后将这些状态编号, 按顺序产生这些状态;状态延续的时间用程序控制,对于突发情况, 可采用在正常顺序的控制中插入特殊控制序列的方式完成。

② 定时器的设定, VC5509A 定时器是由一个4 位的预定标值PSC 和一个16 位的减法计数的计数器TIM 组成。在实际工作中首先是每经过一个周期PSC 值减1, 一直减到0

DSP原理及应用

后TIM 开始减1, 直到减到0 后的第一个周期, 计数器会向CPU 发出中断请求。③ 突发事件设置, 在实际交通过程中会出现突发状况, 比如说有救护车或者110 紧急车要通过, 此时就可以通过小键盘进行突发状况模拟。通过按键进入到中断服务子程序, 相当于原来先要通过的车辆在突发状况来了以后就要先让紧急车辆通过。

4.2 程序编写(见附页)心得体会

随着信息技术的飞速发展,数字信号处理技术已逐渐发展成为一门主流技术,它在电子信息,通信,软件无线电,制动控制,仪表仪器,信息家电等高科技领域得到了越来越广泛的应用。数字信号处理器由于运算速度快,具有可编程特性和接口灵活的特点,使的它在许多电子产品的研制,开发与应用中,发挥着越来越重要的作用。采用DSP 芯片来实现数字信号处理系统更是当前的发展趋势。

通过做基于DSP 的交通灯的设计,进一步熟悉DSP 芯片及其开发环境CCS的功能。同时对当前交通控制的现状有了进一部的了解。为以后的学习打下了坚实的基础。随着科学技术的发展及各门学科的相互融合,DSP 将有更为广阔的应用前景。交通控制也会更智能,为人们的出行提供更多的便利。

DSP原理及应用

附页#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中断服务程序

void SetLEDArray(int nNumber);

// 修改显示内容 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,设置运行速度

InitICETEKCTR();// 初始化显示/控制模块

InitTimer();// 设置定时器中断

// 根据计时器计数切换状态

// 根据状态设置计数和交通灯状态

while(1)

{

if(bHold && nNowStatus==statusHold)

{

if

(nTimeCount>=nStatusHold)

{

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

}

}

else if

DSP原理及应用

(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原理及应用

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;// 设置交通灯状态

RefreshLEDArray();// 刷新发光二极管显示

nScanCode=port8001;// 读键盘扫描码

nScanCode&=0x0ff;

tKey=CTRCLKEY;

if

(nScanCode==SCANCODE_9)

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

// 定时器中断服务程序,进行时钟计数

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

// 设置发光二极管显示内容 void SetLEDArray(int nNumber){

int i,ShowNumber;

ShowNumber=nNumber/2;if(ShowNumber>9)ShowNumber=0;CTRLCDCMDR=LCDCMDPAGE;// 设置操作页=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);} }

// 将缓存中点阵送发光二极管显示

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

CTRGR=ledx[i];

CTRLA=ledbuf[i];} }

// 初始化DSP,设置运行速度=8MHz void InitDSP(){ REGISTERCLKMD=0;// 复位PLL REGISTERCLKMD=0x1007;//

DSP原理及应用

速度设置=16MHz }

// 设置定时器参数、允许中断 void InitTimer(){ unsigned int k;

asm(“ ssbx INTM”);// 关中断,进行关键设置时不许打扰

// 设置通用定时器

k=PMST;

// 设置PMST寄存器

PMST =k&0xff;// 中断向量表起始地址=80H IMR = 0x0c;// 使能TINT TCR = 0x41f;// 预分频系数为16 TIM = 0;// 时钟计数器清0 PRD = 0x0f423;// 周期寄存器为0ffH TCR = 0x42f;// 复位、启动

IFR = 0x0c;// 清中断标志位

port3004=0;

// 使能XINT2 asm(“ rsbx INTM”);// 开中断 }

// 初始化ICETEK-CTR板上设备 void InitICETEKCTR(){ int k;

CTRGR=0;// 初始化ICETEK-CTR CTRGR=0x80;CTRGR=0;CTRLR=0;// 关闭东西方向的交通灯

CTRLR=0x40;// 关闭南北方向的交通灯

CTRLR=0x0c1;// 开启发光二极管显示阵列

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

ledbuf[k]=0x0ff;// 显示为空白

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

} k=CTRCLKEY;// 清除键盘

缓冲区

TurnOnLCD();

// 打开显示

LCDCLS();

// 清除显示内存

CTRLCDCMDR=LCDCMDSTARTLINE;// 设置显示起始行

CTRLCDCR=0;}

void interrupt xint2(void)// XINT2中断服务程序 { bHold=1;}

void EndICETEKCTR(){ int k;CTRLR=0;// 关闭东西方向的交通灯

CTRLR=0x40;// 关闭南北方向的交通灯

CTRLR=0x0c0;// 关闭发光二极管显示阵列

k=CTRCLKEY;// 清除键盘缓冲区 }

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++;

} } }

第四篇:微机原理课程设计-8255控制交通灯

微机原理课程设计:8255模拟交通灯

1、目的:学习8255使用方法,学习模拟交通灯控制的方法,学习双色灯的使用。

2、要求:控制4个双色LED灯(可发红,绿,黄光),模拟十字路口交通灯管理。

3、电路及连线

PC0-PC3连DG1-DG4,PC4-PC7连DR1-DR4。8255片选CS8255连138译码处210H。

4、说明(1)因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。

(2)双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。(3)74LS240为8输入输出的反向驱动器。

5、完成的任务

(1)利用计算机和微机原理试验箱,将实验6的程序Tlamp_88.asm在试验箱运行和调试。全速运行,观察整体效果。单步运行,观察程序每条语句额执行效果,理解语句含义。(2)修改实验连线为,PC7-PC4连DG1-DG4,PC3-PC0连DR1-DR4。8255片选CS8255连138译码处210H孔。将Tlamp_88.asm另存为jiaotong.asm。修改jiaotong.asm,实现交通灯原有功能。

(3)修改实验连线为,PB7-PB4连DG1-DG4,PB3-PB0连DR1-DR4。8255片选CS8255连138译码处210H孔。将jiaotong.asm另存为jiaotong2.asm。修改jiaotong2.asm,实现交通灯原有功能。

(4)将jiaotong2.asm另存为jiaotong3.asm。修改jiaotong3.asm,实现交通灯各个灯亮和灭的时间是原有时间的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

;设置为全输出

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

第五篇:课程设计任务书-24交通灯控制电路设计

课程设计任务书

题目:交通灯控制电路设计

时间: 年 月 日—— 年 月 日

设计的说明:

本设计需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz 脉冲,即每1s 中递减一次,在显示时间小于3 秒的时候,通车方向的黄灯以2Hz 的频率闪烁。系统中用S1 按键进行复位。

设计的任务和要求:

1、在十字路口的两个方向上各设一组红、绿、黄灯;初始状态是两个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。

2、设置数码管显示允许通行或者禁止通行的时间,东西路和南北路的通车时间均设定为20s。数码管的时间总是显示为19、18、17……2、1、0、19、18……。在显示时间小于3 秒的时候,通车方向的黄灯闪烁。

3、当各条路中任意一条上出现特殊情况,如消防车、救护车或其他需要优先放行的车辆时,各方向上均是红灯亮。倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。

4、要求对整体电路进行仿真,提供仿真波形图,并分析结果

5、硬件测试结果用照片的形式记录下来。

提高部分:编写能手动控制交通灯通行时间的交通灯控制器。

指导教师:

学生:

日期:

下载DSP 课程设计  交通灯的控制与实现word格式文档
下载DSP 课程设计 交通灯的控制与实现.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    PLC交通灯课程设计

    PLC的定义及工作原理 ⒈定义:可编程控制器,简称PLC(Programmable logic Controller),是指以计算机技术为基础的新型工业控制装置。“PLC是一种专门为在工业环境下应用而设计的数......

    交通灯单片机课程设计

    《单片机原理与接口技术课程设计报告》 课题:以交通灯为主的多功能任务设计 班级 学号 学生姓名指导教师 淮阴工学院 电子与电气工程学院 2015-6 1 目录 一、 课程设计目......

    交通灯控制电路设计自动化 数字电子技术课程设计

    综 述 本次设计主要分为四个部分,第一部分:信号产生电路;第二部分:电子示电路;第三部分:倒计时设计,第四部分:交通灯及交通灯控制电路 在本次设计中采用555定时器产生CP=1Hz的脉冲信......

    DSP课程设计教学大纲

    DSP课程设计教学大纲 课程名称:DSP课程设计 英文名称:Design of DSP course 学 时:2周 学 分:2 适用专业:电子信息工程、通信工程专业本科生 课程类别:必修 课程性质:集中实践环......

    数电课程设计——交通灯(范文模版)

    课 程 设 计 课程名称 数字电子技术基础 题目名称 交通灯控制电路学生学院 专业班级 学号学生姓名 邓嘉琦 指导教师2014 年5 月 25 日 一、设计题目: 交通灯控制电路 二、实......

    数字电路课程设计报告—交通灯

    数字电路课程设计 --交通灯控制器的设计 院系:姓名: 指导教师: 完成日期:2011年6月7日 数字电路课程设计 --交通灯控制器的设计 一、课程设计目的 1.熟悉集成电路的引脚安排......

    交通灯控制逻辑电路设计与总结报告

    交通灯控制逻辑电路设计与总结报告 一、设计任务 用CPLD设计路口交通灯控制器 二、设计要求 1、满足一下时序要求:南北方向红灯亮,东西方向绿灯亮;南北方向绿灯亮,东西方向红灯......

    DSP数字图像取反课程设计大全

    西南石油大学 2012级专业综合实践” 报 告 报告题目 :DSP数字图像取反课程设计 学 院 :电气信息学院 作 者 :曾翔 联系方式 :*** 辅导老师 :曹玉英 完成日期 : 2016年 01......