文档库 最新最全的文档下载
当前位置:文档库 › 基于DSP的数字钟设计

基于DSP的数字钟设计

基于DSP的数字钟设计
基于DSP的数字钟设计

DSP实习创新设计报告题目: 基于DSP的数字钟设计

院系名称:电气工程学院专业班级:自动化F0702班

学生姓名:学号: 20074280212

指导教师:教师职称:教授

起止日期:10.11.20-10.12.05地点: 2 -204 成绩:

签名:

年月日

创新设计与实践任务书

学生姓名专业班级自动0702 学号20074280212 题目基于DSP的时钟系统设计

课题性质创新设计课题来源自拟题目

指导老师

主要内容

采用2407DSP、LED显示模块和相关硬件电路,采用DSP的C 语言写控制程序,设计一个能够正确显示时、分、秒的基本DSP 应用系统。(应用并行口)

任务要求1.硬件电路设计

2.C语言程序设计

3.硬件电路焊装

4.系统调试

5.撰写报告

主要参考资料[1]刘和平等.TMS320LF240XDSP结构、原理与应用[M].北京:北

京航空航天大学出版社,2002.

[2]宁该娣等.DSP控制器原理与应用[M].北京:科学出版社,2002.

[3]仿真系统使用说明书.

审查意见

指导老师签字: 年月日

目录

引言 (1)

1方案论证与比较 (2)

1.1数字时钟方案 (2)

1.2数码管显示方案 (2)

2.硬件设计 (3)

2.1总体设计 (3)

2.2模块设计 (4)

2.2.1 位选芯片74HC138 (4)

2.2.2 驱动芯片74HC273 (4)

2.2.3数码管显示 (5)

2.2.4控制部分 (5)

2.3系统总原理图 (8)

3.软件设计 (10)

3.1程序流程图 (10)

3.2程序清单 (10)

3.3 程序调试步骤 (14)

结论 (16)

致谢 (17)

参考文献 (18)

引言

DSP 芯片既具有高速数字信号处理功能,又具有实时性强、功耗低、集成度高等嵌入式微计算机的特点,所以随着科技的发展,DSP 技术在机电控制领域的应用愈加广泛。LED 可显示字符,且显示清晰美观、功耗低,在电子产品中也广泛应用。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个DSP应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了DSP芯片系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用DSP芯片内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。

本文主要介绍用DSP芯片内部的定时/计数器来实现电子时钟的方法,本设计由TMS320LF2407芯片和LED数码管为核心,辅以必要的电路,构成了一个DSP电子时钟。

1方案论证与比较

1.1数字时钟方案

数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。

方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。而且,由于是软件实现,当DSP 芯片不上电,程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

1.2数码管显示方案

方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。

方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。

从节省I/O口和降低能耗出发,本设计采用方案二。

2.硬件设计

2.1总体设计

利用TMS320LF2407芯片制作简易电子时钟,由六个LED数码管、五个按键、数码管驱动74HC273及数码管位选74HC138,如下图2.1所示:

电源部分

直流电源+5V

复位电路按键

控制部分

TMS320LF2407

数码管驱动74HC273

位选部分

74HC138 6个七段共阴极数码管显示

秒、分、时位

图2.1 系统框图

2.2模块设计

2.2.1 位选芯片74HC138

74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC138可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。74HC138与74HC238逻辑功能一致,只不过74HC138为反相输出。74HC138译码器可接受3位二进制加权地址输入(A, B和C),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(-S2和-S3)和一个高有效(S1)。除非S2和S3置低且S1置高,否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需1片74HC138芯片即可轻松实现6个数码管的选择导通。如图2.2所示:

图2.2 74HC138译码器

2.2.2 驱动芯片74HC273

74HC273是一款高速CMOS器件,74HC273引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。74HC273的公共时钟(CLK)和主复位(-CLR)端可同时读取和复位(清零)所有触发器。每个D输入的状态将在时钟脉冲上升沿之前的一段就绪时间内被传输到触发器对应的

输出(Qn)上。一旦CLR输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。74HC273适用于要求原码输出或者所有存储元件共用时钟和主复

位的应用,如下图2.3所示:

图2.3 74HC273

2.2.3数码管显示

下图为共阴极数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由DSP控制器控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O 口输出段码对各个显示位来说都是相同的,如下图2.4所示:

图2.4 LED 数码管

2.2.4控制部分

TMS320LF2407A是TI公司推出的一款定点DSP控制器,它采用了高性能静态CMOS技术,使得供电电压降为3.3V,减小了控制器的功耗;40MIPS的执行速度使得指令周期缩短到25ns(40MHz),从而提高了控制器的实时控制能力;集成了32K

字的闪存(可加密)、2.5K的RAM、500ns转换时间的A/D转换器,片上事件管理器提供了可以满足各种电机的PWM接口和I/O功能,此外还提供了适用于工业控制领域的一些特殊功能,如看门狗电路、SPI、SCI和CAN控制器等,从而使它可广泛应用于工业控制领域。

