1 绪论
十字路口交通灯在我们的日常生活中随处可见,它为繁忙的道路交通及人们的安全提供了较好的保障。然而,我们只知道交通灯在红、黄、绿三色之间交替更换来控制人车流量,去对其内部的工作原理及软硬件的设计了解很少,因此要通过此次简单道路交通灯控制系统软硬件设计来进一步研究交通灯的内部结构。最重要的是将学习到的DSP系统的组成与原理应用到交通灯的设计当中。
通过《DSP技术及应用》课程设计,使学生能将学到的DSP系统的组成与原理用到具体的实际系统中,加深对DSP系统的理解,是将该门课程与实际问题相连接的关键步骤。通过课程设计,能够提高学生分析问题,解决问题,从而运用所学知识解决实际问题的能力,并培养基本的,良好的系统软硬件设计等能力。
2 课程设计内容及要求
2.1 课题设计内容
DSP课程设计是对《数字信号处理》、《DSP原理及应用》等课程的较全面练习和训练,是实践教学中的一个重要环节。
通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的工作能力,掌握电子系统设计的一般方法。通过课程设计,基本技能的训练,如查阅设计资料和手册、程序的设计、调试等,提高学生分析问题、解决问题的能力。
本题目为急救车与十字路口交通灯的设计,目的是熟练掌握DSP定时器的控制、中断系统的应用以及程序的编写调试。
第1页 共25页
十字路口交通灯的设计
2.2 课程设计要求
1、南北、东西各三个灯(红、黄、绿);
2、南北、东西两向各有倒计时功能(各两位数码管显示); (1)南北绿灯、东西红灯,延时20秒 (2)南北绿灯闪3次、东西红灯(6秒) (3)南北黄灯、东西红灯(4秒) (4)南北红灯、东西绿灯(20秒) (5)南北红灯、东西绿灯闪3次(6秒) (6)南北红灯、东西黄灯延时3秒(4秒) (7)回到(1)
3、功能键:(1)启动开关 (2)急救灯的启动开关 4、启动开关按下时,交通灯开始运行,再按一下表示停止。
5、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。
3 课程设计总体方案及原理
3.1课程设计总体方案
3.1.1 设计思路
根据DSP的硬件中断、定时器、I/O访问的原理。用定时器定时,用I/O口控制红绿黄灯的开关,用硬件外部中断模拟急救车的到达。有急救车到达时,两向为全红,以便让急救车通过。急救车通过后,交通灯恢复硬件中断前的状态。触发开关(红色按纽)为中断申请,表示有急救车通过。在实验箱上交通灯模块由高8位数据线控制:南北红灯D9、D11为高,南北黄灯D9、D11、D13、D15为高,南北绿灯D13、D15为高,东西红灯D8、D10为高,东西黄灯由D8、D10、D12、D14为高,东西绿灯D12、D14为高。交通灯模块的I/O地址:0x5008h
第2页 共25页
十字路口交通灯的设计
3.1.2 设计流程图
结束 开始开始 保护现场 全部红灯 延时10秒 恢复现场 保护现场全部红灯延时10秒恢复现场结束
图3.1 中断程序服务图
第3页 共25页
十字路口交通灯的设计
开始 初始化DSP 全部红灯延时1秒 南北绿灯、东西红灯,延时20秒 南北绿灯闪3次,东西红灯亮 南北绿灯闪3次,东西红灯亮 南北黄灯,东西红灯 南北红灯、东西绿灯 南北红灯,东西绿灯闪3次 南北红灯,东西黄灯延时3秒 图3.2 设计总流程图
第4页 共25页
十字路口交通灯的设计
开始DSP初始化关所有显示查表往端口(C000H)送段码(显示数据)和位码输出段码数据 输出位选通信号延时位码向左移一位指向下一个显示数据送八次没有是返回图3.3 数码管显示流程图
第5页 共25页
十字路口交通灯的设计
3.2课程设计原理
3.2.1 系统工作原理
本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。信号灯受芯片中输出高低电平的控制。当锁存器I/O口输出为高电平时,他所驱动的信号灯即发光二极管就会亮起来。定时模块采用硬件定时和软件定时相结合的方法,用DSP定时/计数器定时100ms,再用软件计时实现所需的定时。发光二极管模块由DSP控制发光二极管来实现。数码管显示模块由实验平台上的LED显示模块实现。紧急中断模块是由单脉冲发生单元和DSP中断控制器组成。本次设计中东西南北路口的红灯均亮1秒,信号灯开始工作,东西红灯亮20秒,在东西红灯亮的同时,南北绿灯亮20秒。到20秒时,东西绿灯闪亮,绿灯闪亮的周期为2秒(亮1秒,灭1秒)。绿灯闪亮3次后灭,东西黄灯亮并维持4秒。到4秒时,东西黄灯灭,东西红灯亮,同时南北红灯灭,南北绿灯亮。东西红灯亮维持20秒,南北绿灯亮维持20秒,到20秒时,南北绿灯闪亮3次后灭,南北黄灯亮,并维持4秒。到4秒时,南北黄灯灭,南北红灯亮,同时东西红灯灭,东西绿灯亮。紧接着开始第二周期的动作,以后周而复始的循环。
3.2.2 系统工作状态
状态一:南北绿灯、东西红灯,延时20秒,20秒后南北绿灯闪3次,东西红灯延时6秒;如图所示
图3.4 状态一
状态二:南北黄灯、东西红灯,持续6秒;
第6页 共25页
十字路口交通灯的设计
图3.5 状态二
状态三:东西绿灯、南北红灯,延时20秒,20秒后东西绿灯闪3次,南北红灯持续6秒;
图3.6 状态三
状态四:东西黄灯、南北红灯,持续6秒;
图3.7 状态四
第7页 共25页
十字路口交通灯的设计
状态五:紧急状态下东西南北均亮红灯;
图3.8 状态五
4 设计步骤及过程
4.1 硬件的选择
4.1.1主控制器的选择
采用TI公司DSP芯片TMS320VC5402。C5402采用改进的Harvanl处理结构,指令流水线操作。计算和处理速度很高,系统单指令周期可达到10ns。在片内提供16k的RAM用作程序和数据存储,其最大可扩展寻址空间为1M字节。C5402提供的McBSP串口和DAM数据传送方式极大地方便它在通信领域的应用和开发。如下图所示:
第8页 共25页
十字路口交通灯的设计
图4.1 TMS320VC5402
4.1.2 电压转换芯片的选择
由于TMS320VC5402的工作电压为3.3V,而外部存储器的工作电压为5V,用74LVC4245A完成3.3V到5V的电平转换。其功能是完成对芯片内部的Flash的编程工作,当程序在PC机上调试通过后,通过此接口就可以把程序完整地下载到Flash中去。
第9页 共25页
十字路口交通灯的设计
图 4.2 74LVC4245A
4.1.3 锁存器的选择
本次设计通过主控制器产生时钟计数,并将锁存信号提供给锁存器,所以选择TTL带公共时钟复位的74LS273锁存器。是带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。 CPU 的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK 端相连。1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;
(2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.
第10页 共25页
十字路口交通灯的设计
图4.3 74LS273
4.1.4 译码器的选择
选择常用的74LS138译码器,译码产生8种输出结果,进而控制数码管的显示。74LS138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其工作原理如下:
当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
第11页 共25页
十字路口交通灯的设计
图4.4 74LS138
4.1.5 数码显示输出模块
数码管显示采用了四位一体的数码管。其显示由DSP的高八位数据线控制
位码显示,低八位数据线控制段码显示。其数据经过了74HC273锁存,图中锁存信号是LEDALE,清零信号是LEDCS,这两信号经过CPLD逻辑组合而来,逻辑功能描述如下:
LEDALE<=ios or not a15 or not a14 or a2 or a1 or a0;-- DSP采用I/O方式访问数码管,所以DSP的控制线IS(此为IOS)和地址线组合来锁存送往数码管的数据,其地址C000h,LEDCS<=rst;--DSP的复位RS(此写成RST)来对锁存器清零。
第12页 共25页
十字路口交通灯的设计
图4.5 数码显示输出模块
本实验也是采用CPLD(EPM7128)给DSP扩展了一个I/O口,来完成DSP对I/O口的访问。本实验是由DSP通过IO方式对数码管进行操作,即向数码管送数据,高8位数据线D8~D15为数码管的段码,低8位数据线D0~D7为数码管的位码,此I/O端口地址是C000h,该实验中要求熟练运用DSP的各种指令,能使显示数据出现左移或右移等。硬件原理图和I/O端口地址译码请参考1.1.7输入输出模块中的数码显示输出模块。
第13页 共25页
十字路口交通灯的设计
图4.6 数码显示硬件图
4.1.6 指示灯输出模块
图4.7 指示灯输出模块
DSP的低八位数据线送往锁存器,然后由指示灯来显示。图中的LEDCS1是锁存器74HC273的清零信号,LEDCS2是锁存器的锁存信号,这两信号经过CPLD逻辑组合而来,逻辑功能描述如下:
LEDCS1<=rst;-- DSP的复位RS(此写成RST)来对锁存器清零
LEDCS2<=ios or not a15 or not a14 or a2 or not a1 or a0;-- DSP采用I/O方式访问指示灯,所以DSP的控制线IS(此写IOS)和地址线组合来锁存送往指示灯的
第14页 共25页
十字路口交通灯的设计
数据,其地址C002h。其硬件图如下:
图4.8 指示灯输出模块硬件图
4.2软件的使用
本次设计主要使用的是CCS软件,CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。
CCS有两种工作模式,即:软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
4.2.1 CCS文件名介绍
在使用CCS前,应该先了解以下软件的文件名约定(在编写程序时最好在某盘根目录下建立一文件夹,将所有的用户文件放置该文件夹中,建议用字母来作为所有文件的文件名,而不要用汉字或数字):
project.pjt CCS定义的工程文件 program.c
C 程序文件
program.asm 汇编语言程序文件 filename.lib 库文件 project.cmd 连接命令文件 program.obj 编译后的目标文件
program.out 可在目标DSP上执行的文件,可在CCS监控下调
第15页 共25页
十字路口交通灯的设计
试/执行
project.wks 置。
programcfg.h54 programcfg.s54 program.cdb
头文件 汇编原文件
CCS的设置数据库文件,是使用DSP/BIOS 工作空间文件,可以记录你的工作环境设
API必须的,其他没有使用DSP/BIOS API的程序也可以使用,当新建一个设置数据库时,会产生下面的文件。 4.2.2 汇编源程序(.asm)格式
C5X的程序以段(Section)为基本单元构成,一个程序文件由若干段构成,每段又由若干语句(Statement)构成。C5X的程序分为初始化(Initialized)段和未初始化(Uninitialized)段两大类。初始化段可以是程序代码,也可以是程序中用到的常量、数据表等。我们可以从程序下载的角度来理解,初始化就是需要程序空间写数据(代码或数据)的段,如同初始化程序空间一样。而未初始化段为变量,在下载时,这些变量是没有值的,所以无需向程序空间写,只需留出一些空间以便在运行时存放变量的值,因此这段空间在程序未运行前是没有初始化的。段的名称和属性可以由用户自定义,如果用户不定义,汇编器将按默认的段来处理。C5X汇编器默认的段有3个:“.text”、“.data”、“.bss”。其中,“.text”为程序代码段,而“.data”为数据段,“.bss”为变量段,所以“.text”和“.data”是初始化段,而“.bss”是未初始化段,用户自定义用“.sect”和“.usect”两个汇编指示符来完成。其中“.sect”用于定义初始化段,“.usect”用于定义未初始化段,语法如下:
symbol .set “section-name” symbol .set “section-name”,length 4.2.3 COFF目标文件
TMS320C5X的汇编器和连接器都会生成公共目标文件格式( COFF,Common Object File Format )的目标文件。在本章中,将汇编器生成的文件称为COFF的目标文件,将连接器生成的文件称为COFF执行文件。目前,COFF目标文件格式已被广泛使用,因为它支持模块化(段)编程,能够提供有效灵活的
第16页 共25页
十字路口交通灯的设计
管理代码段和目标系统(Target System)存储空间的方法。
5 心得体会
在本次课程设计中,我们按照任务书的要求。在设计开始前我们对各个模块进行了详细的分析和设计准备工作,设计过程中,我们相互协调,积极参与完成各个技术实现的难点。前面几天就是在寝室学习和熟悉CCS软件,学到了很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。过程中也遇到了很多问题,不过及时的问老师解决问题,使我更加了解了DSP的原理。在自己有余的时间还帮助同学修改性能指标,通过这次设计,进一步加深了对DSP的了解,让我对它有了更加浓厚的兴趣。特别是当每一步成功时,心里特别的开心。将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟是第一次接触通信仿真,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
总的来说,这次十字路口交通灯的设计还是比较成功的,在设计中遇到了很多问题,最后在肖老师的辛勤的指导下,都一一克服,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师表示忠心的感谢!
第17页 共25页
十字路口交通灯的设计
参考文献
[1] 邹彦. DSP原理及应用[M]. 北京:电子工业出版社,2005.1.
[2] 戴明桢.TMS320C54xDSP结构、原理及应用[M].北京航空航天大学出版社,2001.8.
[3] 胡圣尧. DSP原理及应用[M].东南大学出版社,2008.7.
[4] 清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社,2004.1.
[5] 清源科技.TMS320C54x硬件开发教程[M].机械工业出版社,2003.1.
第18页 共25页
十字路口交通灯的设计
附录
MEMORY {
PAGE0: VECS:origin=0xff80,length=0x80 PROG:origin=0x1000,length=0x2000
PAGE1: DATA:origin=0x2000,length=0x1000 STACK:origin=0x3000,length=0x1000 }
SECTIONS {
.vectors:{}> VECSPAGE0 .text: {}>PROGPAGE0 .data: {}>DATAPAGE1 .stack: {}>STACKPAGE1 }
************************************************ * FileName:
ex8.asm *
* Description: 急救车与交通灯实验 * * Copyright(C) SanZhi Electronic, Author Zpin * ************************************************
.title \"ex8\"
第19页 共25页
十字路口交通灯的设计
.global _c_int00 .mmregs
LED_ADDR
STATUS0 STATUS1 STATUS2 STATUS3 STATUS4
.set 5008h
.set 00h .set 01h .set 02h .set 03h .set 04h
STA2_PRE_0 .set 05h STA2_PRE_1 .set 06h STA4_PRE_0 .set 07h STA4_PRE_1 .set 08h
CURRENT_STA
.data
.set 60h
;东西、南北 红红 绿红 黄红 红绿 红黄 空红 绿红 红空 红绿
;.word 0f00h,5a00h,5f00h,0a500h,0af00h,0a00h,5a00h,0500h,0a500h .word
0f000h,0a500h,0f500h,5a00h,0fa00h,0a000h,0a500h,5000h,05a00h
;.word
0C300h,9600h,0D700h,6900h,0EB00h,08200h,9600h,04100h,06900h
DELAY
.macro sec_tenth
;延时 sec_tenth/10 秒
STM sec_tenth-1,AR5
loop1? STM #09h,AR6 loop0? STM #49999,AR7
第20页 共25页
十字路口交通灯的设计
BANZ $,*AR7- BANZ loop0?,*AR6- BANZ loop1?,*AR5-
.endm
.sect \".vectors\"
rst: B _c_int00 NOP NOP
.space 15*4*16 int0: b bus_come NOP
NOP int1: nop nop nop
nop int2:
;b bus_come
nop nop nop nop
.space 13*4*16
.text
_c_int00 LD #0h,DP
STM #3000h,SP
第21页 共25页
十字路口交通灯的设计
SSBX INTM SSBX SXM
STM #07FFFh,SWWSR STM #01h,2Bh
;IO总线外部等待时间14个周期
STM #0h,CLKMD BITF CLKMD,#1h BC tst,TC
STM #1087h,CLKMD RPT #0FFh NOP
ST #0FFFFh,IFR ORM #0001h,IMR RSBX INTM
LD #40h,DP
LD STATUS0,T
;20MHz工作
tst
PORTW STATUS0,LED_ADDR DELAY #10
;全部红灯
;延时1秒
circle LD STATUS1,T ;nop ;nop ;nop ;nop
PORTW STATUS1,LED_ADDR ;nop
第22页 共25页
;南北红灯、东西绿灯
十字路口交通灯的设计
;nop ;nop ;nop
DELAY #200 STM #2h,BRC ;nop
;延时20秒
;nop ;nop ;nop RPTB flash1
;nop
;nop ;nop ;nop
LD STA2_PRE_0,T
;nop
;nop ;nop ;nop
PORTW STA2_PRE_0,LED_ADDR
;nop
;nop ;nop ;nop DELAY #3
LD STA2_PRE_1,T ;nop
;nop ;nop
第23页 共25页
十字路口交通灯的设计
;nop
PORTW STA2_PRE_1,LED_ADDR
;nop
;nop ;nop ;nop DELAY #3 flash1 NOP
;南北绿灯闪3次、东西红灯
LD STATUS2,T
PORTW STATUS2,LED_ADDR DELAY #30
;南北黄灯、东西红灯
;延时3秒
LD STATUS3,T
STM #2h,BRC RPTB flash2 LD STA4_PRE_0,T
PORTW STA4_PRE_0,LED_ADDR DELAY #3 LD STA4_PRE_1,T
PORTW STA4_PRE_1,LED_ADDR DELAY #3
;南北红灯、东西绿灯闪3次
PORTW STATUS3,LED_ADDR DELAY #200
;南北红灯、东西绿灯
;延时20秒
flash2 NOP
第24页 共25页
LD STATUS4,T
PORTW STATUS4,LED_ADDR DELAY #30
;南北红灯、东西黄灯
;延时3秒
十字路口交通灯的设计
B circle
bus_come
PSHM AR5 PSHM AR6 PSHM AR7
PORTW STATUS0,LED_ADDR DELAY #100
;急救车来,全部红灯
;延时10秒
ST T,CURRENT_STA
PORTW CURRENT_STA,LED_ADDR POPM AR7 POPM AR6 POPM AR5 RETE
;恢复现场
第25页 共25页
因篇幅问题不能全部显示,请点此查看更多更全内容