交通灯控制系统课程设计.docx

上传人:b****5 文档编号:8564936 上传时间:2023-01-31 格式:DOCX 页数:10 大小:33.32KB
下载 相关 举报
交通灯控制系统课程设计.docx_第1页
第1页 / 共10页
交通灯控制系统课程设计.docx_第2页
第2页 / 共10页
交通灯控制系统课程设计.docx_第3页
第3页 / 共10页
交通灯控制系统课程设计.docx_第4页
第4页 / 共10页
交通灯控制系统课程设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

交通灯控制系统课程设计.docx

《交通灯控制系统课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统课程设计.docx(10页珍藏版)》请在冰豆网上搜索。

交通灯控制系统课程设计.docx

交通灯控制系统课程设计

交通信号灯控制系统的设计

一.前言

红绿灯的起源可追溯到19世纪初的英国。

那时,在英国的约克城,身着红装的女人表示“已婚”,然而身着绿装的女人则是“未婚”。

当时,伦敦议会大厦前经常发生马车轧人的事故。

受红绿装启发,英国机械师德哈特于1868年设计了红、绿两色的煤气交通信号灯,由一名手持长杆的警察通过牵动皮带来转换灯的颜色。

可惜的是,这盏灯的历史只有23天,中断的原因是煤气灯突然爆炸使一位警察殉职。

1914年,克里夫兰市率先在街道中恢复交通信号灯,随后纽约、芝加哥等城市也开始出现。

这时的交通信号灯已从煤气进化为电气,这与现代的交通信号灯已经没有多少差距,除了信号灯本身,美国人还完善了信号控制系统。

中国最早的红绿灯出现在上海的英租界。

据资料显示,早在十九世纪二十年代的上海的外国租界,在某些交通繁忙的交通路口就通过机械动力装置来指挥路口的交通有序进行,那年四月份时候,在南京路的十字路口首先安装了具有现代特性的红绿灯信号设备。

1961年,心理学家卡尔佩格劳为东德交通部设计了一种新的行人信号灯,1969年在东柏林首次投入使用。

在卡尔佩格劳的设计中,原本单调的图案,不但变成了一个站立的和一个行走的行人形象,而且两人体型肥胖,带着帽子,动作略显夸张,这样传递的视觉信号更为明显,形象也更可爱。

这个信号灯受到政府的认可和民众的喜爱,并很快推广。

在2013年一月一号“史上最严交规”的修订版开始实施,对闯红灯、开车打电话、不系安全带等行为进行严格处罚,得到人们拥护。

不过,其中关于“抢黄灯”扣6分的规定引发关注和热议。

为了应对“闯黄灯扣6分”的规定,很多司机发现绿灯已亮一段时间后,便减缓车速避免“碰线”,不少司机反而觉得“红灯让人更安心”。

红绿灯作为城市道路交通资源的分配器,科学的设置才是确保有序交通秩序的应有之义。

然而,红绿灯设置不合理,或维护不当现象时有发生,甚至造成严重的交通事故。

由此可见,交通信号灯控制系统的研究将解决人类交通因需求的增多而日益严重而带来的问题,解决无规则交通带来的交通混乱和交通事故的发生,大大的保护了人们的生命财产安全。

所以研发先进的城市交通信号灯控制系统不仅具有学术价值更有使用价值。

解决了城市交通拥堵的问题,提高了城市交通的利用效率。

对我们未来交通的发展具有深远的意义。

通过对基于DSP的交通灯设计,掌握TMS320F2812DSP定时器及中断的使用和编程,熟悉CCS集成开发环境,用C语言建立DSP源文件,掌握程序工程文件的生成方法,完成具体对象控制程序的编写并进行程序的调试,加深对DSP原理与应用的认识,将理论和实践结合起来。

二、设计原理

1设计思路

根据DSP系统的硬件中断、定时器、交通灯控制的原理,用内部三个32位通用定时器(TIMER0/1/2)代替delay函数实现交通灯的交替闪烁。

使交通灯运行东西通→南北通→禁行的流程。

2系统基本功能

a)初始状态设置:

设置程序开始时系统为东西通状态。

b)正常时间设置:

以时间为变量控制交通信号灯的变换,用不同的时间间隔来控制每种灯态的持续时间。

c)灯态切换:

交通灯可在红黄蓝三色中按预设顺序进行切换。

2.LED模块

利用SEED-DTK上的一组发光二极管(共12只,分为东西南北四组,红黄绿三色)的亮灭实现交通信号的模拟。

TMS320F2812DSP最多有56个专门的通用输入输出管脚,这些通用输入输出管脚通过专用寄存器可以由软件控制,比如指定输入,输出及输出值等。

通过试验箱上的拓展板与DSP的通用输入/输出管脚直接相连。

