基于DSP的电子钟设计文档格式.docx
《基于DSP的电子钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于DSP的电子钟设计文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
学会简单电路的实验调试和整机指标测试方法,增强我们的动手能力,为以后学习和工作打下基础。
2课程设计正文
本次课程设计的课题是一个电子时钟设计,采用2812DSP、LED显示模块和相关硬件电路,用DSP相关语言写控制程序,设计一个能够正确显示秒钟的基本DSP应用系统。
2.1软件系统设计
2.1.1主函数流程图如图1所示。
图1主函数流程图
2.1.2系统实现代码
#include"
DSP281x_Device.h"
//DSP281xHeaderfileIncludeFile
DSP281x_Examples.h"
//DSP281xExamplesIncludeFile
interruptvoidcpu_timer0_isr(void);
voidDelay(intx);
charflag=1;
intg_nCount;
Uint16a=0xff00;
//十位
Uint16b=0x0000;
//个位
voidmain(void)
{
g_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
GpioMuxRegs.GPAMUX.all=0x0000;
//ConfigureMUXsasdigitalI/Osor
GpioMuxRegs.GPBMUX.all=0x0000;
//peripheralI/Os
//MUX表示工作方式,两种工作方式:
外设和I/O,相应位为外设,为0是I/O
GpioMuxRegs.GPADIR.all=0xffff;
//GPIOPORTsasoutput
GpioMuxRegs.GPBDIR.all=0x000f;
//sets0~3bitisoutput,othersisinput;
GPIODIRselectGPIOsasoutput//DIR表示方向,输入还是输出管教,相应位为1为输出,为0是输入
GpioMuxRegs.GPAQUAL.all=0x0000;
//SetGPIOinputqualifiervalues
GpioMuxRegs.GPBQUAL.all=0x0000;
while
(1)
{
//GpioDataRegs.GPADAT.bit.GPIOA1=0;
GpioDataRegs.GPADAT.all=a;
//十位
GpioDataRegs.GPBDAT.all=b;
//个位
if(GpioDataRegs.GPBDAT.bit.GPIOB8==0)
Delay(5);
if(GpioDataRegs.GPBDAT.bit.GPIOB8==0)flag=1;
}
if(GpioDataRegs.GPBDAT.bit.GPIOB9==0)
if(GpioDataRegs.GPBDAT.bit.GPIOB9==0)flag=2;
if(GpioDataRegs.GPBDAT.bit.GPIOB10==0)
if(GpioDataRegs.GPBDAT.bit.GPIOB10==0)flag=3;
if(GpioDataRegs.GPBDAT.bit.GPIOB11==0)
if(GpioDataRegs.GPBDAT.bit.GPIOB11==0)flag=4;
}
interruptvoidcpu_timer0_isr(void)//中断先声明后定义
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
//中断应答寄存器
CpuTimer0Regs.TCR.bit.TIF=1;
//中断标志位
//重装载位
if(g_nCount==0)
{
b++;
if(b>
0x0009){b=0x0000;
a++;
}
if(a>
0xff05){a=0;
b=0;
switch(flag)
{
case0:
break;
case1:
b--;
if(b<
=0x0000){b=9;
a=a-1;
};
case2:
b++;
if(b>
0x0009){a=a+1;
b=0x0000;
case3:
a--;
if(a<
=0xff00)a=0xff05;
case4:
if(a>
0xff05)a=0xff00;
}
g_nCount++;
g_nCount%=2289;
voidDelay(intx)//延时1ms*x
{
inti,j;
for(i=0;
i<
x;
i++)
for(j=0;
j<
2275;
j++);
2.1.3软件调试
软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
本设计的软件调试使用CCS2000测试软件进行调试,即可看到正确的测试结果,最终实现了利用DSP芯片控制并用LED数码管进行秒钟显示。
2.2硬件系统设计
2.2.1方案设计
本系统以TMS2812为核心控制部件,利用软件编程,通过CD4511驱动LED数码管进行数字显示,使用按键实现对秒表的复位等要求,尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。
TMS320F2812DSP有多达56个通用数字量输入输出端口(GPIO),其中绝大部分是通用I/O和专用功能复用引脚。
此芯片对所有数字量I/O进行分组,每组作为一个端口,分别是GPIO-A、B、C、D、E、F和G,C28x的绝大多数引脚内部都连接多个功能单元,但并不是所有功能单元都能同时工作,即在某一时刻一个引脚只能用作一种功能。
所有的GPIO端口由各自的GPxMUX复用寄存器控制,控制位设置为0时,相应的引脚作为通用数字量I/O使用;
设置为1时,相应的引脚作为专用引脚使用。
当设置为数字量I/O功能时,寄存器GPxDIR确定I/O端口的方向;
控制位清零引脚配置为数字量输入;
置1配置为数字量输出。
具有输入量化功能的引脚,用户可以定义量化时间长度以消除不必要的干扰信号。
由于引脚的输出缓冲直接连接到输入缓冲,当前GPIO引脚上的任何信号都会同时传送到外设模块。
因此,当引脚配置为GPIO功能时,相应的外设功能(和中断产生功能)必须通过复用寄存器禁止,否则将会首先触发中断,这一点对于PDPINTA和PDPINTB引脚尤其重要。
如果复用引脚配置为数字I/O模式,则可以直接利用数字寄存器对I/O操作(读/写)也可以利用其他辅助寄存器对各I/O进行独立操作,如将数字I/O置位(GPxSET寄存器)、数字I/O清零(GPxCLEAR寄存器)及数字I/O电平转换(GPxTOGGLE寄存器)。
总体框图如图2所示。
图2总体框图
2.2.2显示电路
数据显示采用CD4511驱动共阴极数码管显示,CD4511是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器。
如图3所示:
图3CD4511驱动数码管显示电路
CD4511引脚如图4所示:
图4CD4511引脚图
其功能介绍如下:
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有效。
还有两个引脚8、16分别表示的是VDD、VSS。
CD4511具有锁存、译码、消隐功能,通常以反相器作输出级,通常用以驱动LED。
2.2.3显示模块实物图
2.2.4电路原理图
3设计总结
本次的课程设计主要是针对2812和数码管进行实现功能的代码编写。
在整个的设计和操作阶段都还比较的顺利,但是在后期的调试过程中发现一些错误,这是由于我们最初设计的时候不够细致所造成的,虽然最后我们还是解决了问题,但还是对我们的设计进度造成了很大的影响,这是非常值得我们注意并且应该避免的。
在调试过程中,难免会遇到很难解决或者自己无法解决的问题,在遇到问题时,要沉着冷静,首先自己要不断尝试修改,实在无法完成时,再向同学、老师寻求帮助,在交流中收获知识,达到查漏补缺的效果。
当自己独立完成实验的调试运行,看到实验达到要求的时刻,是实验最快乐的时刻,也是有所收获,感觉充实的时刻。
最后,由衷的感谢学校给了我们这次学习进步锻炼自我的机会,感谢老师在我们学习的过程中孜孜不倦的教导我们如何思考问题解决问题,秉承着严谨认真的科学态度使我们圆满的完成了这次课程设计任务。
4参考文献
[1]郑红、王鹏、董云凤、吴冠.《DSP应用系统设计实践》.北京航空航天大学出版社,2006.4
[2]赵红怡.《DSP技术与应用实例》.电子工业出版社,2003.6
[3]万山明.《TMS320F281xDSP原理与应用实例》.北京航空航天大学出版社,2007.7
课程设计
评语
成绩
指导教师
(签字)
年月日