基于dsp交通信号灯详细设计讲解_第1页
基于dsp交通信号灯详细设计讲解_第2页
基于dsp交通信号灯详细设计讲解_第3页
基于dsp交通信号灯详细设计讲解_第4页
基于dsp交通信号灯详细设计讲解_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息与电气工程学院DSP应用系统(三级)项目设计说明书(2013/2014学年第二学期) 题 目 :基于DSP设计的交通信号灯 专业班级 : 学生姓名 : 学 号: 指导教师 : 设计周数 : 2周 设计成绩 : 2014年 7月11日目录1. 需求分析12. 设计准备12.1. 芯片选择12.2. 七段码译码器CD451122.3. Protel 99 SE软件32.4. CCS软件33. 交通灯控制原理44. 程序流程设计55. 总体设计65.1. 硬件原理图75.2. 硬件设计75.3. 代码设计86. 测试结果及其分析167. 项目设计总结16参考文献161. 需求分析随着社会经济的发

2、展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。如何采用合适的控制方法,最大限嚏利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规刘部门亟待解决的主要问题。而DSP是伴随着微电子学、数字信号处理技术和计算机技术等学科的发展而产生的,是体现这三个学科综合科研成果的器件。由于它特殊的结构设计,可以把数宁信号处理中的一些理论和算法实时实现,并逐步进入

3、了控制器市场,而在计算机应用领域中得到了广泛的使用。所以本文提出了基于DSP的交通灯综合控制系统的设计。2. 设计准备2.1. 芯片选择本系统所采用的是TI公司的TMS320VC5509A,TMS320VC5509A是TI公司推出的定点数字信号处理器C5000系列中的一种,TMS320VC5509A通过增加乘累加MAC单元,增强了DSP的运算能力,而且性能更好,功耗更低,是目前TMS320家族中最省电的芯片。该芯片上的资源有:16Mbitflash196k*16bitSRAM2500gateCPLD模块上留有JTAG插口,用户可以通过仿真器和CCS下载程序和进行实验;其特点:1 其低功耗设计,

4、比上一代C54XX器件功耗低30左右;2 处理速度更快,双核结构,处理速度400MIPS;3 软件程序兼容C54XXDSP;4 片内存贮空间128K16Bit;5 大容量SDRAM设计:4M16Bit;6 2路10bit片上AD接口;7 8Mbit扩展FLASH,存储大量固化程序和数据;8 设计有用户可以测试指示灯;9 DSP扩展总线,包括数据、地址、IO、控制;10 4组标准扩展连接器,为用户进行二次开发提供条件;11 具有IEEE11491相兼容的逻辑扫描电路,该电路仅用于测试和仿真;+5V电源输入,内部+33V、+16V电源管理;12 高保真语音接口设计,双路语音采集,每路48KS;US

5、B20接口设计;本实验实验使用实验箱上外围控制接口P0的GPIO(通用输入输出脚)来实现功能,同时使用U4四路用户可控状态开关来实现中断功能。2.2. 七段码译码器CD4511具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动共阴LED数码管。其引脚图如图2-1,真值表如表2-1;图2-1 CD4511引脚图引脚功能:A0A3:二进制数据输入端:/BI:输出消隐控制端:LE:数据锁定控制端;/LT:灯测试端;YaYg:数据输出端。表2-1 CD4511真值表2.3. Protel 99 SE软件Protel99SE是应用于Windows9X/2000

6、/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源-地层和16个机加工层。功能特性:开放式集成化的设计管理体系超强功能的、修改与编辑功能强大的设计自动化功能2.4. CCS软件CCS软件简介CCS(CodeComposerStudio)代码调试器是一种合成开发环境。它是一种针对标准TMS320调试器接口的交互式方法。CCS目前有CCS1.1,CCS1.2和CCS2.0等三个不同时期的版本,又有CC2000(

7、针对C2XX),CCS5000(针对C54XX)和CCS6000(针对C6X)三个不同的型号。我们所使用的是CCS50002.0的版本。CCS5000具有以下特性:TI编译器的完全集成的环境:CCS5000目标管理系统,内建编辑器,所有的 调试和分析能力集成在一个Windows环境中。对C和DSP汇编文件的目标管理:目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译,以节省编译时间。高集成的编辑器调整C和DSP汇编代码:CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示。使用户能很容易地阅读代码和当场发现语法错误。编辑和调试时的后台编辑:用户在使用编译

