基于DSP的电子钟设计_第1页
基于DSP的电子钟设计_第2页
基于DSP的电子钟设计_第3页
基于DSP的电子钟设计_第4页
基于DSP的电子钟设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、电子信息工程专业项目设计说明书(2011/2012学年第二学期)项目名称 : dsp应用系统 题 目 : 基于dsp的电子钟设计 专业班级 : 学生姓名 : 学 号: 指导教师 : 设计周数 : 设计成绩 : 1 课程设计目的通过课程设计,使学生综合运用dsp技术课程和其他有关课程的理论和生产实际知识去分析和解决具体问题的能力得到提高,并使其所学知识得到进一步巩固、深化和发展;初步培养学生对工程设计的独立工作能力,学习设计的一般方法;以及锻炼我们查阅资料、方案比较、团结合作的能力。学会简单电路的实验调试和整机指标测试方法,增强我们的动手能力,为以后学习和工作打下基础。2 课程设计正文本次课程设

2、计的课题是一个电子时钟设计,采用2812dsp、led显示模块和相关硬件电路,用dsp相关语言写控制程序,设计一个能够正确显示秒钟的基本dsp应用系统。2.1 软件系统设计2.1.1主函数流程图如图1所示。图1主函数流程图2.1.2系统实现代码 #include "dsp281x_device.h" / dsp281x headerfile include file#include "dsp281x_examples.h" / dsp281x examples include fileinterrupt void cpu_timer0_isr(void)

3、;void delay(int x);char flag=1; int g_ncount;uint16 a=0xff00; /十位 uint16 b=0x0000 ; /个位 void main(void) g_ncount=0; initsysctrl(); /初始化cpu. initpiectrl(); /初始化向量表.初始化pie寄存器. ier = 0x0000; /复位,中断使能寄存器ier,中断标志寄存器ifr.用于将pie中断服务复位. ifr = 0x0000; initpievecttable(); /初始化中断向量表. eallow;/关闭寄存器保护,与edis配合使用.

4、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

5、位 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; /计数 startcput

6、imer0();/执行宏定义,tss=0时的操作,开始定时器计数 ier |= m_int1;/赋值0x0001 piectrlregs.pieier1.bit.intx7 = 1;/按位操作,7位 /打开全局中断 eint; / enable global interrupt intm ertm; / enable global realtime interrupt dbgm eallow; gpiomuxregs.gpamux.all=0x0000; / configure muxs as digital i/os or gpiomuxregs.gpbmux.all=0x0000; / p

7、eripheral i/os /mux表示工作方式,两种工作方式:外设和i/o,相应位为外设,为0是i/o gpiomuxregs.gpadir.all=0xffff; / gpio ports as output gpiomuxregs.gpbdir.all=0x000f; / sets 03 bit is output,others is input;gpio dir select gpios as output /dir表示方向,输入还是输出管教,相应位为1为输出,为0是输入 gpiomuxregs.gpaqual.all=0x0000; / set gpio input qualifi

8、er values gpiomuxregs.gpbqual.all=0x0000; edis; 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) delay(5); if(gpi

9、odataregs.gpbdat.bit.gpiob9=0)flag=2; if(gpiodataregs.gpbdat.bit.gpiob10=0) delay(5); if(gpiodataregs.gpbdat.bit.gpiob10=0)flag=3; if(gpiodataregs.gpbdat.bit.gpiob11=0) delay(5); if(gpiodataregs.gpbdat.bit.gpiob11=0)flag=4; interrupt void cpu_timer0_isr(void)/中断先声明后定义 piectrlregs.pieack.all = pieack

