1、I编号(学号):基于 DSP 的数字钟设计题 目: 基于 DSP 的数字钟设计 学 院: 信息与电气工程学院 专 业: 电子信息工程 姓 名: 指导教师: 成 绩: 完成日期: 年 月 日0基于 DSP 的数字钟设计DSP 芯片既具有高速数字信号处理功能,又具有实时性强、功耗低、集成度高等嵌入式微计算机的特点,所以随着科技的发展,DSP 技术在机电控制领域的应用愈加广泛。LED 可显示字符 ,且显示清晰美观、功耗低 ,在电子产品中也广泛应用。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式
2、电子钟用集成电路计时时,译码代替机械式传动,用 LED 显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个 DSP 应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了 DSP 芯片系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用 DSP 芯片内部的可编程定时/ 计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;
3、二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203 等都可以满足高精度的要求。本文主要介绍用 DSP 芯片内部的定时/计数器来实现电子时钟的方法,本设计由TMS320LF2407 芯片和 LED 数码管为核心,辅以必要的电路,构成了一个 DSP 电子时钟。数字时钟方案数字时钟是本设计的最主要的部分。本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现 1 秒定时中断,每产生一次中断,存储器内相应的秒值加 1;若秒值达到60,则将其清零,并将相应的
4、分字节值加 1;若分值达到 60,则清零分字节,并将时字节值加 1;若时值达到 24,则将十字节清零。该方案具有硬件电路简单的特点。1而且,由于是软件实现,当 DSP 芯片不上电,程序不执行时,时钟将不工作。数码管显示方案初步计划采用动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了 I/O 口,降低了能耗。总体设计利用 TMS320LF2407 芯片制作简易
5、电子时钟,由六个 LED 数码管、五个按键、数码管驱动 74HC273 及数码管位选 74HC138,如下图所示:电源部分直流电源 + 5 V复位电路 按键控制部分T M S 3 2 0 L F 2 4 0 7数码管驱动7 4 H C 2 7 3位选部分7 4 H C 1 3 86 个七段共阴极数码管显示秒 、 分 、 时位图系统框图2模块设计位选芯片 74HC13874HC138 是一款高速 CMOS 器件,74HC138 引脚兼容低功耗肖特基TTL( LSTTL)系列。74HC138 可充当一个 8 输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。74HC13
6、8 与 74HC238 逻辑功能一致,只不过74HC138 为反相输出。74HC138 译码器可接受 3 位二进制加权地址输入(A, B 和C),并当使能时,提供 8 个互斥的低有效输出(Y0 至 Y7)。74HC138 特有 3 个使能输入端:两个低有效(-S2 和-S3)和一个高有效(S1)。除非 S2 和 S3 置低且 S1置高,否则 74HC138 将保持所有输出为高。利用这种复合使能特性,仅需 1 片74HC138 芯片即可轻松实现 6 个数码管的选择导通。如图 2.2 所示:图 74HC138 译码器驱动芯片 74HC27374HC273 是一款高速 CMOS 器件,74HC273
7、 引脚兼容低功耗肖特基TTL( LSTTL)系列。74HC273 具有八路边沿触发, D 型触发器,带独立的 D 输入和 Q 输出。74HC273 的公共时钟(CLK)和主复位(-CLR )端可同时读取和复位(清零)所有触发器。每个 D 输入的状态将在时钟脉冲上升沿之前的一段就绪时间内被传输到触发器对应的输出(Qn)上。一旦 CLR 输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。74HC273 适用于要求原码输出或者所3有存储元件共用时钟和主复位的应用,如下图所示:74HC273数码管显示 下图为共阴极数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与
8、 1 个 8位的锁存器输出相连,由 DSP 控制器控制组合 09 十个数据,如令其显示 1 则 b,c引脚(即 2,3 引脚)送高电平,此时数码管显示 1。由于各位的段码线并联,8 位I/O 口输出段码对各个显示位来说都是相同的,如下图 2.4 所示:LED 数码管 控制部分TMS320LF2407A 是 TI 公司推出的一款定点 DSP 控制器,它采用了高性能静态CMOS 技术,使得供电电压降为 33V ,减小了控制器的功耗;40MIPS 的执行速度使得指令周期缩短到 25ns(40MHz),从而提高了控制器的实时控制能力;集成了 32K4字的闪存(可加密) 、25K 的 RAM、500ns
9、 转换时间的 AD 转换器,片上事件管理器提供了可以满足各种电机的 PWM 接口和 IO 功能,此外还提供了适用于工业控制领域的一些特殊功能,如看门狗电路、SPI、SCI 和 CAN 控制器等,从而使它可广泛应用于工业控制领域。DSP2407 最小系统图如上图 2.5 所示,DSP2407 最小系统包括 6 部分:DSP2407(TMS320LF2407A) 、电源、晶体振荡器接口电路、JTAG 接口电路、XF 引脚 LED 指示灯和 I/O 口 LED指示灯。本最小系统选择了 TI 公司的 TPS767D301 作为 DC/DC 转换芯片。它是一个双路低压降的电压调节器,输入为+5V 电压,
10、可输出一路 +3.3V 固定电压及一路1.55V 可调电压,每路电流最大输出为 1A。电源电路原理图如下图所示。+3.3V 输出电压供 LF2407A 使用,另一路可输出+1.8V,本最小系统暂不用,如下图所示5DSP2407 最小系统电源电路原理图PLL 滤波电路。在 DSP 内部,有一个锁相环时钟模块 PLL(Phase-Lock loops),它是被作为一个片内未设看待的,接在片内外设总线上,为 DSP 提供所需的各种时钟信号。DSP2407 的锁相环时钟电路需要片外滤波器电路的配合,PLL 局部电路图如下图 2.7 所示。DSP2407A 最小系统时钟硬件设计有两种工作方法。一种是利用
11、锁相环时钟模块PLL 中提供的内部振荡电路,在 DSP 芯片的引脚 XTAL1/CLKIN 与 XTAL2 之间连接一晶振,启动内部振荡器。另一种方法是不使用片内的振荡电路,完全由外部有源晶体振荡器产生时钟信号,直接接入 XTAL1/CLKIN 引脚,此时,XTAL2 脚悬空。这种方法称为晶振方式。但着一方式仍是用片内的 PLL 倍频电路来对这一来自片外的时钟进行倍频,以产生所需的时钟。锁相环电路 PLL 片外滤波电路JTAG 标准接口。JTAG(Joint Test Action Group)是 1985 年指定的检测 PCB 和 IC6芯片的一个标准。仿真器一般提供 DSP 的 JATG
12、时钟信号,只参与数据的传输,即将目标代码通过 JATG 接口从 PC 机下载到目标系统的存储器中。仿真器 JTAG 的仿真头如下图 2.8 及 JTAG 仿真信号表 2.1 所示:仿真器 JTAG 的仿真头JTAG 仿真信号系统总原理图JTAG 信号 信号说明 仿真器输入/输出状态 DSP 输入 /输出状态EMU0 仿真引脚 0 输入 输入 /输出EMU1 仿真引脚 1 输入 输入 /输出PD(Vcc)目标板存在检测信号。该引脚用于指示仿真器是否与目标板接上,以及目标板是否已经上电。DSP的 PD 引脚必须与目标板的电源Vcc 相连。输入 输出TCK 测试时钟。由仿真器提供的10.368MHz
13、 的时钟信号。输出 输入TCK_RET 测试时钟返回。对仿真器而言,是输入信号输入 输出TDI 测试数据输入(针对 DSP) 输出 输入TDO 测试数据输出(针对 DSP) 输入 输出TMS 测试方式选择 输出 输入-TRST 测试复位 输出 输入7图 2.9 总体硬件电路图8软件设计程序流程图开始显示初始化启动定时器i + +判断是否i = 5秒加 1判断秒是否到 6 0分加 1判断分是否到 6 0时加 1判断时是否到 2 4时清 0按键判断分加 1时加 1启 、 停 、 复位结束显示T m T hT 1 , T 2 ,T 3结束NY ,i = 0NY , 分清 0NY ,秒清 0NY 图 3.1 电子时钟程序流程图程序清单程序编写如下:#include “F2407REGS_c.h“unsigned int sec,min,hour,i;unsigned char table=0xFF3F,0xFF06,0xFF5B,0xFF4F,0xFF66, 0xFF6D,0xFF7D, 0xFF07,0xFF7F, 0xFF6F; /程序初始化