DSP交通灯课程设计_第1页
DSP交通灯课程设计_第2页
DSP交通灯课程设计_第3页
DSP交通灯课程设计_第4页
DSP交通灯课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、电子信息工程专业CDIO三级项目项目设计说明书(2011/2012学年第二学期)项目名称 : DSP应用系统 题 目 : DSP控制交通灯的显示 专业班级 : 电子信息工程09-1班 学生姓名 : 学 号: 指导教师 : 设计周数 : 2周 设计成绩 : 2012年7月6日 目 录一 设计目的.2二 系统分析.2 2.1设计要求.2 2.2设计思想.2三 总体设计.3 3.1系统框图设计.3 3.2总电路图设计.3 3.3最小系统图.4四 课程设计原理.4 4.1系统工作原理.4 4.2. 系统工作状态.4五 元器件选择.6 5.1所要元器件.6 5.2模块性能分析.7 521、TMS320F

2、2812 DSP芯片.7522、CD4511.7523、LED.9524数码管驱动电路.9525外扩电路.10六 运行描述.10七 软件设计.107.1程序流程图.127.2程序代码.13八 设计总结.17九 参考文献.17附录.18一、 设计目的DSP课程设计对我们DSP的学习有这非常重要的意义。(1)通过交通灯的设计,进一步加深、巩固学生所学专业课程DSP控制器及其应用的基本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。(2)熟悉使用TMS320F2812控制交通灯的方法。(3)利用DSP开发环境CCS C2000对源程序文件进行编译、链接、装载调试,以完成基本的DS

3、P项目文件设计。(4)通过此次课程设计,学习DSPf2812芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉Emulator方式下的程序调试规程,并能最终熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。二 系统分析21、设计要求2.1.1设计任务设计一个十字路口交通灯(带一个倒计时数码管),每个方向有三色(红、黄、绿);实现交通灯双向车道红绿灯切换功能、交通灯全亮功能、数码管全亮功能;保证每次切换倒计时9秒,且绿灯变红灯前2秒黄灯闪烁1次,并在此时熄灭绿灯。2.1.2设计要求用CCS2.2以上版本运行环境,ANSIC/C+语言编写;用DSPF2812B开发板调用GPIO

4、通用输入输出多用复用器进行调制;采用内部时钟实现计时功能;采用字模查询方式显示数字。22、设计思想根据DSP的硬件中断、定时器、I/O访问的原理,用定时器定时。2812的十个引脚,其中A口的六个引脚GPIOA0、GPIOA1、GPIOA2、GPIOA3、GPIOA4、GPIOA5控制二极管的状态,B口的四个引脚GPIOB0、GPIOB1、GPIOB2控制数码管的显示,二极管低电平有效,GPIO的端口均为输出,在实验箱上交通灯模块由高8位数据线控制:南北红灯D9、D11为高,南北黄灯D9、D11、D13、D15为高,南北绿灯D13、D15为高,东西红灯D8、D10为高,东西黄灯由D8、D10、D

5、12、D14为高,东西绿灯D12、D14为高。交通灯模块的I/O地址:0x5008h三、 总体设计3.1、系统框图设计该系统包括DSPF2812芯片,CD4511驱动器,首先对DSP进行初始化,等待中断,然后I/O口输出高电平驱动信号灯发亮,定时模块采用硬件定时和软件定时相结合的方法,用DSP定时/计数计时,再用软件实现所需的定时。CD4511驱动数码管DSPF2812 图3-1 系统框图信号灯 3.2、总电路图设计 图3-2 总体电路图其中s1s5为按键,R1R5对管脚起保护作用。该键盘为独立式键盘,分别和DSP芯片的GPIO管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接命令控制

6、扩展接口的地址为0X108001,数据控制扩展接口的地址为0X108003、0x108004,辅助控制扩展接口的地址为0X108002。因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。设置GPIO相应管脚为输入或输出模式,DSP芯片外接LCD作为输出,外接5个单按键作为输入。在程序中构建汉字字模,并能够使用查找法提取。3.3、最小系统图图3-3 DSP最小系统四、 课程设计原理4.1 系统工作原理 芯本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。信号灯受片中输出高低电平的控制。当锁存器I/O口输出为高电平时,他所驱动的信号灯即发光二极管就会亮起来。定

7、时模块采用硬件定时和软件定时相结合的方法,用DSP定时/计数器定时100ms,再用软件计时实现所需的定时。发光二极管模块由DSP控制发光二极管来实现。数码管显示模块由实验平台上的LED显示模块实现。紧急中断模块是由单脉冲发生单元和DSP中断控制器组成。信号灯开始工作,东西红灯亮9秒,南北绿灯亮9秒,到8秒时,东西黄灯亮一次,时间一秒;东西红灯亮维持9秒,南北绿灯亮维持9秒,到8秒时,南北黄灯闪一次,时间一秒。紧接着开始第二周期的动作,以后周而复始的循环。4.2. 系统工作状态状态一:南北绿灯、东西红灯,延时9秒;如图所示: 图4-1状态一状态二:南北黄灯、东西红灯,持续1秒;如图所示: 图4-

