DSP交通灯综合控制
- 格式:doc
- 大小:179.50 KB
- 文档页数:20
DSP十字路口交通灯课程设计问题描述在城市交通中,十字路口是交通流量极大的交汇点。
为了保障交通安全和交通效率,交通信号灯的设计和优化显得尤为重要。
本文将介绍一种基于数字信号处理(DSP)技术的十字路口交通灯控制系统的设计。
需求分析在设计十字路口交通灯系统时,需要满足以下需求:1.实现交通信号灯的控制,包括红灯、绿灯和黄灯的变化;2.根据交通流量调整信号灯的时长,以提高交通效率;3.实现紧急情况下的临时信号灯控制,例如救护车或警车的经过;4.提供人行道信号灯,以保障行人的交通安全。
系统设计硬件设计本系统的硬件设计包括以下组成部分:1.十字路口交通信号灯,包括红灯、绿灯和黄灯的LED灯;2.交通流量检测器,用于检测不同道路上的车辆数量;3.紧急情况检测器,用于检测救护车或警车的到达;4.人行道信号灯,用于指示行人过马路的时机。
软件设计本系统的软件设计包括以下几个主要模块:1.交通信号灯控制模块:根据交通流量和紧急情况,控制交通信号灯的变化。
可以使用DSP算法对交通流量进行实时分析和预测,以决定不同道路上的信号灯时长。
2.交通流量检测模块:利用传感器或计数器等装置,实时监测不同道路上的车辆数量,并将数据传输给交通信号灯控制模块。
3.紧急情况检测模块:通过紧急情况检测器,实时检测救护车或警车的到达,并将信号传输给交通信号灯控制模块,暂停其他道路的交通以保障紧急车辆的通行。
4.人行道信号灯控制模块:根据人行道上的行人数量以及交通信号灯的变化,控制人行道信号灯的显示,保障行人的交通安全。
系统实现为了实现DSP技术在十字路口交通灯设计中的应用,我们可以按照以下步骤进行实施:步骤一:选择合适的DSP芯片根据实际需求和性能要求,选择适合的DSP芯片,具有足够的计算能力和IO接口以支持交通信号灯和其他传感器的连接。
步骤二:确定交通信号灯控制算法根据交通流量和紧急情况的检测数据,设计合适的控制算法,以控制交通信号灯的变化。
单片机及DSP课程设计报告专业:电子信息工程班级:姓名:学号:指导教师:时间:一.摘要十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。
因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给予技术革新。
随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。
本系统采用单片机8051为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统(8255)、交通灯状态显示系统、LED数码显示系统、紧急情况中断系统等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时、更改计时常数、紧急事故处理等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序、按键扫描等。
经过整机调试,实现了对十字路口交通灯的模拟。
关键词:8051 8255 LED 数码管交通灯程序单片机二.设计任务和要求2.1设计任务:设计用单片机控制的十字路口交通灯系统,可以控制延时时间以及实现在交通事故时道口封锁、单方向通行的状态。
2.2设计要求:(1)设计接口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接图。
(2)编写程序实现下列功能:用红、绿、黄三支共两组发光二极管表示交通信号灯,利用单片机模拟有时间显示的定时交通信号灯控制管理。
信号灯的变化规律可如下:①放行线:绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。
②禁示线:红灯亮禁止30秒,然后绿灯亮放行。
③同时用2位数码管进行30秒钟递减时间显示。
(3)当有紧急事故时,封锁路口,当有特殊情况时可以单方向通过。
基于DSP实现道路交通灯控制系统设计道路交通灯控制系统是现代城市中的重要组成部分,它通过使用数字信号处理(Digital Signal Processing,DSP)技术,能够在不同的交通情况下实现自动化的交通信号控制。
本文将以DSP技术为基础,设计一种道路交通灯控制系统,并详细介绍其实现原理和设计步骤。
首先,我们需要明确系统的设计目标。
本文设计的道路交通灯控制系统旨在提高交通流畅性、减少交通拥堵、优化交通信号时长,并提高城市交通系统的效率和安全性。
设计步骤如下:(1)采集交通流量数据。
为了准确地控制交通信号灯的时长和变化,我们需要实时地获得各个道路的交通流量数据。
这可以通过在道路上安装传感器,如车辆、摄像头、雷达等,来检测交通流量和车辆速度信息。
然后,将这些数据传输给DSP系统进行处理和分析。
(2)信号处理和分析。
DSP系统将采集到的交通流量数据进行处理和分析,通过对交通数据的统计和分析,可以准确地估计出各个道路的交通状况,并预测未来一段时间内的交通流量。
这些分析结果将用作交通信号灯控制的依据。
(3)交通信号灯控制算法。
基于分析得到的交通数据,我们可以设计一种控制算法来自动化地控制交通信号灯的时长和变化。
这个算法可以根据交通流量来动态地调整不同方向的交通信号灯的时长。
例如,在交通繁忙时,可以适当延长绿灯亮起的时间,从而提高车辆通过的效率。
(4)控制信号输出。
根据控制算法的结果,DSP系统将输出控制信号,控制交通信号灯的时长和变化。
这个信号可以通过控制器直接控制交通信号灯的开关,使交通信号灯能够根据实际交通状况及时地调整和变化。
(5)实时监测和反馈。
为了保证交通信号灯控制系统的稳定性和可靠性,需要实时监测交通信号灯的状态和交通流量,在需要的时候进行调整和反馈。
这可以通过在交通信号灯上安装传感器,并将监测到的数据传输给DSP系统进行实时监测和分析。
通过以上设计步骤,基于DSP实现的道路交通灯控制系统能够自动化地根据实际交通状况来调整交通信号灯的时长和变化,提高交通系统的流畅性和效率,减少交通拥堵,提高交通安全性。
本科生毕业(学位)论文论文题目:基于DSP的交通灯控制与设计学生姓名:庞文轩学号: 1415系别:电气信息系专业:电气工程及其自动化年级: 11级电气工程指导教师:张恒时间:2015年5月摘要数字信号处理(Digital Signal Processing,简称DSP)就是用数值计算的方式对信号进行加工的理论和技术,是一门涉及而又广泛应用于许多领域的学科。
数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波,执行转换或提取信息,从而处理现实信号。
这项技术在二十世纪六十年代从校园中兴起,到七十年代才由计算机实现部分实时处理,而多用于八十年代前后的高尖端领域。
陆续有公司设计出适合于DSP处理技术的处理器。
在过去的二十年中,数字信号处理技术飞速发展,在许多领域得到广泛的应用。
本设计是基于DSP原理,使用ICETEK-VC5509-A实验箱设计交通灯控制系统软硬件系统,同时利用DSP实验箱显示控制模块发光二极管的亮灭模拟十字路口交通信号,同时考虑紧急情况处理,模仿紧急情况发生时交警手动控制,利用TMS320VC5509DSP片上定时器定时产生时钟计数,再利用计数对应具体时间,设计模拟实际生活中十字路口交通灯。
【关键词】:DSP;TMS320VC5509;交通灯控制;发光二极管AbstractDigital Signal Processing is the theory and technology of signal processing by numerical calculation. It is a discipline that involves and is widely used in many fields .The purpose of digital signal processing is to measure or filter the continuous analog signal of the real world. In addition it can perform conversion or extract information to process the real signal. The technology emerged from the campus in the sixty's in twentieth Century, by the seventy's by the computer to achieve real-time processing. DSP used for high - point areas in eighty’s. One after another, the company has been designed for DSP processing technology processor. Over the past twenty years, the Digital Signal Processing technology had a rapid development and had a widely used in many areas. This design is based on DSP, operate atICETEK-VC5509-A experiment box to achieve the aim of controlling the software and hardware system. At the same time, the traffic signal of the traffic signal is simulated by the light of the DSP experimental box. We also consider processing emergency and imitate manual control by policeman when emergency happens. It can produce clock count by timer on TMS320VC5509DSP.And we can correspond the actual time by using count to design simulation of real life crossroads traffic lights. [Key Words]: DSP, TMS320VC5509, Traffic Light Control, LED目录1.绪论 (6)2.课程设计的目标 (7)2.1研究背景 (7)2.2 设计目的 (7)2.3 交通灯控制要求 (8)3.课程设计总体方案 (10)3.1 设计流程图 (10)3.2 系统工作原理 (10)4.DSP芯片介绍 (11)4.1 DSP芯片的特点 (11)4.2 DSP芯片的分类 (12)4.3 DSP芯片的选择 (12)4.4 所用DSP芯片介绍 (14)5.系统硬件设计 (15)5.1硬件组成 (15)5.2硬件各模块设计 (15)5.2.1 通用定时器部分 (15)5.2.2 时钟部分 (16)5.2.3 计数器部分 (16)5.2.4 JTAG插头部分 (16)5.2.5 存储空间部分 (17)5.2.6 I/O寄存器部分 (17)6.系统调试 (17)6.1电源调试 (17)6.2 Emulator调试 (18)6.3 USB驱动程序 (19)6.4 软件设置 (20)6.5程序运行 (22)6.6 系统联调 (22)7.软件部分设计 (24)7.1 总体设计流程 (24)7.2 时钟发生器 (24)7.2.1 时钟工作模式 (24)7.2.2 时钟模式的初始化设定 (24)7.3 信号灯控制模块 (24)7.4 通用定时器 (30)8.致谢 (32)参考文献 (33)附录............................................................................. 错误!未定义书签。
D S P课程设计交通灯控制设计报告IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】《D S P器件及应用》课程设计报告题目:基于DSP的交通灯控制系统的设计专业:电子信息工程班级:大探131班2016年6月28日评分表小组成绩:基于DSP的交通灯控制系统的设计ThedesignoftrafficlightcontrolsystembasedonDSP摘要随着计算机技术、网络技术的、通讯技术的飞速发展,这个世界已经步入了信息时代。
作为世界上最大的发展中国家,中国人的生活方式发生了巨大的变化。
经济在高速发展,城市化进程在不断加快,车辆猛增,城市交通问题成为一个日益引起人们关注的问题。
人、车、路三者关系的协调,成为交通管理部门需要解决的当务之急。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
如何采用合适的控制方法,最大限度利用好城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,成为交通运输管理和城市规划部门需要解决的问题之一。
数字信号处理器(DSP,即DigitalSignalProcessor)是进行数字信号处理的专用芯片,是伴随着微电子学、数字信号处理技术、计算机技术的发展而产生的新器件。
由于它特殊的结构设计,可以把数字信号处理中的一些理论和算法实时实现,因而在计算机应用领域中得到了广泛的使用。
本报告提出了基于DSP的交通灯控制系统的设计。
关键词:数字信号处理器(DSP),交通灯控制系统,三色灯目录1引言1.1课题背景1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
毕业设计(论文)基于DSP的交通灯控制系统设计与实现姓名系别、专业计算机科学系、通信工程导师姓名、职称完成时间目录摘要 (I)ABSTRACT ........................................................................................................ I I 1绪言 .. (1)2DSP与VISUAL C++技术简介 (1)2.1DSP概述 (1)2.2TMS320CF2812DSP结构以及组成 (3)2.3DSP的开发流程 (4)2.4C++语言 (6)3总体设计方案 (8)3.1系统功能描述 (9)3.2系统设计流程图 (10)3.3硬件设计 (11)3.4软件设计 (13)4系统测试 (20)4.1DSP系统测试环境 (20)4.2程序的调试 (23)4.3系统测试结果 (23)5总结 (26)参考文献 (27)致谢 .................................................................................. 错误!未定义书签。
摘要数字信号处理(Digital Signal Processing,DSP),是20世纪60年代前后发展并广泛应用于许多领域的学科。
20世纪70年代以来,随着大规模集成电路(LSI)和超大规模集成电路(VLSI)及微处理器技术的迅猛发展,数学信号处理的理论和技术得到长足发展,使其在数字通信、雷达、遥感、声纳、语音合成、图像处理、测量与控制、多媒体技术、生物医学工程及机器人等各个领域都得到广泛的应用。
交通拥堵在我国的大部分城市特别是大城市一直是一个难以解决的问题,也成为了困扰我国城市发展的一个大问题。
所以本设计是基于DSP原理设计的交通灯控制系统,采用的是软硬件结合的方法。
在硬件上利用TI公司德州仪器生产的用于工业自动控制TMSC320F2812系列的DSP芯片,四组发光二极管,在软件上使用CCS集成开发环境,在此环境中用C语言编写定时器程序来控制发光二极管的亮灭情况以达到模拟十字路口的交通灯,从而管理十字路口车辆的秩序,使交通畅通无阻。
用DSP的GPIO口实现控制交通灯1.1实验目的(1)熟悉使用ICETEK–F2812-AE评估板控制ICETEK-CTR上交通灯的方法。
练习自主独立的设计,实现理论和实践的统一,提高自我动手能力。
(2)掌握TMS320F2812DSP定时器的使用和编程。
(3)掌握TMS320F2812DSP外中断的使用和编程。
(4)学习复杂控制程序设计思路。
(5)利用DSP开发环境CCS C2000对源程序文件进行编译、链接、装载调试,以完成基本的DSP项目文件设计。
(6)通过此次课程设计,学习DSPF2812芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。
1.2实验总体方案本次设计过程中主要利用了F2812的通用I/O来实现对东西南北方向红绿灯亮灭的控制,以及数码管显示的控制。
而实现定时的操作主要通过定时器0中断调用来实现。
硬件设计的总框图如下:1.3实验原理1.2.1 F2812中GPIO的介绍F2812有多达56个通用数字量输入输出端口(GPIO),其中绝大部分是通用I/O和专用功能复用引脚。
数字量I/O端口模块采用一种灵活配置的方法控制复用引脚功能。
GPxMUX寄存器:选择F2812的引脚操作模式。
GPxDIR寄存器:配置数字量I/O的方向。
GPxSET寄存器:对数字量进行置位。
GPxDAT寄存器:独立读/写I/O信号。
GPxQUAL寄存器:消除数字量I/O引脚的噪声信号。
GPxCLEAR寄存器:对数字量进行清零。
1.2.2定时器0及其中断介绍F2812器件上有3个32位的CPU定时器(TIMERO/1/2)。
定时器1和2留给实时操作系统DSP/BIOS使用,只有定时器0可以在应用程序中使用。
若处理器采用30MHz的外部时钟经过锁相环10/2倍频之后,系统时钟工作在150MHz,一旦定时器被使能,定时器时钟经过与预定标记数器递减计数,预订标计数器产生下溢之后向定时器的32位计数器借位。
1 引言 (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原理设计交通灯控制系统软硬件系统,利用发光二极管亮灭模拟交通信号,数码管倒计时时间,利用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原理及应用课程设计交通灯综合控制学院电气信息工程专业电子信息工程班级学号分组成员指导教师2013 年 6 月目录1引言 (1)2课程设计的目标 (2)2.1课程设计的背景 (2)2.2设计要求 (2)2.3设计思路简介 (2)2.4交通灯控制要求 (3)2.5交通灯模拟 (3)2.6计时 (4)2.7紧急情况 (4)2.8程序设计 (4)3DSP定时器的算法原理 (6)3.1CPU定时器的原理 (6)3.2CPU定时寄存器原理 (6)4系统程序设计 (7)4.1流程图 (7)4.2试验程序 (7)5心得体会 (18)1引言随着计算机和信息技术的飞速发展数字信号处理技术得到迅速的发展。
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 只,分为东西南北四组、红黄绿三色)的亮灭实现交通信号的模拟。
发光二极管的控制方法可参见第二部分、第二章、二、2。
2.6计时使用TMS320VC5416DSP 片上定时器,定时产生时钟计数,再利用此计数对应具体时间。
定时器控制及中断编程可参考实验3.3 程序。
2.7紧急情况利用ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,模拟突发情况。
外中断编程控制可参考实验3.4 程序。
2.8程序设计根据设计要求,由于控制是由不同的各种状态按顺序发生的,我们可以采用状态机制控制方法来解决此问题。
这种方法是:首先列举所有可能发生的状态;然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制。
对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成。
时钟计数:采用250ms 一次中断进行累加计数。
表格 1其中,正常顺序每112 秒(计数值448)为一个循环,状态“*”为非顺序状态。
这样,只要根据计数值就可确定当前状态,根据状态再分情况处理。
对于计数显示,当处于状态1、5、*中时需要进行倒计时,需要计算在此状态中的计数值增量,根据增量判断是否更新计数显示。
3DSP定时器的算法原理3.1CPU定时器的原理本次设计主要用的是F2812器件上的3个32位CPU定时器(TIMER0/1/2)。
其中定时器1和定时器2预留给实时操作系统使用(如DSP-BIOS),只有定时器0用户可以在应用程序中使用。
定时器功能框图如下:3.2CPU定时寄存器原理定时器在工作过程中,首先把周期寄存器(PRDH:PRD)的值装入32位计数寄存器。
计数寄存器根据SYSCLKOUT时钟递减计数。
当计数寄存器等于0时,定时器中断输出产生一个中断脉冲。
(1)定时器计数寄存器(TIMERxTIM和TIMERxTIMH)(2)定时器控制寄存器(TIMERxTCR):使能中断,定时功能;(3)定时器周期寄存器(TIMERxPRD):符合条件则周期性重新装载并保存周期值(4)定时器预定标寄存器(TIMERxTPR和TIMERxTPRH):控制多久减1。
4系统程序设计4.1流程图图4-1实验程序流程图图4-2设计总流程图设计总流程图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 port8004#define CTRLA port8005#define CTRLR port8007void InitDSP(); //void表示此函数为空类型,执行此函数后不产生函数值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,0x92,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 ( nTimeCount<nStatusNSGreenEWRed ) nNowStatus=statusNSGreenEWRed;else if ( nTimeCount<nStatusNSFlashEWRed ) nNowStatus=statusNSFlashEWRed;else if ( nTimeCount<nStatusNSYellowEWRed ) nNowStatus=statusNSYellowEWRed;else if ( nTimeCount<nStatusNSRedEWYellow ) nNowStatus=statusNSRedEWYellow;else if ( nTimeCount<nStatusNSRedEWGreen ) nNowStatus=statusNSRedEWGreen;else if ( nTimeCount<nStatusNSRedEWFlash ) nNowStatus=statusNSRedEWFlash;else if ( nTimeCount<nStatusNSRedEWYellow1 ) nNowStatus=statusNSRedEWYellow;else if ( nTimeCount<nStatusNSYellowEWRed1 ) nNowStatus=statusNSYellowEWRed;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); //满足条件,取0x49地址的值,否则,取0x48的值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);}}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,设置运行速度=8MHzvoid InitDSP(){REGISTERCLKMD=0; // 复位PLLREGISTERCLKMD=0x1007; // 速度设置=16MHz}// 设置定时器参数、允许中断void InitTimer(){unsigned int k;asm(" ssbx INTM"); // 关中断,进行关键设置时不许打扰// 设置通用定时器k=PMST; // 设置PMST寄存器PMST =k&0xff; // 中断向量表起始地址=80HIMR = 0x0c; // 使能TINTTCR = 0x41f; // 预分频系数为16TIM = 0; // 时钟计数器清0PRD = 0x0f423; // 周期寄存器为0ffHTCR = 0x42f; // 复位、启动IFR = 0x0c; // 清中断标志位port3004=0; // 使能XINT2asm(" rsbx I NTM"); // 开中断}// 初始化ICETEK-CTR板上设备void InitICETEKCTR(){int k;CTRGR=0; // 初始化ICETEK-CTRCTRGR=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=LCDCMDVERADDRESS;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<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}5心得体会这次DSP课程设计前前后后一共用了一周左右的时间,期间也遇到了很多的困难,主要是对DSP的中断不够熟悉,以及对课上老师讲过的知识点的掌握还不够深刻,所幸通过查阅大量的资料,以及同老师同学的讨论,最终问题得以顺利解决,收获颇丰,有一种柳暗花明的感觉。