10、_group1;/中断应答寄存器 cputimer0regs.tcr.bit.tif = 1;/中断标志位 cputimer0regs.tcr.bit.trb = 1;/重装载位 if ( g_ncount=0 ) b+;if(b>0x0009)b=0x0000;a+;if(a>0xff05)a=0;b=0;switch(flag) case 0:break; case 1: b-; if(b<=0x0000)b=9;a=a-1;break; case 2:b+;if(b>0x0009)a=a+1;b=0x0000;break; case 3:a-; if(a<=

11、0xff00) a=0xff05;break; case 4:a+;if(a>0xff05)a=0xff00;break; g_ncount+; g_ncount%=2289;void delay(int x)/延时1ms*x int i,j; for(i=0;i<x;i+) for(j=0;j<2275;j+);2.1.3软件调试软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。本设计的软件调试使用ccs2000测试软件进行调试,即可看到正确的测试结果,最终实现了利用dsp芯片控制并用led数码管进行秒钟显示。2.2硬件系统设计

12、2.2.1方案设计本系统以tms2812为核心控制部件,利用软件编程,通过cd4511驱动led数码管进行数字显示,使用按键实现对秒表的复位等要求,尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。tms320f2812 dsp有多达56个通用数字量输入输出端口(gpio),其中绝大部分是通用i/o和专用功能复用引脚。此芯片对所有数字量i/o进行分组,每组作为一个端口,分别是gpio-a、b、c、d、e、f和g,c28x的绝大多数引脚内部都连接多个功能单元,但并不是所有功能单元都能同时工作,即在某一时刻一个引脚只能用作一种功能。所有的

13、gpio端口由各自的gpxmux复用寄存器控制,控制位设置为0时,相应的引脚作为通用数字量i/o使用;设置为1时,相应的引脚作为专用引脚使用。当设置为数字量i/o功能时,寄存器gpxdir确定i/o端口的方向;控制位清零引脚配置为数字量输入;置1配置为数字量输出。具有输入量化功能的引脚,用户可以定义量化时间长度以消除不必要的干扰信号。由于引脚的输出缓冲直接连接到输入缓冲,当前gpio引脚上的任何信号都会同时传送到外设模块。因此,当引脚配置为gpio功能时,相应的外设功能(和中断产生功能)必须通过复用寄存器禁止,否则将会首先触发中断,这一点对于pdpinta和pdpintb引脚尤其重要。如果复用

14、引脚配置为数字i/o模式,则可以直接利用数字寄存器对i/o操作(读/写)也可以利用其他辅助寄存器对各i/o进行独立操作,如将数字i/o置位(gpxset寄存器)、数字i/o清零(gpxclear寄存器)及数字i/o电平转换(gpxtoggle寄存器)。总体框图如图2所示。按键复位电路电源部分直流电源+5v2个共阴极七段led数码管数码管驱动cd4511数码管驱动cd4511控制部分tms320f2812 图2总体框图2.2.2显示电路数据显示采用cd4511驱动共阴极数码管显示, cd4511是一个用于驱动共阴极 led (数码管)显示器的 bcd 码七段码译码器。如图3所示:图3 cd451

15、1驱动数码管显示电路cd4511引脚如图4所示:图4 cd4511引脚图其功能介绍如下:         bi:4脚是消隐输入控制端,当bi=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。        lt:3脚是测试输入端,当bi=1,lt=0 时,译码输出全为1,不管输入 dcba 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。     &#

16、160;   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和数码管进行实现功能的代码编写。在整个的设计和操作阶段都还比较的顺利,但是在后期的调试过程中发现一些错误,这是由于我们最初设计的时候不够细致所造成的,虽然最后我们还是解决了问题,但还是对我们的设计进度造成了很大的影响,这是非常值得我们注意并且应该避免的。在调试过程中,难免会遇到很难解决或者自己无法解决的问题,在遇到问题时,要沉着冷静,首先自己要不断尝试修改,实在无法完成时,再向同学、老师寻求帮助,在交流中收获知识,达到查漏补缺的效果。当自己独立完成实验的调试运行,看到实验达到要求的时刻,是

温馨提示

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

评论

0/150

提交评论