8、2 状态二状态三:东西绿灯、南北红灯,延时9秒;如图所示: 图4-3状态三状态四:东西黄灯、南北红灯,持续1秒;如图所示: 图4-4状态四返回状态一五、 元器件选择5.1 所要元器件表5-1 所需器件2812 DSP芯片 一个CD4511芯片 1个LED数字显示器 1个 电阻 13个 二极管 6个 导线 若干52、模块性能分析521、TMS320F2812 DSP芯片 2812的十个引脚,其中A口的六个引脚GPIOA0、GPIOA1、GPIOA2、GPIOA3、GPIOA4、GPIOA5控制二极管的状态,B口的四个引脚GPIOB0、GPIOB1、GPIOB2控制数码管的显示。 图5-1 F28

9、12部分引脚522、CD4511CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。CD4511是一片CMOS BCD锁存/7 段译码/驱动器,引脚排列如图2.2所示。其中a、 b、 c、 d 为 BCD 码输入,a为最低位。LT为灯测试端,加高电平时,显示器正常显示;加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1端应加高电平。另外 CD4511有拒绝伪码

10、的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。LE是锁存控制端,高电平时锁存,低电平时传输数据。ag是 7 段输出,可驱动共阴LED数码管。另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观 图3是 CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只 CD4511 和 LED 数码管即可。所谓共阴 LED 数码管是指 7 段 LED 的阴极是连在一起的,在应用中应接地。限流电阻要根据电源电压来选取,电源电压5V时可使用300的限流电阻。1 CD4511引脚图 图5-2

11、 CD4511 CD4511引脚功能介绍如下: BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。 LE:锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。A1、A2、A3、A4为8421BCD码输入端。 a、b、c、d、e、f、g为译码输出端,输出为高电平1有效。CD4511的工作原理CD4511的工作真值表如表5-2所示

12、表5-2 CD4511真值表输 入输 出LEBILIA3A2A1A4abcdefg显示XX0XXXX11111118X01XXXX0000000消隐01100001111110001100010110000101100101101101201100111111001301101000110011401101011011011501101100011111601101111110000701110001111111801110011110011901110100000000消隐01110110000000消隐01111000000000消隐01111010000000消隐011111000000

13、00消隐01111110000000消隐111XXXX锁 存锁存5.2.3、LED 通过LED的亮的情况来控制通行的状态,红灯亮时,所有的车不允许通过,延时九秒后绿灯亮时才允许通过。红灯转换绿灯时直接转换,绿灯转换为红灯时中间要有两秒的黄灯作为过渡。5.2.4数码管驱动电路图5-3 数码管驱动电路5.2.5外扩电路图5-4 外扩电路六、 运行描述6.1运行过程:(1)首先检查自己的个人计算机,需在Windows XP下安装CCS运行环境。(2)本次DSP课程设计我们用的是CCS2.2版本的环境。(3)安装好CCS2.2后,需对计算机经行相关配置,然后在simulator模式下经行电路调试。并且

14、安装相关驱动文件。(4)写入设计好的程序,并在CCS环境下经行编译,调试,知道调试没有错误。(5)对实际电路经行设计,用Protel画出电路原理图。(6)按照电路原理图对事物经行正确焊接,焊接时一定要小心,要按照要求,防止出现虚焊、漏焊等错误。(7)打开DSP试验箱电源,按照先前设计的电路原理图连接电路,其中电源部分应在确定电压为3.3V或小于3.3V时连接芯片电源,然后拷入刚才运行成功后的程序。(8)在project中选择正确的储存路径打开写好的程序。(9) 由2812的各引脚来控制二极管的亮灭,各管脚分别调用相应程序来控制LCD的显示;二极管低电平有效,南北红灯亮时东西绿灯亮。(10)实物

15、电路图如下:图6-1 实物电路图6.2调试过程中遇到的问题:由于在这次DSP课程设计之前,我们并没有使用过CCS调试环境,所以这会初次使用也遇到了不少问题。(1)DSP试验箱使用需注意的一些问题: 1)DSP 电源和地连接正确。2)DSP 时钟正确。3)DSP 的主要控制信号,如RS 和HOLD 信号接高电平。4)C2000 的watchdog 关掉。5)不可屏蔽中断NMI 上拉高电平。(2)调试过程中我们组遇到的问题1)一开始,我们的计算机连接不上试验箱,程序不能正确拷入,怎么试都不行,后来上网查阅资料,才发现时驱动程序没有安装好,我们又下载了配套的驱动程序,这个问题才得以成功的解决。2)程