8、器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示只要双击错误就可以直接到达出错处。l 在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器CCS5000在Windows95和Windows-me中支持多处理。PDM允许将命令传播给所有的或所选择的处理器。l 6 在任何算法点观察信号的图形窗口探针:图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,FFT在主机内执行这样就可以观察所感兴趣的部分而无须改变它的DSP代码。图显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就

9、可以迅速地观察到信号。文件探针在算法处通过文件提取或加入信号或数据:CCS5000允许用户从PC机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。图形分析:CCS5000的图形分析能力在其环境中是集成的。在后台(系统命令)执行用户的DOS程序:用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出 窗口。且允许用户将应用程序集成到CCS5000。l 技术状态观察窗口:CCS5000的可视窗口允许用户进入C表达式及相关变量。结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。代数分解窗口允许用户选择查看写成代数表达式的C格式,提高可读性

10、。l 目标DSP上的帮助:DSP结构和寄存器上的在线帮助可以使用户不必查看技术手册。l 用户扩展:扩展语言(GEL)使得用户可以将自己的菜单项加到CCS5000的菜单栏中。3. 交通灯控制原理交通灯分为红绿三色,东、南、两、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,红灯禁止通行,灯光闪烁表示信号即将改变。正常的交通控制信号顺序如下:(1)南北方向绿灯,东两红灯(20秒)(2)南北方向绿灯闪烁(3)南北方向红灯(4)东西方向绿灯(20秒)(5)东西方向绿灯闪烁(6)返回(1)循环控制紧急情况处理:当重要车队通过、急救车通过时,交通警察手动控制:(1)当任意方向通行剩余时间多于1秒,

11、将时间改或10秒(2)正常变换到四面红灯(20秒)(3)直接返回正常信号倾序的下一个通行信号(跳过闪烁绿灯)4. 程序流程设计(1)根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题。这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制,对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。(2)定时器的设定,VC5509A定时器是由一个4位的预定标值PSC和一个16位的减法计数的计数器TIM组成。在实际工作中首先是每经过一个周期PSC值减1,一直减到0后TIM开始减1,直到减到0后的第

12、一个周期,计数器会向CPU发出中断请求。(3)突发事件设置在实际交通过程中会出现突发状况,比如说有救护车或者110紧急车要通过,此时就可以通过小键盘进行突发状况模拟。通过按键进入到中断服务子程序,相当于原来先要通过的车辆在突发状况来了以后就要先让紧急车辆通过。程序流程图如图4-1,图4-2和图4-3所示:退出键盘中断服务程序设置突发事件标志退出定时器中断服务程序计数工作变量值在原基础上加1键盘中断服务程序入口定时器中断服务程序入口 图4-2定时中断 图4-3 外部中断结束结束读取键盘输入根据当前状态设置放光二极管显示阵列状态根据当前状态设置指示灯状态根据定时器计数确定当前状态开始初始化:EMI

13、F、CPU频率、ICKTEKCTR、定时器、中断控制寄存器、工作变量YN 图4-1 交通灯流程图5. 总体设计通过外部可控开关设置外部中断,如图4-3 4-3 键盘原理图5.1. 硬件原理图使用protel 99 SE绘制原理图,如图4-4,双电源见图4-5图4-4 主原理图图4-5 双电源原理图5.2. 硬件设计通过原理图然后选择元器件,统计元器件并记录,如表4-1表4-1 元器件表元器件名称数量规格红色LED灯 2个黄色LED灯2个绿色LED灯2个电阻13个500欧姆CD45111个基座一个共阴数码管1个万用板1块杜邦线20根不同颜色排插一排利用电烙铁焊接,实际设计实物如图4-5图4-5

14、焊接电路图5.3. 代码设计#include #include #include #include #include C5509.h#define nStatusNSGreenEWRed 140/南北绿灯7s#define nStatusNSFlashEWRed 200/南北闪烁3s#define nStatusNSRedEWGreen 340/南北红灯7s#define nStatusNSRedEWFlash 400/东西闪烁3s#define nTotalTime 380#define statusNSGreenEWRed 0#define statusNSFlashEWRed 1#def

