DSP交通灯课程设计.docx
- 文档编号:13245599
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:23
- 大小:484.99KB
DSP交通灯课程设计.docx
《DSP交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《DSP交通灯课程设计.docx(23页珍藏版)》请在冰点文库上搜索。
DSP交通灯课程设计
电子信息工程专业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
5.2.1、TMS320F2812DSP芯片…………………………………………………………...7
5.2.2、CD4511……………………………………………………………………………….7
5.2.3、LED…………………………………………………..……………….……………..9
5.2.4数码管驱动电路………………..……………………………………….……………..9
5.2.5外扩电路………………………….…………………………………….……………..10
六运行描述………………………………………………………..…………………………...…10
七软件设计………………………………………………………...…………………………..…10
7.1程序流程图………………………………………………..………………………….…..12
7.2程序代码…………………………………………………………………………………..13
八设计总结.…………………………………………………………………………..………..…17
九参考文献……………………………………………………………….……………………....17
附录…………………………………………………………………………………………..…….18
一、设计目的
DSP课程设计对我们DSP的学习有这非常重要的意义。
(1)通过交通灯的设计,进一步加深、巩固学生所学专业课程DSP控制器及其应用的基本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。
(2)熟悉使用TMS320F2812控制交通灯的方法。
(3)利用DSP开发环境CCSC2000对源程序文件进行编译、链接、装载调试,以完成基本的DSP项目文件设计。
(4)通过此次课程设计,学习DSPf2812芯片的I/O端口控制方法,熟悉字模的简单构建和使用,熟悉Emulator方式下的程序调试规程,并能最终熟悉掌握在DSP软硬件环境下的程序开发流程,达到学以致用的目的。
二系统分析
2.1、设计要求
2.1.1设计任务
⑴设计一个十字路口交通灯(带一个倒计时数码管),每个方向有三色(红、黄、绿);
⑵实现交通灯双向车道红绿灯切换功能、交通灯全亮功能、数码管全亮功能;
⑶保证每次切换倒计时9秒,且绿灯变红灯前2秒黄灯闪烁1次,并在此时熄灭绿灯。
2.1.2设计要求
⑴用CCS2.2以上版本运行环境,ANSIC/C++语言编写;
⑵用DSPF2812B开发板调用GPIO通用输入输出多用复用器进行调制;
⑶采用内部时钟实现计时功能;
⑷采用字模查询方式显示数字。
2.2、设计思想
根据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、D12、D14为高,东西绿灯D12、D14为高。
交通灯模块的I/O地址:
0x5008h
三、总体设计
3.1、系统框图设计
该系统包括DSPF2812芯片,CD4511驱动器,首先对DSP进行初始化,等待中断,然后I/O口输出高电平驱动信号灯发亮,定时模块采用硬件定时和软件定时相结合的方法,用DSP定时/计数计时,再用软件实现所需的定时。
3.2、总电路图设计
图3-2总体电路图
其中s1~s5为按键,R1~R5对管脚起保护作用。
该键盘为独立式键盘,分别和DSP芯片的GPIO管脚PWM1、PWM2、PMW3、PWM4、PWM5相连接命令控制扩展接口的地址为0X108001,数据控制扩展接口的地址为0X108003、0x108004,辅助控制扩展接口的地址为0X108002。
因为DSP芯片的允许电压为3.3V,所以该键盘外接3.3V的电源。
设置GPIO相应管脚为输入或输出模式,DSP芯片外接LCD作为输出,外接5个单按键作为输入。
在程序中构建汉字字模,并能够使用查找法提取。
3.3、最小系统图
图3-3DSP最小系统
四、课程设计原理
4.1系统工作原理
芯本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
信号灯受片中输出高低电平的控制。
当锁存器I/O口输出为高电平时,他所驱动的信号灯即发光二极管就会亮起来。
定时模块采用硬件定时和软件定时相结合的方法,用DSP定时/计数器定时100ms,再用软件计时实现所需的定时。
发光二极管模块由DSP控制发光二极管来实现。
数码管显示模块由实验平台上的LED显示模块实现。
紧急中断模块是由单脉冲发生单元和DSP中断控制器组成。
信号灯开始工作,东西红灯亮9秒,南北绿灯亮9秒,到8秒时,东西黄灯亮一次,时间一秒;东西红灯亮维持9秒,南北绿灯亮维持9秒,到8秒时,南北黄灯闪一次,时间一秒。
紧接着开始第二周期的动作,以后周而复始的循环。
4.2.系统工作状态
状态一:
南北绿灯、东西红灯,延时9秒;如图所示:
图4-1状态一
状态二:
南北黄灯、东西红灯,持续1秒;如图所示:
图4-2状态二
状态三:
东西绿灯、南北红灯,延时9秒;如图所示:
图4-3状态三
状态四:
东西黄灯、南北红灯,持续1秒;如图所示:
图4-4状态四
返回状态一
五、元器件选择
5.1所要元器件
表5-1所需器件
2812DSP芯片
一个
CD4511芯片
1个
LED数字显示器
1个
电阻
13个
二极管
6个
导线
若干
5.2、模块性能分析
5.2.1、TMS320F2812DSP芯片
2812的十个引脚,其中A口的六个引脚GPIOA0、GPIOA1、GPIOA2、GPIOA3、GPIOA4、GPIOA5控制二极管的状态,B口的四个引脚GPIOB0、GPIOB1、GPIOB2控制数码管的显示。
图5-1F2812部分引脚
5.2.2、CD4511
CD4511是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器,特点:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。
可直接驱动LED显示器。
CD4511是一片CMOSBCD—锁存/7段译码/驱动器,引脚排列如图2.2所示。
其中a、b、c、d为BCD码输入,a为最低位。
LT为灯测试端,加高电平时,显示器正常显示;加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。
BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。
另外CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。
LE是锁存控制端,高电平时锁存,低电平时传输数据。
a~g是7段输出,可驱动共阴LED数码管。
另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观图3是CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只CD4511和LED数码管即可。
所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地。
限流电阻要根据电源电压来选取,电源电压5V时可使用300Ω的限流电阻。
1CD4511引脚图
图5-2CD4511
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所示
表5-2CD4511真值表
输入
输出
LE
BI
LI
A3
A2
A1
A4
a
b
c
d
e
f
g
显示
X
X
0
X
X
X
X
1
1
1
1
1
1
1
8
X
0
1
X
X
X
X
0
0
0
0
0
0
0
消隐
0
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
0
1
1
0
0
0
0
1
0
1
1
0
0
1
0
1
1
0
1
1
0
1
2
0
1
1
0
0
1
1
1
1
1
1
0
0
1
3
0
1
1
0
1
0
0
0
1
1
0
0
1
1
4
0
1
1
0
1
0
1
1
0
1
1
0
1
1
5
0
1
1
0
1
1
0
0
0
1
1
1
1
1
6
0
1
1
0
1
1
1
1
1
1
0
0
0
0
7
0
1
1
1
0
0
0
1
1
1
1
1
1
1
8
0
1
1
1
0
0
1
1
1
1
0
0
1
1
9
0
1
1
1
0
1
0
0
0
0
0
0
0
0
消隐
0
1
1
1
0
1
1
0
0
0
0
0
0
0
消隐
0
1
1
1
1
0
0
0
0
0
0
0
0
0
消隐
0
1
1
1
1
0
1
0
0
0
0
0
0
0
消隐
0
1
1
1
1
1
0
0
0
0
0
0
0
0
消隐
0
1
1
1
1
1
1
0
0
0
0
0
0
0
消隐
1
1
1
X
X
X
X
锁存
锁存
5.2.3、LED
通过LED的亮的情况来控制通行的状态,红灯亮时,所有的车不允许通过,延时九秒后绿灯亮时才允许通过。
红灯转换绿灯时直接转换,绿灯转换为红灯时中间要有两秒的黄灯作为过渡。
5.2.4数码管驱动电路
图5-3数码管驱动电路
5.2.5外扩电路
图5-4外扩电路
六、运行描述
6.1运行过程:
(1)首先检查自己的个人计算机,需在WindowsXP下安装CCS运行环境。
(2)本次DSP课程设计我们用的是CCS2.2版本的环境。
(3)安装好CCS2.2后,需对计算机经行相关配置,然后在simulator模式下经行电路调试。
并且安装相关驱动文件。
(4)写入设计好的程序,并在CCS环境下经行编译,调试,知道调试没有错误。
(5)对实际电路经行设计,用Protel画出电路原理图。
(6)按照电路原理图对事物经行正确焊接,焊接时一定要小心,要按照要求,防止出现虚焊、漏焊等错误。
(7)打开DSP试验箱电源,按照先前设计的电路原理图连接电路,其中电源部分应在确定电压为3.3V或小于3.3V时连接芯片电源,然后拷入刚才运行成功后的程序。
(8)在project中选择正确的储存路径打开写好的程序。
(9)由2812的各引脚来控制二极管的亮灭,各管脚分别调用相应程序来控制LCD的显示;二极管低电平有效,南北红灯亮时东西绿灯亮。
(10)实物电路图如下:
图6-1实物电路图
6.2调试过程中遇到的问题:
由于在这次DSP课程设计之前,我们并没有使用过CCS调试环境,所以这会初次使用也遇到了不少问题。
(1)DSP试验箱使用需注意的一些问题:
1)DSP电源和地连接正确。
2)DSP时钟正确。
3)DSP的主要控制信号,如RS和HOLD信号接高电平。
4)C2000的watchdog关掉。
5)不可屏蔽中断NMI上拉高电平。
(2)调试过程中我们组遇到的问题
1)一开始,我们的计算机连接不上试验箱,程序不能正确拷入,怎么试都不行,后来上网查阅资料,才发现时驱动程序没有安装好,我们又下载了配套的驱动程序,这个问题才得以成功的解决。
2)程序下载成功后,我们发现数码管不亮,然后我们便开始调程序,可是自己始终找不到原因。
然后去找老师帮忙,在老师的帮助下,我们终于找到了问题所在,原来我们把引脚都设置成输出了,在老师的指导下我们经行了改正。
可是这个问题刚解决,就又出现了数码管不能按照计划规律的显示数字来倒计时,显示的都是乱码的问题,经过我们仔细的检查,发现是我们将4511芯片的引脚接错了顺序。
经过几次的改正,终于达到了设计要求,全组人员十分高兴。
七、软件设计
7.1程序流程图
程序流程图如下:
开始
初始化DSP
南北红灯亮,东西绿灯亮
红绿灯各延时九秒
红灯变为绿灯,绿灯变黄再变红,数码管重新计时
图7-1程序流程图
7.2程序代码
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
interruptvoidcpu_timer0_isr(void);
#defineLEDS*(int*)0xc0000
intflag=1;
inti=9,nCount;
unsignedintuLBD;
Uint16a;
Uint16b;
unsignedintLed[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};//0~9码字//
Uint16var1=0x0000,var2=0xffff;//setsGPIOMuxsasI/Os
voidmain(void)
{
uLBD=nCount=0;
InitSysCtrl();//初始化cpu.
InitPieCtrl();//初始化向量表.初始化Pie寄存器.
IER=0x0000;//复位,中断使能寄存器IER,中断标志寄存器IFR.用于将Pie中断服务复位.
IFR=0x0000;
InitPieVectTable();//初始化中断向量表.
EALLOW;//关闭寄存器保护,与EDIS配合使用.
PieVectTable.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.TCR.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=0时的操作,开始定时器计数
IER|=M_INT1;//赋值0X0001
PieCtrlRegs.PIEIER1.bit.INTx7=1;//按位操作,7位
//打开全局中断
EINT;//EnableGlobalinterruptINTM
ERTM;//EnableGlobalrealtimeinterruptDBGM
*(int*)0x108000=0;//初始化ICETEK-CTR
*(int*)0x108000=0x80;
*(int*)0x108000=0;
*(int*)0x108007=0;//关闭东西方向的交通灯
*(int*)0x108007=0x40;//关闭南北方向的交通灯
EALLOW;
GpioMuxRegs.GPAMUX.all=var1;//ConfigureMUXsasdigitalI/Osor
GpioMuxRegs.GPBMUX.all=var1;//peripheralI/Os
//MUX表示工作方式,两种工作方式:
外设和I/O,相应位为外设,为0是I/O
GpioMuxRegs.GPADIR.all=var2;//GPIOPORTsasoutput
GpioMuxRegs.GPBDIR.all=var2;//GPIODIRselectGPIOsasoutput//DIR表示方向,输入还是输出管教,相应位为1为输出,为0是输入
EDIS;
while
(1)//等待中断
{
GpioDataRegs.GPADAT.all=a;
GpioDataRegs.GPBDAT.all=b;
}
}
interruptvoidcpu_timer0_isr(void)//中断先声明后定义
{
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;//中断应答寄存器
CpuTimer0Regs.TCR.bit.TIF=1;//中断标志位
CpuTimer0Regs.TCR.bit.TRB=1;//重装载位
if(nCount==0)
{
b=Led[i];
i--;
if(flag==1)
{
if(i<=9&&i>=3)
{
a=0x21;
}
elseif(i==2)
{
a=0x11;
}
elseif(i==1)
{
a=0x01;
}
elseif(i==0)
{
a=0x09;
flag=0;
i=9;
}
}
if(flag==0)
{
if(i<=9&&i>=3)
{
a=0x0C;
}
elseif(i==2)
{
a=0x0A;
}
elseif(i==1)
{
a=0x08;
}
elseif(i==0)
{
a=0x09;
flag=1;
i=9;
}
}
}
nCount++;
nCount%=2289;
}
八、设计总结
在DSP课程设计的两个星期里,我们充实而忙碌,从一开始拿到交通灯这个题目,到后来的编写程序没有错误。
仿真成功、硬件实现我们学到了太多的知识与经验。
从一开始的对DSP开发环境的一无所知,然后查阅资料,经过老师耐心的知道,让我达到了预期的起的效果,我们一组人都特别开心,也在这个过程中学到了知识。
一开始我们画出来电路图,但老师所思路有一些错误,经过老师的知道,我们修改了电路图,然后开始写程序,这下便于遇到了不小的问题,由于之前我们都没有用过DSP的程序开发软件,我们重新学习了CCS调试环境,在这过程中,我们遇到了这样那样的问题,我们就从学习别的写的程序开始入手,一步步学习调试过程,最总把我们的程序调试到没有错误。
接下来便是硬件电路的焊接实现,我们全都小心翼翼,生怕自己焊接的疏忽导致不能实现,所以每个人都很认真。
但是这过程中还是出现了小问题,连接试验箱调试的时候我们的数码管没有按照预想的状态进行显示,后来通过老师的帮助我们将程序进行改动后才实现了设计要求。
通过两周的DSP课程设计让我组队员增强了团队合作意识,我们互帮互助的圆满完成两周的设计任务。
同时也增强了我们队DSP的学习热情,加深了对DSP老师课上的理论知识的理解没让我们达到学以致用的目的。
再次同事十分感谢我们的指导老师,没有我们的知道老师耐心的帮我们改正错误,我们也很难完成这此的设计项目,谢谢老师。
九、参考文献
[1]邹
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 交通灯 课程设计