图2.5 DSP2407最小系统图

如上图2.5所示,DSP2407最小系统包括6部分:DSP2407(TMS320LF2407A) 、电源、晶体振荡器接口电路、JTAG接口电路、XF引脚LED指示灯和I/O口LED指示灯。

本最小系统选择了TI公司的TPS767D301作为DC/DC转换芯片。它是一个双路低压降的电压调节器,输入为+5V电压,可输出一路+3.3V固定电压及一路1.5~5V可调电压,每路电流最大输出为1A。电源电路原理图如下图所示。+3.3V输出电压供LF2407A使用,另一路可输出+1.8V,本最小系统暂不用,如下图2.6所示:

图2.6 DSP2407最小系统电源电路原理图

PLL滤波电路。在DSP内部,有一个锁相环时钟模块PLL(Phase-Lock loops),它是被作为一个片内未设看待的,接在片内外设总线上,为DSP提供所需的各种时钟信号。DSP2407的锁相环时钟电路需要片外滤波器电路的配合,PLL局部电路图如下图2.7所示。

DSP2407A最小系统时钟硬件设计有两种工作方法。一种是利用锁相环时钟模块PLL中提供的内部振荡电路,在DSP芯片的引脚XTAL1/CLKIN与XTAL2之间连接一晶振,启动内部振荡器。另一种方法是不使用片内的振荡电路,完全由外部有源晶体振荡器产生时钟信号,直接接入XTAL1/CLKIN引脚,此时,XTAL2脚悬空。这种方法称为晶振方式。但着一方式仍是用片内的PLL倍频电路来对这一来自片外的时钟

进行倍频,以产生所需的时钟。

图2.7 锁相环电路PLL片外滤波电路

JTAG标准接口。JTAG(Joint Test Action Group)是1985年指定的检测PCB和IC

芯片的一个标准。仿真器一般提供DSP 的JATG 时钟信号,只参与数据的传输,即将目标代码通过JATG 接口从PC 机下载到目标系统的存储器中。仿真器JTAG 的仿真头如下图2.8及JTAG 仿真信号表2.1所示:

图2.8 仿真器JTAG 的仿真头

表2.1 JTAG 仿真信号

2.3系统总原理图

JTAG 信号 信号说明

仿真器输入/输出状态

DSP 输入/输出状态

EMU0 仿真引脚0 输入 输入/输出 EMU1 仿真引脚1

输入 输入/输出 PD(Vcc)

目标板存在检测信号。该引脚用于指示仿真器是否与目标板接上,以及目标板是否已经上电。DSP 的PD 引脚必须与目标板的电源Vcc 相连。

输入 输出

TCK 测试时钟。由仿真器提供的10.368MHz 的时钟信号。 输出 输入 TCK_RET 测试时钟返回。对仿真器而言,是输入信号

输入 输出 TDI 测试数据输入(针对DSP ) 输出 输入 TDO 测试数据输出(针对DSP ) 输入 输出 TMS 测试方式选择 输出 输入 -TRST 测试复位

输出

输入

图2.9 总体硬件电路图

3.软件设计

3.1程序流程图

开始

显示初始化启动定时器

i++

判断是否i=5

秒加1

判断秒是否

到60

分加1

判断分是否

到60

时加1

判断时是否

到24

时清0

按键判断

分加1时加1

启、停、复位结束显示

Tm

Th

T1,T2,T3

结束

N

Y,i=0

N

Y,分清0

N

Y,秒清0

N

Y

图3.1 电子时钟程序流程图

3.2程序清单

程序编写如下:

#include "F2407REGS_c.h" unsigned int sec,min,hour,i;

unsigned char table[]={0xFF3F,0xFF06,0xFF5B,0xFF4F,0xFF66, 0xFF6D,0xFF7D,

0xFF07,0xFF7F, 0xFF6F}; //程序初始化

unsigned char tablewe[]={0xFF00,0xFF01,0xFF02,0xFF03,0xFF04,0xFF05,0xFF06};void delay(unsigned int j);

void main() //主程序