显示/控制模块上的发光二极管是由连接在2812DSP扩展地址接口上的寄存器EWR和SNR控制的。

这两个寄存器均为6位存器两个寄存器的地址均映射到2812DSP的扩展空间,通过对该地址的写操作来修改两个寄存器上各位的状态,当寄存器某位取1’值时,相应指示灯被点亮,取‘0’值则熄灭。

当写入CTRLR的数据(8位有效值)的高两位为“00’时,数据的低6位将写入EWR寄存器;当高两位的值为“01’时,写入SNR寄存器

2.1交通灯组态说明

灯组:

在交通灯控制系统中,东西方和南北方各为一个组。

灯态:

每个组内红绿黄三色信号各为一个灯态。

在所涉及的系统中一共生成三种状态:

①东西绿②东西黄③东西红④南北绿⑤南北黄⑥南北红

交通灯组合状态如下:

1.东西绿灯亮,南北黄灯亮

2.东西南北黄灯亮

3.南北绿灯亮,东西黄灯亮

4.东西南北红灯亮

2.2组态程序说明

根据上述四种实际状态,可先在程序中定义好4种状态对应的四个参数,然后按顺序产生四种状态,并根据中断定时器控制每种状态时间。

状态编号

交通灯信号

对应参数

持续时间

1

东西绿南北黄

defineEASTEWEST0x88c

4s

2

东西黄南北黄

defineIOCHANGE0x462

2s

3

东西黄南北绿

defineSOUTHNORTH0x311

4s

4

东西红南北红

defineALLFORBIN0x914

--

3.定时器说明

MS320F2812A内部有三个32位通用定时(TIMER0/1/2),定时器1和2被保留

给实时操作系统(DSPBI0s)用,只有定时器0可以提供给用户使用。

定时器采用

中断方式,中断过程如下接受中断请求。

a.必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。

b.响应中断。

必须能够响应中断请求。

如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。

而对于非可屏蔽中断和软件中断,会立即作出响应。

c.准备执中断服务程序并保存寄存器的值。

d.执行中断服务子程序。

调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。

定时器设定如下

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

/*初始化PIE*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

/*初始化外设*/

InitPeripherals();

EALLOW;

PieVectTable.TINT0=&ISRTimer0;

PieVectTable.XINT13=&ISRTimer1;

PieVectTable.TINT2=&ISRTimer2;

EDIS;

/*设置CPU*/

ConfigCpuTimer(&CpuTimer0,150,4000000);

ConfigCpuTimer(&CpuTimer1,150,2000000);

ConfigCpuTimer(&CpuTimer2,150,4000000);

StartCpuTimer0();

StopCpuTimer1();

StopCpuTimer2();

/*开中断*/

IER|=M_INT1;

IER|=M_INT13;

IER|=M_INT14;

PieCtrl.PIEIER1.bit.INTx7=1;

PieCtrl.PIEIER1.bit.INTx6=1;

PieCtrl.PIEIER1.bit.INTx5=1;

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

num=0;

den=0;

4.CPU定时寄存器

定时器在工作的过程中,首先把周期寄存器的值装入32位计数寄存器,计数寄存器根据SYSCLKOUT时钟递减计数,当计数寄存器等于0时,定时器中断输出产生一个中断脉冲。

在每个SYSCLKOUT脉冲后PSC减1,一直减到0。

5.交通灯模型

本设计的硬件是由DSP模块、LED模块、I/O模块等组成。

信号灯受芯片中输出高低电平的控制。

定时模块采用硬件和软件定时结合的方法,用软件定时实现所需要的定时。

本次设计中首先东西方向绿灯亮4秒、南北方向黄灯亮4秒,当系统运行到4秒时,交通灯东西方向灯停、南北方向灯停,而且所有黄灯亮2秒,然后切换成东西方向黄灯和南北方向绿灯,再运行4s后,切换到黄灯亮2秒,之后切换成东西南北红灯亮,之后开始循环。

 

三.原理的应用仿真

仿真的结果:

首先东西方向绿灯亮4秒、南北方向黄灯亮4秒,当系统运行到4秒时,交通灯东西方向灯停、南北方向灯停,而且所有黄灯亮2秒,然后切换成东西方向黄灯和南北方向绿灯,再运行4s后,切换到黄灯亮2秒,之后切换成东西南北红灯亮,之后开始循环。

四.结论

通过对基于DSP的交通灯设计,掌握TMS320F2812DSP定时器及中断的使用和编程,加深对DSP原理与应用的认识,将理论和实践结合了起来。

交通信号灯控制系统的研究将解决人类交通因需求的增多而日益严重而带来的问题,解决无规则交通带来的交通混乱和交通事故的发生,大大的保护了人们的生命财产安全。

