1、 DSP 设 计 报 告 基 于 D S P 的 时 钟 系 统 一、方案背景 DSP 芯片既具有高速数字信号处理功能,又具有实时性强、功耗低、集成度高等嵌入式微计算机的特点,所以随着科技的发展,DSP 技术在机电控制领域的应用愈加广泛。LED 可显示字符,且显示清晰美观、功耗低,在电子产品中也广泛应用。 现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示
2、器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个DSP应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了DSP芯片系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用DSP芯片内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的
3、时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 本设计主要介绍用DSP芯片内部的定时/计数器来实现电子时钟的方法,本设计由TMS320LF2407芯片和LED数码管为核心,辅以必要的电路,构成了一个DSP电子时钟。 二、系统方案介绍 1.本方案完全用软件实现数字时钟。 原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有
4、硬件电路简单的特点。而且,由于是软件实现,当DSP芯片不上电,程序不执行时,时钟将不工作。 2.数码管显示方案 动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。 三、总体设计 1.结构框图 利用TMS320LF2407芯片制作简易电子时钟,由六个LED数码管、五个按键、数码管驱动74HC273及数码管位选74HC138
5、如图所示: 2.程序流程图 图 电子时钟程序流程图 3.程序代码 #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,0xFF0
6、6}; void delay(unsigned int j); void main() //主程序 { DSP2407_Initialing(); Ioport_Initialing(); asm("CLRC INTM"); EVAIMRA= EVAIMRA|0x0080; //仅允许定时器1的周期中断 EVAIMRA=EVAIMRA&0x0080; //清除定时器1的周期中断 T1CON=0x170C; //timer1为连续增
7、计数模式,预分频值为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];
8、 //选通秒的个位 PFDATDIR=0xFF01; //选通74HC273 PADATDIR=tabale[sec%10]; //秒个位显示 PFDATDIE=0xFF00; //关断74HC273 PBDATDIR=table[1]; //选通秒的十位 PFDATDIR=0xFF01; //选通74HC273 PADATDIR=table[sec/10];
9、 //秒十位显示 PFDATDIR=0xFF00; //关断74HC273 } if(sec==60) {sec=0; min++; //分钟的显示 PBDATDIR=table[2]; PFDATDIR=0xFF01; PADATRDIR=table[min%10]; PFADATDIR=0xFF00; PBDATDIR=tablewe[3]; PFDATDIR=0x
10、ff01; 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; PA
11、DATDIR=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,时钟停止计时
12、 { 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,
13、调时 {delay(100); PCDATDIR=0x00EF; hour++; } } void interrupt INT2() //定时器中断程序 { swith(PIVR) //有外设中断向量寄存器PIVR判断 case 0x0027: i++; T1CNT=0x00; EVAIFRA=EVAIFRA&0x0080; break; default;break; } void delay(unsigned int j) //延
14、时程序
{
unsigned k,m;
for(m=0;m
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818