课程设计说明书
(2010/2011学年第二学期)
课程名称 : DSP控制器及其应用
题 目 : DSP控制十字路口交通灯
专业班级 :
学生姓名 :
学 号 :
指导教师 :
设计周数 : 2周
设计成绩 :
2011年7月7日
目 录
1 课程设计目的 2
2 课程设计正文 2
2.1 课程设计要求 2
2.2 F2812结构图 2
2.3 数码管驱动芯片 2
2.4 F2812系统调试环境结构实物 5
2.5 总体电路设计 6
3 课程设计总结 7
4 参考文献 7
附录1: 8
附录2: 12
1 课程设计目的
这学期我们学习了《DSP控制器的原理及应用》这一门课程,为了实现理论结合实践,锻炼我们的动手能力和团队合作能力,我们针对这门课程进行的课程设计。通过这次的课程设计,我们要更加深入的学习这门课程,掌握这门技术,加深对DSP控制器的原理的理解和掌握。利用DSP开发环境CCS C2000对源程序文件进行编译、链接、装载调试,以完成基本的DSP项目文件设计。
2 课程设计正文
2.1 课程设计要求
⑴ 设计一个十字路口交通灯(带一个倒计时数码管),每个方向有三色(红、黄、绿)。
⑵ 实现交通灯双向车道红绿灯切换功能、交通灯全亮功能、数码管全亮功能。
⑶ 保证每次切换倒计时9秒,在此时熄灭绿灯。
2.2 F2812结构图
考虑到DSP芯片的引脚太多,而我们此次的课程设计用到的引脚不多,所以就只画了部分引脚。
2.3 数码管驱动芯片
此次的课程设计可选用的数码管驱动芯片也很多。但是,为了在编写程序时简单,尽量少用DSP的引脚,所以我们此次的课程设计选择了CD4511芯片来驱动数码管。
CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。
CD4511是一片CMOS BCD—锁存/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Ω的限流电阻。
⑴ 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的工作真值表
表2-1 CD4511真值表
| 输 入 | 输 出 | |||||||||||||
| 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 | 锁 存 | 锁存 | ||||||
译码器的锁存电路由传输门和反相器组成,传输门的导通或截止由控制端LE的电平状态。 当LE为“0”电平导通,TG2截止;当LE为“1”电平时,TG1截止,TG2导通,此时有锁存作用。
③ 译码
CD4511译码用两级或非门担任,为了简化线路,先用二输入端与非门对输入数 。据B、C进行组合,得出四项,然后将输入的数据A、D一起用或非门译码。
④ 消隐
BI为消隐功能端,该端施加某一电平后,迫使B端输出为低电平,字形消隐。
消隐输出J的电平为 J==(C+B)D+BI,如不考虑消隐BI项,便得:
J=(B+C)D。
据上式,当输入BCD代码从1010---1111时,J端都为“1”电平,从而使显示器中的字形消隐。
2.4 F2812系统调试环境结构实物
2.5 电路原理设计
⑴ F2812的最小系统设计
F2812芯片的最小系统,由19、20号引脚接外部时钟电路,用30MHz的晶振提供时钟周期。用1117电平转换芯片将外部寄存的电平+5V转换为F2812能支持的电平+3.3V,接到23号引脚(VDD)给F2812提供电源。F2812芯片的复位电路由22号引脚接入。
⑵ 数码管驱动电路设计
其中,芯片CD4511的第7号引脚(A)接芯片F2812的第13号引脚(GPIOB0)、第1号引脚(B)接芯片F2812的第14号引脚(GPIOB1)、第2号引脚(C)接芯片F2812的第15号引脚(GPIOB2)、第6号引脚(D)接芯片F2812的第16号引脚(GPIOB3)。用芯片CD4511驱动数码管,就只用了芯片F2812的4个输出引脚,这样有利于编写程序。
3 课程设计总结
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
我们做课程设计六个人一组,这就需要我们团结合作、分工明确,由于这次课题看似简单,但很多时候多一个人的想法可能就多了一份成功的希望。所以这就要求我们培养团结合作的团队精神,我相信无论走到哪里,这在我们的现实生活中都是必须的。
故在此次的课程设计中,我主要负责的是对数码管驱动芯片CD4511的资料的查阅和对电路图的总体设计,对电路的设计包括绘制电路原理图。由于平时在对本课程的学习中,没有注重系统的设计,故在设计电路原理图的过程中也遇到了各种各样的问题。但是,这些问题在跟同组的同学讨论和向老师请教后也得到了解决。由此可以得出,我对本门课程的掌握还是很不好,动手的能力还是很欠缺的。在今后的学习过程中不仅要注意对理念知识的掌握,而且还要培养自己的对手操作能力。
最后在老师的辛勤的指导下,终于迎刃而解,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
4 参考文献
[1] 苏涛,蔺丽华,卢光跃.DSP实用技术.西安电子科技大学出版社.2002
[2] 清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社.2004.1
[3] 赵红怡编.DSP技术与运用实例.2006.1
[4] 邹彦. DSP原理及应用[M]. 电子工业出版社.2005.1
[5] 章云等.DSP控制器及其应用. 机械工业出版社.2001.8
附录1:
此次课程设计的程序
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
interrupt void cpu_timer0_isr(void);
#define LEDS *(int *)0xc0000
int flag=1;
int i=0,nCount;
unsigned int uLBD;
Uint16 a=0x0021 ;
Uint16 b=0x000a ;
Uint16 var1,var2,var3;
Uint16 var1= 0x0000; // sets GPIO Muxs as I/Os
Uint16 var2= 0x00FF; // sets GPIO 15-8 DIR as inputs, 7-0 DIR as outputs
Uint16 var3= 0x0000; // Don't set any input qualifier
void main(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; // 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=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表示方向,输入还是输出管教,相应位为1为输出,为0是输入
GpioMuxRegs.GPAQUAL.all=var3; // Set GPIO input qualifier values
GpioMuxRegs.GPBQUAL.all=var3;
EDIS;
while ( 1 ) //等待中断
{
GpioDataRegs.GPADAT.bit.GPIOA1=1;
}
}
interrupt void cpu_timer0_isr(void)//中断先声明后定义
{
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//中断应答寄存器
CpuTimer0Regs.TCR.bit.TIF = 1;//中断标志位
CpuTimer0Regs.TCR.bit.TRB = 1;//重装载位
if ( nCount==0 )
{
if(flag==1)
{
if(b<=0x000a&&b>=0x0002)
{
b--;
}
else if(b==0x0001)
{
a=0x0011;
b--;
}
else if(b==0x0000)
{
a=0x000c;
b=0x000a;
flag=0;
}
}
if(flag==0)
{
if(b<=0x000a && b>=0x0002)
{
b--;
}
else
{
if(b==0x0001)
{
a=0x000a;
b--;
}
if(b==0x0000)
{
a=0x0021;
b=0x0009;
flag=1;
}
}
}
}
nCount++; nCount%=22;
}
附录2:
系统电路原理图
课程设计
| 评 语 | |||
| 课程设计 成 绩 | 指导教师 (签字) | 年 月 日 | |