15、ine statusNSRedEWGreen 2#define statusNSRedEWFlash 3#define statusHold 4#define LBDS (*(unsigned int *)0x400001)/定义LBDS的地址#define DIPS (*(unsigned int *)0x400002)/定义拨码按键的地址void delay(Uint32 z);void LEDFlash(int num1,int num2);void LEDShow(int num);void INTR_init( void );void TIMER_init(void);void LE

16、DBuf(int num);/*锁相环的设置*/PLL_Config myConfig = 0, /IAI: the PLL locks using the same process that was underway /before the idle mode was entered 1, /IOB: If the PLL indicates a break in the phase lock, /it switches to its bypass mode and restarts the PLL phase-locking /sequence 10, /PLL multiply valu

17、e; multiply 10 times 1 /Divide by 2 PLL divide value; it can be either PLL divide value /(when PLL is enabled), or Bypass-mode divide value /(PLL in bypass mode, if PLL multiply value is set to 1);unsigned int nTimeCount,nTimeMS,nLed,nLedMS,nOldTimeCount;main() int nNowStatus; ioport unsigned int *t

18、cr0; tcr0 = (unsigned int *)0x1002; nTimeCount=nTimeMS=nLedMS=nLed=0; nNowStatus=0; nOldTimeCount=0; /*初始化CSL库*/ CSL_init(); SDRAM_init();/初始化EMIF接口 /*设置系统的运行速度为60MHz*/ PLL_config(&myConfig); /*确定方向为输出*/ GPIO_RSET(IODIR,0xFF);/1为输出 INTR_init(); TIMER_init(); while(1) if ( nTimeCountnStatusNSGreenEWR

19、ed )nNowStatus=statusNSGreenEWRed;else if ( nTimeCountnStatusNSFlashEWRed )nNowStatus=statusNSFlashEWRed;else if ( nTimeCountnStatusNSRedEWGreen )nNowStatus=statusNSRedEWGreen;else if ( nTimeCountnStatusNSRedEWFlash )nNowStatus=statusNSRedEWFlash;switch ( nNowStatus )case statusNSGreenEWRed:LEDShow(

20、0x1e);/南北显示绿灯,东西显示红灯break;case statusNSFlashEWRed:LEDFlash(0xfe);/南北绿灯闪烁显示,东西显示红灯break;case statusNSRedEWGreen:LEDShow(0x53);/南北显示红灯,东西显示绿灯break;case statusNSRedEWFlash:LEDFlash(0x57); /南北显示红灯,东西绿灯闪烁显示break;case statusHold:LEDShow(0x00);/当拨动按钮时显示紧急情况break; /灯闪烁函数,num1是灯亮参数void LEDFlash(int num1) int

21、 i=0,d=num1&0x40;ioport unsigned int *tcr0; tcr0 = (unsigned int *)0x1002;for(i=0;i0;j-)for(k= 0;k=8 )/为8时每50ms运行一次nTimeMS=0;nTimeCount+;if(nTimeCount=400)nTimeCount=0;if(nLedMS=160)/为160时每1s运行一次nLedMS=0;nLed+;if(nLed=10)nLed=0;if(9-nLed)=3)LEDBuf(9-nLed);/中断使能初始化void INTR_init( void )IVPD=0xd0;IVPH

22、=0xd0;IER0=0x10;DBIER0 =0x10;IFR0=0xffff;asm( BCLR INTM);/定时器中断初始化void TIMER_init(void)ioport unsigned int *tim0; ioport unsigned int *prd0; ioport unsigned int *tcr0; ioport unsigned int *prsc0; tim0 = (unsigned int *)0x1000;prd0 = (unsigned int *)0x1001;tcr0 = (unsigned int *)0x1002;prsc0 = (unsigned int *)0x1003;*tcr0 = 0x04f0;*tim0 =0 ;*prd0 = 49999;*prsc0 = 11;/定时6ms*tcr0=0x00e0;/开启定时中断6. 测试结果及其分析通过在TMS320VC5509A实验箱上进行测试,安装试验箱驱动并设置为emulator启动软件,将对应引脚连接到LED灯及CD4511引脚上面,编译并构建后,如果有错误修改后再re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论