16、序下载成功后,我们发现数码管不亮,然后我们便开始调程序,可是自己始终找不到原因。然后去找老师帮忙,在老师的帮助下,我们终于找到了问题所在,原来我们把引脚都设置成输出了,在老师的指导下我们经行了改正。 可是这个问题刚解决,就又出现了数码管不能按照计划规律的显示数字来倒计时,显示的都是乱码的问题,经过我们仔细的检查,发现是我们将4511芯片的引脚接错了顺序。经过几次的改正,终于达到了设计要求,全组人员十分高兴。七、 软件设计7.1 程序流程图程序流程图如下: 开始初始化DSP南北红灯亮,东西绿灯亮红绿灯各延时九秒红灯变为绿灯,绿灯变黄再变红,数码管重新计时 图7-1程序流程图7.2 程序代码#in

17、clude DSP281x_Device.h / DSP281x Headerfile Include File#include DSP281x_Examples.h / DSP281x Examples Include Fileinterrupt void cpu_timer0_isr(void);#define LEDS *(int *)0xc0000int flag=1;int i=9,nCount;unsigned int uLBD;Uint16 a ;Uint16 b ;unsigned int Led10=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x0

18、7,0x08,0x09;/09码字/Uint16 var1= 0x0000,var2=0xffff; / sets GPIO Muxs as I/Osvoid main(void) uLBD=nCount=0; InitSysCtrl(); /初始化cpu. InitPieCtrl(); /初始化向量表.初始化Pie寄存器. IER = 0x0000; /复位,中断使能寄存器IER,中断标志寄存器IFR.用于将Pie中断服务复位. IFR = 0x0000; InitPieVectTable(); /初始化中断向量表. EALLOW;/关闭寄存器保护,与EDIS配合使用. PieVectTab

19、le.TINT0 = &cpu_timer0_isr; /打开TINT0,地址指针指向前面向向量,前后名字一致. EDIS; /打开寄存器保护. CpuTimer0.RegsAddr = &CpuTimer0Regs;CpuTimer0Regs.PRD.all = 0xffff; /PRD周期寄存器CpuTimer0Regs.TPR.all = 0; /TPR,8位到15位是PSC,0位到7位是TDDR.CpuTimer0Regs.TIM.all = 0; /TIM计数寄存器,存放计数值CpuTimer0Regs.TPRH.all = 0; /TPR的高16位 CpuTimer0Regs.TC

20、R.bit.TSS = 1; /TCR控制寄存器,TSS=1表示关闭定时器,TSS=0时启动CpuTimer0Regs.TCR.bit.SOFT = 1; /SOFT和FREE同时使用,都是1的时候自由运行CpuTimer0Regs.TCR.bit.FREE = 1;CpuTimer0Regs.TCR.bit.TRB = 1; /TRB重装载位,=1自动装载周期寄存器的值CpuTimer0Regs.TCR.bit.TIE = 1; /中断使能计数器,减到0自动为1请求中断.CpuTimer0.InterruptCount = 0; /计数 StartCpuTimer0();/执行宏定义,TSS

21、=0时的操作,开始定时器计数 IER |= M_INT1;/赋值0X0001 PieCtrlRegs.PIEIER1.bit.INTx7 = 1;/按位操作,7位 /打开全局中断 EINT; / Enable Global interrupt INTM ERTM; / Enable Global realtime interrupt DBGM *(int *)0x108000=0;/ 初始化ICETEK-CTR *(int *)0x108000=0x80; *(int *)0x108000=0; *(int *)0x108007=0;/ 关闭东西方向的交通灯 *(int *)0x108007=

22、0x40; / 关闭南北方向的交通灯 EALLOW; GpioMuxRegs.GPAMUX.all=var1; / Configure MUXs as digital I/Os or GpioMuxRegs.GPBMUX.all=var1; / peripheral I/Os /MUX表示工作方式,两种工作方式:外设和I/O,相应位为外设,为0是I/O GpioMuxRegs.GPADIR.all=var2; / GPIO PORTs as output GpioMuxRegs.GPBDIR.all=var2; / GPIO DIR select GPIOs as output /DIR表示方

23、向,输入还是输出管教,相应位为1为输出,为0是输入 EDIS; while ( 1 ) /等待中断 GpioDataRegs.GPADAT.all=a; GpioDataRegs.GPBDAT.all=b; interrupt void cpu_timer0_isr(void)/中断先声明后定义 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;/中断应答寄存器 CpuTimer0Regs.TCR.bit.TIF = 1;/中断标志位 CpuTimer0Regs.TCR.bit.TRB = 1;/重装载位 if ( nCount=0 ) b=Ledi; i-;if(flag=1) if(i=3) a=0x21; else if(i=2) a=0x11; else if(i=1) a=0x01; else if(i=0) a=0x09; flag=0; i=9; if(flag=0) if(i=3) a=0x0C; else if(i=2) a=0x0A; else if(i=1) a=0x08; else if(i=0) a=0x09; flag=1; i=9; nCount+; nCount%=

温馨提示

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

评论

0/150

提交评论