
DSP交通灯综合控制.doc
20页DSP原理及应用课程设计交通灯综合控制学院电气信息工程专业电子信息工程班级学号分组成员指导教师2013 年 6 月目 录1 引言 32 课程设计的目标 42.1 课程设计的背景 42.2 设计要求 42.3 设计思路简介 42.4 交通灯控制要求 52.5 交通灯模拟 52.6 计时 62.7 紧急情况 62.8 程序设计 63 DSP定时器的算法原理 83.1 CPU定时器的原理 83.2 CPU定时寄存器原理 84 系统程序设计 94.1 流程图 94.2 试验程序 105 心得体会 211 引言 随着计算机和信息技术的飞速发展数字信号处理技术得到迅速的发展DSP (Digital Signal Processing)是一门涉及许多学科和领域的新兴学科数字信号处理是一种通过数字信号处理器来处理现实信号的方法这些信号由数字序列表示在过去的二十多年时间里数字信号处理已经在通信等领域得到极为广泛的应用本次设计是基于DSP来实现交通灯的控制利用发光二级管来模拟交通信号利用数码管显示倒计时时间利用TMS320VC5416DSP片上定时器定时产生时钟计数来模拟实际生活中十字路口交通灯。
关键词:DSPTMS320VC5416;交通灯;发光二极管2 课程设计的目标2.1 课程设计的背景DSP是一种将处理器的计算核心和一定的外部设备集成在一个单片芯片上而构成的类似于单片机的一种处理器芯片不同于一般单片机的是由于DSP 采用了特殊的总线结构和体系因此它在执行数字信号处理计算方面具有更高的性能数字信号处理已经在通信、信号处理等领域得到极为广泛的应用十字路口交通灯在我们的日常生活中随处可见它为繁忙的道路交通及人们的安全提供了较好的保障然而我们只知道交通灯在红、黄、绿三色之间交替更换来控制人车流量去对其内部的工作原理及软硬件的设计了解很少因此要通过此次简单道路交通灯控制系统软硬件设计来进一步研究交通灯的内部结构最重要的是将学习到的DSP系统的组成与原理应用到交通灯的设计当中通过《DSP技术及应用》课程设计,是学生能够将学到的DSP系统的组成与原理用到具体的实际系统中,加深对DSP系统的理解,是将该门课程与实际问题相连接的关键步骤通过课程设计,能够提高学生分析问题,解决问题,从而运用所学知识解决实际问题的能力,并培养基本的、良好的软硬件射进能力2.2 设计要求利用C语言在CCS环境中编写一个交通灯综合控制程序,并能通过硬件仿真对所编写的程序及其应用性、可行性进行验证。
2.3 设计思路简介在TMS320C54x系统开发环境CCS(Code Composer Studio)下对交通灯综合控制的实现原理进行讨论通过实验仿真,可以在硬件实验箱上看到对交通灯的模拟控制交通等综合控制的控制原理2.4 交通灯控制要求利用ICETEK-S60 实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制的程序要求如下:- 交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变 计时显示:液晶屏幕上8×8 点阵显示0-9 计数 正常交通控制信号顺序:正常交通灯信号自动变换:⑴ 南北方向绿灯,东西红灯(20 秒)⑵ 南北方向绿灯闪烁⑶ 南北方向黄灯⑷ 南北方向红灯,东西方向黄灯⑸ 东西方向绿灯(20 秒)⑹ 东西方向绿灯闪烁⑺ 东西方向黄灯⑻ 返回⑴循环控制 紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制⑴ 当任意方向通行剩余时间多于10 秒,将时间改成10 秒⑵ 正常变换到四面红灯(20 秒)⑶ 直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。
2.5 交通灯模拟利用ICETEK-CTR 上的一组发光二极管(共12 只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟发光二极管的控制方法可参见第二部分、第二章、二、22.6 计时使用TMS320VC5416DSP 片上定时器,定时产生时钟计数,再利用此计数对应具体时间定时器控制及中断编程可参考实验3.3 程序2.7 紧急情况利用ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,模拟突发情况外中断编程控制可参考实验3.4 程序2.8 程序设计根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成时钟计数:采用250ms 一次中断进行累加计数表格 1状态编号信号灯状态状态定义保持时间(计数值,起始时间,结束时间)计数显示1南北绿灯,东西红灯statusNSGreenEWRed20秒(160,0,159)20-02南北绿灯闪烁,东西红灯statusNSFlashEWRed6秒(24,160,183)03南北黄灯,东西红灯statusNSYellowEWRed4秒(16,184,199)204南北红灯,东西黄灯statusNSRedEWYellow4秒(16,200,215)205南北红灯,东西绿灯statusNSRedEWGreen20秒(160,216,375)20-16南北红灯,东西绿灯闪烁statusNSRedEWFlash6秒(24,376,399)07南北红灯,东西黄灯statusNSRedEWYellow4秒(16,400,415)208南北黄灯,东西红灯statusNSYellowEWRed4秒(16,416,431)20*南北红灯,东西红灯StatusHold20秒(160,0,159)20-1其中,正常顺序每112 秒(计数值448)为一个循环,状态“*”为非顺序状态。
这样,只要根据计数值就可确定当前状态,根据状态再分情况处理对于计数显示,当处于状态1、5、*中时需要进行倒计时,需要计算在此状态中的计数值增量,根据增量判断是否更新计数显示3 DSP定时器的算法原理3.1 CPU定时器的原理 本次设计主要用的是F2812器件上的3个32位CPU定时器(TIMER0/1/2)其中定时器1和定时器2预留给实时操作系统使用(如 DSP-BIOS),只有定时器0用户可以在应用程序中使用定时器功能框图如下:3.2 CPU定时寄存器原理 定时器在工作过程中,首先把周期寄存器(PRDH:PRD)的值装入32位计数寄存器计数寄存器根据SYSCLKOUT时钟递减计数当计数寄存器等于0时,定时器中断输出产生一个中断脉冲 (1)定时器计数寄存器(TIMERxTIM和TIMERxTIMH) (2)定时器控制寄存器(TIMERxTCR):使能中断,定时功能; (3)定时器周期寄存器(TIMERxPRD):符合条件则周期性重新装载并保存周期值 (4)定时器预定标寄存器(TIMERxTPR和TIMERxTPRH):控制多久减14 系统程序设计4.1 流程图图 51实验程序流程图图 52设计总流程图设计总流程图4.2 试验程序#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 //IM R中断屏蔽寄存器#define IFR *(int *)0x1 //IFR中断标志寄存器 #define PMST *(int *)0x1d //PMST处理器模式状态寄存器(地址1dh)#define nStatusNSGreenEWRed 160 //状态1计数结束时间#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 0x40ioport unsigned int port3004;// CTR扩展寄存器定义ioport unsigned int port8000; ioport unsigned int port8001; //8001:读键盘扫描值,写液晶控制寄存器地址ioport unsigned int port8002; //8002:液晶控制寄存器地址ioport unsigned int port8003; //8003,8004:液晶显示数据寄存器地址ioport unsigned int port8004; //ioport unsigned int port8005; //8005:发光二极管显示阵列控制寄存器地址ioport unsigned int port8007; //8007:发光二极管显示阵列控制寄存器地址#define CTRGR port8000#define CTRLCDCMDR port8001#define CTRKEY port8001#define CTRCLKEY port8002#define CTRLCDCR port8002#define CTRLCDLCR port8003#define CTRLCDRCR port。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