所以研发先进的城市交通信号灯控制系统不仅具有学术价值更有使用价值。

解决了城市交通拥堵的问题,提高了城市交通的利用效率。

五.参考文献

【1】 戴明桢等.TMS320C28xDSP结构、原理及应用[M].北航出版社,2001.11

【2】汪春梅等.TMS320C5000系列DSP系统设计与开发实例[M].电子工业出版社,2004.7

【3】郑红等.TMS320C28xDSP应用系统设计[M].北航出版社,2002.5

【4】AMD&FujitsuCorporation.S29AL004D—Am29LV400DATASHEET,2005.12

【5】TICorporation.SPRS079E—TMS320VC5402FIXED—POINTDIGITALSIGNAL PROCESSOR[P],2000.8

【6】MAXIM IntegratedProducts,MAX813DATASHEET,1995.9  

六.附录:

主程序:

/******************************************************************************/

#include"DSP28_Device.h"

#include"comm.h"

#include"ext_inf.h"

volatileunsignedintnum;

volatileunsignedintden;

interruptvoidISRTimer0(void);

interruptvoidISRTimer1(void);

interruptvoidISRTimer2(void);

/*交通灯操作宏定义*/

#defineEASTEWEST0x88c//交通灯东西通(南北禁行)

#defineSOUTHNORTH0x311//交通灯南北通(东西禁行)

#defineIOCHANGE0x462//交通灯各方向黄灯亮

#defineALLFORBIN0x914//交通灯各方向均禁行

//实验操控:

//4为交通灯南北通,5为禁行

 

/*定义扩展总线存储器空间页地址寄存器地址为0x004020*/

volatileunsignedint*p_ceselect=(volatileunsignedint*)0x004020;

/*定义交通灯IO口的地址为0x80000*/

volatileunsignedint*p_trafficaddr=(volatileunsignedint*)0x080000;

//////////////

unsignedintiostatus=0;

voiddelay(intperiod);

/******************************************************************/

/******************************************************************/

voidmain(void)

{

/*初始化系统*/

InitSysCtrl();

/*关中断*/

DINT;

IER=0x0000;

IFR=0x0000;

/*初始化PIE*/

InitPieCtrl();

/*初始化PIE中断矢量表*/

InitPieVectTable();

/*初始化外设*/

InitPeripherals();

EALLOW;

PieVectTable.TINT0=&ISRTimer0;

PieVectTable.XINT13=&ISRTimer1;

PieVectTable.TINT2=&ISRTimer2;

EDIS;

/*设置CPU*/

ConfigCpuTimer(&CpuTimer0,150,4000000);

ConfigCpuTimer(&CpuTimer1,150,2000000);

ConfigCpuTimer(&CpuTimer2,150,4000000);

StartCpuTimer0();

StopCpuTimer1();

StopCpuTimer2();

/*开中断*/

IER|=M_INT1;

IER|=M_INT13;

IER|=M_INT14;

PieCtrl.PIEIER1.bit.INTx7=1;

PieCtrl.PIEIER1.bit.INTx6=1;

PieCtrl.PIEIER1.bit.INTx5=1;

EINT;//EnableGlobalinterruptINTM

ERTM;//EnableGlobalrealtimeinterruptDBGM

num=0;

den=0;

*p_ceselect=0x6;//打开ce3空间

iostatus=EASTEWEST;

*p_trafficaddr=iostatus;

 

for(;;);//东西到南北然后禁行

}

interruptvoidISRTimer0(void)

{

CpuTimer0.InterruptCount++;

if(num==0)

{

StopCpuTimer0();

StartCpuTimer1();

StopCpuTimer2();

}

else

{

StopCpuTimer0();

StopCpuTimer1();

StartCpuTimer2();

}

iostatus=IOCHANGE;

*p_trafficaddr=iostatus;

if(den==1)

{

iostatus=ALLFORBIN;

*p_trafficaddr=iostatus;

den=0;

}

PieCtrl.PIEACK.all=PIEACK_GROUP1;

}

interruptvoidISRTimer1(void)

{

CpuTimer1.InterruptCount++;

StartCpuTimer0();

StopCpuTimer1();

StopCpuTimer2();

iostatus=SOUTHNORTH;

*p_trafficaddr=iostatus;

num++;

den++;

}

interruptvoidISRTimer2(void)

{

CpuTimer2.InterruptCount++;

num=0;

iostatus=EASTEWEST;

*p_trafficaddr=iostatus;

StartCpuTimer0();

StopCpuTimer1();

StopCpuTimer2();

PieCtrl.PIEACK.all=PIEACK_GROUP1;

}

/******************************************************************/

//===========================================================================

//Nomore.

//===========================================================================

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1