ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:245.62KB ,
资源ID:11665291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11665291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于某DSP实现道路交通灯控制系统设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

2、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 t

3、hrough 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

4、 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 引言交通是经济、社会发展的基础性产业,是社会、经济活动中人流、物流、资金流和信息流的主要流动方式。现代社会中,如果

5、没有高效运转的交通运输体系,就不可能有经济的持续发展。然而,随着社会经济的发展,机动车辆迅速增加,人们在赚取由机动车辆所带来的巨额利润以及充分享受汽车带来的巨大便利的同时,越来越被交通拥堵、交通事故频发、环境污染加剧和燃油损耗上升等诸多问题所困扰。随着交通的不断发展和汽车化进程的加快,交通拥挤加剧,交通事故频发,交通环境恶化,已经成为引人注目的城市问题之一。交通问题不仅在发展中国家,就在发达国家也是一个令人困扰的严重问题。众所周知,缓解交通拥挤的最直接和最有效办法是提高路网的通信能力。但无论哪个国家的大城市,不可能无限制地修建道路,不论是资金因素还是土地因素,都限制了道路的无节制增长。因此,无

6、限制地修建道路难满足日益增长的交通需求。与此同时,通过限制车辆增加削减交通需求也受到客观因素的制约而无法取得满意的结果。事实上,由于交通系统是一个相当复杂的大系统,无论单独从车辆方面考虑还是从道路方面考虑,都很难从根本上解决问题。道路交通系统是一个地区、一个城市的主要组成部份,这个系统的运行状况如何,直接反映了一个地区、一个城市的现代化管理水平。在这一系统中,道路不仅仅是易变化的部分,而其它组成部分则存在着较大的可变性和随机性。只有对这一系统的组成及其运行机理进行科学客观的分析研究,对能制定出科学有效的管理和控制对策,从而保障系统的有效运行。2项目设计实现功能2.1交通灯控制要求交通灯分红黄绿

7、三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行,黄灯表示警告,红灯禁止通行,灯光闪烁表示信号即将改变。计时显示:液晶屏幕上88 点阵显示0-9 计数。 正常交通控制信号顺序:正常交通灯信号自动变换: 南北方向绿灯,东西红灯(20 秒)。 南北方向绿灯闪烁。 南北方向黄灯。 南北方向红灯,东西方向黄灯。 东西方向绿灯(20 秒)。 东西方向绿灯闪烁。 东西方向黄灯。 返回循环控制。紧急情况处理:模仿紧急情况(重要车队通过、急救车通过等)发生时,交通警察手动控制 当任意方向通行剩余时间多于10 秒,将时间改成10 秒。 正常变换到四面红灯(20 秒)。 直接返回正常信号顺

8、序的下一个通行信号(跳过闪烁绿灯、黄灯状态)。2.2 液晶显示器控制本次设计使用ICETEK-F2812-A板,ICETEK-F2812-A是一块以TMS320F2812DSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。液晶显示模块的访问、控制是由2812DSP对扩展扩展接口的操作完成。控制扩展口的寻址:命令控制扩展接口的地址为0x108001,数据控制扩展接口的地址为0x108003 和0x108004,辅助控制扩展接口的地址为0x108002。可以观察到液晶显示从0到9的计数。灵活使用控制字,可以实现复杂多变的显示。当使用点阵图形显示时

9、需要在 DSP 内存中建立图形存储缓冲;适当更新显示可取得动画效果。在实际生活中观察点阵显示的霓虹灯广告、交通指示牌、报站牌等领会这种控制的具体应用。3 项目实现方案3.1项目设计整体思路 根据DSP的硬件中断、定时器、I/O访问原理。用定时器定时。用I/O口控制红绿黄灯的开关,用硬件中断模拟紧急情况发生(如:急救车,消防车)。有紧急情况发生,两向全红,以便让紧急车通过。紧急车通过后,交通的恢复中断前的状态。3.2设计原理3.2.1 CPU定时器原理 F2810/F2812芯片内部有3个32位CPU定时器(TIMER0/1/2),其中定时器1和定时器2预留给实时操作系统使用(如 DSPBIOS

10、),只有CPU定时器0用户可以在应用程序中使用。定时器功能框图如下: 在F281x芯片中,向CPU申请中断的定时器中断信号(TINT0、TINT1及TINT2)连接方式如下图:为保证定时器正常,需要进行一下操作:首先将计数值写入32位计数寄存器(TIMH:TIM)内,该计数值放在周期寄存器(PRDH:PRD)中;然后按SYSCLOCKOUT的频率对计数值进行减计数。当计数器的值计到0时,定时器会产生一个中断脉冲输出。3.2.2 DSP外设中断扩展模块 2812的CPU为了能够及时有效的处理好各个外设的中断请求,设计了一个专门处理外设中断的扩展模块(the Peripheral Interrup

11、t Expansion block),叫做外设中断控制器PIE,它能够对各种中断请求源(例如来自于外设或者其他外部引脚的请求)做出判断以及相应的决策。PIE 可以支持96个不同的中断,这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到CPU内核的12 条中断线中的某一条上(INT1-INT12)。PIE 目前只使用了96 个终端中的45 个,其他的等待将来的功能扩展。2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。3.2.3 发光二极原理显示/控制模块上的发光二极管是由连接在F2812