{

DSP2407_Initialing();

Ioport_Initialing();

asm("CLRC INTM");

EV AIMRA= EV AIMRA|0x0080; //仅允许定时器1的周期中断EV AIMRA=EV AIMRA&0x0080; //清除定时器1的周期中断

T1CON=0x170C; //timer1为连续增计数模式,预分频值为128,使用内部时钟T1PER=0xF424; //timer1的周期寄存器值设为200ms

T1CNT=0x00; //timer1的计数器清0

sec=0;min=0;hour=0;i=0;

While(1)

{

PCDATDIR=0x00FF;

if(i==5) //i等于5为1秒

{

i=0;

sec++; //秒加1

PBDATDIR=tablewe[0]; //选通秒的个位

PFDATDIR=0xFF01; //选通74HC273

PADATDIR=tabale[sec%10]; //秒个位显示

PFDATDIE=0xFF00; //关断74HC273

PBDATDIR=table[1]; //选通秒的十位

PFDATDIR=0xFF01; //选通74HC273

PADATDIR=table[sec/10]; //秒十位显示

PFDATDIR=0xFF00; //关断74HC273

}

if(sec==60)

{

sec=0;

min++; //分钟的显示

PBDATDIR=table[2];

PFDATDIR=0xFF01;

PADATRDIR=table[min%10];

PFADATDIR=0xFF00;

PBDATDIR=tablewe[3];

PFDATDIR=0xff01;

PADATDIR=table[min/10];

PFDATAIR=0xFF00;

}

if(min==60)

{

min=0;

hour++; //小时的显示

PBDATDIR=tablewe[4];

PFDATDIR=0xFF01;

PADATDIR=table[hour%10];

PFDATDIR=0xFF00;

PBDATDIR=tablewe[5];

PFDATDIR=0xFF01;

PADATDIR=table[hour/10];

PFDATDIR=0xFF00;

}

if(hour==24)

hour=0;

if(PCDATDIR=0x00FE) //按键T1,时、分、秒复位为0 {

delay(100); //调用延时程序

PCDATDIR=0x00FE;

min=0;

sec=0;

hour=0;

}

if(PCDATDIR=0x00FD) //按键T2,时钟停止计时{

delay(100);

PCDATDIR=0x00FD;

PFDATDIR=0xFF00;

}

if(PCDATDIR=0x00FB) //按键T3,时钟开始计时{

delay(100);

PCDATDIR=0x00FB;

PFDATDIR=0xFF01;

}

if(PCDATDIR=0x00F7) //按键Tm,调分

{

delay(100);

PCDATDIR=0x00F7;

min++;

}

if(PCDATDIR=0x00EF) //按键Th,调时

{

delay(100);

PCDATDIR=0x00EF;

hour++;

}

}

void interrupt INT2() //定时器中断程序

{

swith(PIVR) //有外设中断向量寄存器PIVR判断

case 0x0027:

i++;

T1CNT=0x00;

EV AIFRA=EV AIFRA&0x0080;

break;

default;

break;

}

void delay(unsigned int j) //延时程序

{

unsigned k,m;

for(m=0;m

{

for(k=0;k<50;k++)

}

}

3.3 程序调试步骤

1.实验准备

(1) 连接设备:关闭计算机和实验箱电源;关闭实验箱上的三个开关。

(2) 开启设备:打开计算机电源;打开实验箱电源开关,打开ICETEK-LF2407-A 板上电源开关。如使用USB 型仿真器用附带的USB 电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。设置Code Composer Studio为Emulator 方式。

2. 启动Code Composer Studio:启动Code Composer Studio

3.3。

(1)点击菜单项Debug\Connect确认CCS软件和仿真器连接在一起。

(2)创建新工程。选择Project->New。

(3)在Project Name框里输入工程名:LED。点击Finish,CCS创建一个叫做

LED.prj的工程文件。

(4)选择Project->Add files to Project,把文件加到工程里。你也可以在左边的工程视图

窗口里右击工程,选择Add files to Project。

(5)从你所创建的文件夹里添加main.c, DoLoop.c, 和lnk.c(映射内存的连接命令文

件)。

3.编译工程:单击“Project”菜单,“Rebuild all”项,编译工程中的文件,生成T imer.out 文件。

4. 下载程序:单击“File”菜单,“Load program…”项,选择F:\2407A\Lab3-Timer

目录中的Timer.out 文件,通过仿真器将其下载到2407A DSP 上。

5. 运行程序观察结果:单击“Debug”菜单,“Run”项,运行程序,查看结果。单击“Debug”菜单,“Halt”项,停止程序运行。

这次的创新设计是十分有意义的,而且是十分必要的。一方面经过了大学四年的专业知识的学习已经储备了比较充足的相关方面知识;另一方面,即将走向社会,创新设计给了我们一个机会来使我们将所学知识应用到实践。

虽然我们通过DSP课程对DSP有了基本的框架认识,但对如何在实践中运用DSP 进行实际问题的解决还缺乏能力。本次创新设计,使我对DSP有更深的理解与认识。在做本次创新设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的。

本次创新设计最终圆满完成与熊老师的热情指导十分不开的,在设计中遇到了很多专业知识问题,最终在老师的辛勤指导和同学的探讨下,终于游逆而解。同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中可以说是困难重重,这毕竟第一次做DSP的课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固本设计是在我的指导老师熊新民老师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,熊老师都始终给予我细心的指导和不懈的支持。在此向老师致以诚挚的谢意和崇高的敬意。

在此,我还要感谢在一起愉快地度过四年大学生活的0702班各位同学,尤其是我的同组成员,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

相关文档