12、DSP 扩展扩展接口上的寄存器EWR和SNR控制的。这两个寄存器均为6 位寄存器,其位定义见下表:两个寄存器的地址均映射到 F2812DSP 的扩展空间,地址为108007H,DSP 通过对扩展区域该地址的写操作来修改两个寄存器上各位的状态,当寄存器某位取1值时,相应指示灯被点亮,取0值则熄灭。当写入108007H 的数据(8 位有效值)的高两位为00时,数据的低6 位将写入EWR 寄存器;当高两位的值为01时,写入SNR 寄存器。3.2.4 TMS320F28x DSP 的I/OTMS320F28x DSP 的I/O 空间大部分被保留用于外部扩展。在扩展时一般将带有控制能的寄存器或分离地址访

13、问的存储单元的地址映射到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 端口的语句较为简单。3.2.5 液晶显示器控制原理显示开关:0x3f 打开显示;0x3e 关闭显示;设置显示起始行:0x0c0+起始行取值,其中起始行取值为

14、0 至63;设置操作页:0x0b8+页号,其中页号取值为0-7;设置操作列:0x40+列号,其中列号为取值为0-63;写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制扩展接口即可。液晶显示器与DSP 的连接:数据信号的传送:由于液晶显示模块相对运行在8MHz 主频下的DSP 属于较为慢速设备,连接时需要考虑数据线上信号的等待问题;电平转换:由于DSP 为3.3V 设备,而液晶显示模块属于5V 设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。4 程序设计4.1 程序总体设计1 根据设计要求,由于控制是由不同的

15、各种状态按顺序发生的, 我们可以采用状态机制控制方法来解决此问题。这种方法是: 首先列举所有可能发生的状态; 然后将这些状态编号, 按顺序产生这些状态; 状态延续的时间用程序控制,对于突发情况, 可采用在正常顺序的控制中插入特殊控制序列的方式完成。2 定时器的设定, VC5509A 定时器是由一个4 位的预定标值PSC 和一个16 位的减法计数的计数器TIM 组成。在实际工作中首先是每经过一个周期PSC 值减1, 一直减到0后TIM 开始减1, 直到减到0 后的第一个周期, 计数器会向CPU 发出中断请求。3 突发事件设置, 在实际交通过程中会出现突发状况, 比如说有救护车或者110 紧急车要

16、通过, 此时就可以通过小键盘进行突发状况模拟。通过按键进入到中断服务子程序, 相当于原来先要通过的车辆在突发状况来了以后就要先让紧急车辆通过。4.2 程序编写(见附页)5 心得体会随着信息技术的飞速发展,数字信号处理技术已逐渐发展成为一门主流技术,它在电子信息,通信,软件无线电,制动控制,仪表仪器,信息家电等高科技领域得到了越来越广泛的应用。数字信号处理器由于运算速度快,具有可编程特性和接口灵活的特点,使的它在许多电子产品的研制,开发与应用中,发挥着越来越重要的作用。采用DSP 芯片来实现数字信号处理系统更是当前的发展趋势。通过做基于DSP 的交通灯的设计,进一步熟悉DSP 芯片及其开发环境C

17、CS的功能。同时对当前交通控制的现状有了进一部的了解。为以后的学习打下了坚实的基础。随着科学技术的发展及各门学科的相互融合,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 *(

18、int *)0x26#define IMR *(int *)0x0#define IFR *(int *)0x1 #define PMST *(int *)0x1d #define nStatusNSGreenEWRed 160#define nStatusNSFlashEWRed 184#define nStatusNSYellowEWRed 200#define nStatusNSRedEWYellow 216#define nStatusNSRedEWGreen 376#define nStatusNSRedEWFlash 400#define nStatusNSRedEWYellow1

19、 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 LC

20、DCMDTURNON 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;ioport unsigned int port8002;ioport unsigned int port8003;ioport unsigned int po

21、rt8004;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 port8007void InitDSP();vo

22、id 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 uL

23、ightStatusEW,uLightStatusSN;unsigned int bHold;unsigned char ledbuf8,ledx8;unsigned char led40= 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;

24、unsigned char ledkey108= 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,

25、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=

26、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;nTimeC

27、ount=nSaveTimeCount;bHold=0; else if ( nTimeCountnStatusNSGreenEWRed ) nNowStatus=statusNSGreenEWRed; else if ( nTimeCountnStatusNSFlashEWRed ) nNowStatus=statusNSFlashEWRed; else if ( nTimeCountnStatusNSYellowEWRed ) nNowStatus=statusNSYellowEWRed; else if ( nTimeCountnStatusNSRedEWYellow ) nNowSta

28、tus=statusNSRedEWYellow; else if ( nTimeCountnStatusNSRedEWGreen ) nNowStatus=statusNSRedEWGreen; else if ( nTimeCountnStatusNSRedEWFlash ) nNowStatus=statusNSRedEWFlash; else if ( nTimeCountnStatusNSRedEWYellow1 ) nNowStatus=statusNSRedEWYellow; else if ( nTimeCount=0 & nWork20 & nWork30 & nWork40 ) uLightStatusSN=( (nWork1%nWork3)=0 & nWork20 & nWork30 & nWork40 ) uLightStatusEW=( (nWork1%nWork3)0 ) nWork2=20-nTimeCount/nWork1; if ( bHold ) if ( nWork210 ) nTimeCount=nWork1*10; nWork2=10; if ( nOldTimeCount!=nWork2 ) nOldTimeCount=nWork2; SetLEDA

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

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