DSP秒表设计论文.docx
《DSP秒表设计论文.docx》由会员分享,可在线阅读,更多相关《DSP秒表设计论文.docx(18页珍藏版)》请在冰豆网上搜索。
DSP秒表设计论文
课程设计任务书
2012-2013学年第II学期
学院:
电气工程学院
专业:
电子信息科学与技术
学生姓名:
陈丹丹
学号:
1001030102
课程设计题目:
秒表的设计
起迄日期:
2月25日~3月15日
课程设计地点:
DSP实验室
指导教师:
尹维春任先文
系主任:
王义军
下达任务书日期:
2012年2月24日
课程设计任务书
1.设计目的:
使学生基本上掌握DSP的特点和开发应用技巧,通过具体的电路设计和调试,领会DSP系统的设计要领。
培养将DSP应用到工程实践的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
首先熟悉DSP综合实验箱的硬件资源和CCS编译环境,针对实验箱的硬件模块编制应用程序在实验箱上进行调试;进行具有实际应用功能的综合设计,包括硬件设计和相应的应用软件的设计,通过电路的设计、调试,进一步掌握DSP硬件开发技能,强化理论知识的实际工程应用。
基本要求是进行各功能模块的实验,进一步要求是利用实验箱所提供的各种资源完成设计性和综合性实验。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
1、硬件电路设计,包括TMS320LF2407A基本电路、数码显示电路和基本按键,需要用protel软件完成原理图;
2、软件设计,主要指应用片上定时器做为时钟源编写秒表程序,功能要求如定时、,在实验箱上运行调试且成功;
3、课程设计报告,包括总体设计方案、硬件电路设计和软件设计的具体说明。
课程设计任务书
4.主要参考文献:
1刘和平等.数字信号处理器原理、结构及应用基础[M].北京:
机械工业出版社,2007.
2刘和平,严利平.TMS320LF240XDSP结构、原理及应用[M].北京:
北京航空航天大学出版社,2003.
3王茂飞,程昱.DSP技术与应用开发[M].清华大学出版社,2007.
4汪安民,程昱,徐保根.DSP嵌入式系统开发典型案例[M].北京:
人民邮电出版社,2007.
5.设计成果形式及要求:
原理图,数字钟程序清单,书写课程设计报告。
6.工作计划及进度:
2月27日~3月1日进行DSP基本实验的调试,查阅相关资料,确定设计方案;
3月2日~3月13日设计方案选择、原理图的绘制、相应程序编写、硬件电路、程序的调试;
3月14日~3月15日书写课程设计报告;
3月16日~月日成品检查和答辩。
7、成绩组成及考核标准:
设计任务完成情况占总成绩60%,答辩占30%,出勤占10%。
系主任审查意见:
签字:
年月日
课程设计报告
学生姓名:
陈丹丹
学号:
1001030102
学院:
电气工程学院
班级:
电技101
题目:
秒表的设计
尹维春任先文
指导教师:
职称:
2013年3月15日
1设计要求.............................................................................1
2设计原理及框图....................................................................2
3器件说明
3.1TMS320LF2407芯片引脚图.................................................7
3.2MAX2709芯片引脚图及功能介绍.........................................7
3.3数码管芯片引脚图及功能介绍.................................................8
4设计过程
4.1DSP的晶振电路设计..............................................................7
4.2PLL滤波电路..........................................................................9
4.3DSP的复位电路的设计...........................................................9
4.4总体电路图............................................................................10
4.5程序流程图..............................................................................11
4.6程序清单...................................................................................12
5仿真调试过程
5.1实验过程................................................................................16
5.2实验结果.................................................................................16
一设计要求
基于DSP设计的秒表设计要求我们通过TMS320LF2407与外围电路如MAX2709应用电路的连接及数码管与按键的应用了解并掌握2407芯片各个引脚的功能,如定时中断功能,普通I\O口功能等,同时也掌握TMS320LF2407如何驱动数码管及按键及数码管驱动芯片的应用,增强我们对TMS320LF2407的综合应用能力,及对ccs2000集成调试环境的掌握要求秒表能实现计时,启动,暂停及复位功能。
二设计原理及框图
1设计原理
本方案完全用软件实现秒表,原理为:
在TMS320LF2407内部存储器设4个字节分别存放时钟的时、分、秒.K值信息。
利用定时器模块与软件结合实现1ms秒定时中断,每产生一次中断,存储器内相应的k值加1;若k值达到1000,则将其清零,并将相应的秒字节值加1;若秒值达到60,则清零秒字节,并将分字节值加1;若分值达到60,则将时字节加1,若时字节满24,则将四个字节全部清零。
设计三个按键与软件结合分别实现启动,暂停,复位的功能。
该方案具有硬件电路简单的特点。
而且,由于是软件实现,当DSP芯片不上电,程序不执行时,时钟将不工作。
2原理框图
(1)硬件原理框图
三器件说明
1TMS320LF2407芯片
(1)引脚图
(2)引脚功能
IOPB3引脚为一般引脚功能负责与MAX7219的cs连接进行片选
SPISIMO为主机输出从机输入引脚
SPICLK为时钟输出引脚
2MAX2709芯片引脚图及功能介绍.
(1)引脚图
(2)引脚功能:
DIN:
串行数据输入端
DOUT:
串行数据输出端,用于级连扩展
LOAD:
装载数据输入
CLK:
串行时钟输入
DIG0~DIG7:
8位LED位选线,从共阴极LED中吸入电流
SEGA~SEGGDP:
7段驱动和小数点驱动
ISET:
通过一个10k电阻和Vcc相连,设置段电流。
3数码管引脚图及功能
SEGA—SEDP:
七段数码管及小数点的显示
K:
位选引脚
四设计过程
1硬件设计
(1)DSP的晶振电路设计:
本系统采用外部振荡器的时钟输入电路。
由于2407A总线最大频率为40M而内部锁相环最大倍频系数为4倍,故选用低电压型号10M的晶振。
(2)PLL滤波电路
DSP内部锁相环始终模块PLL的工作需要片外滤波电路的配合,PLL模块使用外部滤波电路来抑制信号抖动和电磁干扰,是信号抖动和干扰影响最小。
(3)复位电路
为了防止陷入死循环,增加了复位电路
(4)按键电路
Key1负责启动key2负责暂停key3负责复位
(5)总体电路图
2软件设计
(1)程序流程图
ny
nn
nn
(2)程序清单
#include"2407c.h"
//本程序实现一个秒表,精度达到ms级别,按Key1启动、Key2暂停、Key3复位,显示格式为h:
mm:
ss:
kkk
#definedisable()asm("setcINTM")//禁止全局中断
#defineenable()asm("clrcINTM")//允许全局中断
unsignedintk=0,s=0,m=0,h=0;
Constunsignedintd[8]={0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,0x0800};
/*************************************************************
*系统初始化子程序
************************************************************/
voidinitial(void)
{
asm("clrcSXM");//抑制符号位扩展
asm("clrcOVM");//累加器正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
*WDCR=0x00E8;//关闭看门狗
*SCSR1=0X00FC;//CLKIN=10M,CLKOUT=CLK*4=40M,并使能包括EVA在内的全部时钟,参见P31
*IMR=0x0002;//开INT2,参见P43
*IFR=0xFFFF;//清全部中断,写1清0,参见P43
*MCRB=0xFE3C;//启用SPI功能引脚
*MCRA=0;//IOPA、IOPB配置为一般I/O功能
*MCRC=0;//IOPE、IOPF配置为一般I/O功能
*PFDATDIR=0x00FF;//IOPF设置为输入,并上拉
*SPICCR=0x0F;//SPI软复位、上升沿输出数据、16位数据长度
*SPICTL=0x0E;//禁止过冲中断、允许TALK(发送)数据、主机模式、禁止SPI中断
//上升沿有延时,参考书P271图11.3、P276
MAX7219手册P6图1
*SPIBRR=0x0F;//SPI波特率=SYSCLK/(SPIBRR+1)=2.5M
*SPICCR=*SPICCR|0x80;//SPI恢复操作,准备发送、接收下一个字符
WSGR=0x00;//禁止所有的等待状态
}
/*************************************************************
*定时器1初始化精确定时1ms
*************************************************************/
voidtimer1_init()
{
*T1CON=0x160C;//停止运行、连续增计数模式、时钟为64分频SYSCLOCK、采用内部时钟、禁止比较操作,参见P184
//*GPTCONA=0;//禁止比较输出、无事件启动AD转换,参见P186
*T1PER=0x0270;//(0x0270+1)*64/40us=1ms
*T1CNT=0;//赋定时器初值
*EVAIFRA=*EVAIFRA;//清除可能存在的定时器1周期中断标志:
原值写回,则有中断标志的相当于写1清0,参见P177
*EVAIMRA=*EVAIMRA|0x0080;//允许定时器1周期中断,参见P179
}
/*************************************************************
*用SPI发送一个字符
*************************************************************/
voidsend(unsignedintdata)
{
*PBDATDIR=0xFF00;//IOPB输出低电平,因为IOPB3连接了MAX7219的LOAD引脚,见MAX7219手册P6
*SPITXBUF=data;//发送一个字符
while((*SPISTS&0x40)!
=0x40);//循环,直到SPI有中断,说明发送完毕
data=*SPIRXBUF;//空读SPIRXBUF,以清除SPI中断标志
*PBDATDIR=0xFF08;//IOPB.3=LOAD=1,上升沿锁存
}
/*************************************************************
*INT2中断服务程序
*************************************************************/
voidinterruptGISR2()
{unsignedinti;
switch(*PIVR)
{case0x0027:
//是定时器1周期中断
*EVAIFRA=*EVAIFRA|0x0080;//清除定时器1周期中断标志,这里不写回原值,以免破坏其他中断
k+=1;
if(k>999){k-=1000;s+=1;}//超过999ms,需要进位
if(s>59){s-=60;m+=1;}//超过59s,需要进位
if(m>59){m-=60;h+=1;}//超过59m,需要进位
send(d[0]|h);
send(d[1]|(m/10));
send(d[2]|(m%10));
send(d[3]|(s/10));
send(d[4]|(s%10));
send(d[5]|(k/100));
i=k%100;
send(d[6]|(i/10));
send(d[7]|(i%10));
break;
default:
break;}
enable();//允许总中断,因一进入ISR后,总中断就被自动关闭了
return;//中断返回
}
/*************************************************************
*其他中断
*************************************************************/
voidinterruptnothing()
{enable();return;//允许总中断然后中断返回,因一进入ISR后,总中断就被自动关闭了
}
/*************************************************************
*主程序
*************************************************************/
voidmain(void)
{unsignedintn;
disable();//关闭全局中断
initial();//初始化
timer1_init();//初始化定时器1
enable();//允许全局中断
//设置MAX7219到需要的工作状态
send(0x0C01);//关闭Shutdown模式,正常操作参考手册P7表3
send(0x09FF);//全部8个数字都采用解码模式参考手册P7表4
send(0x0A08);//亮度17/32参考手册P9表7
send(0x0B07);//扫描全部8个数码管参考手册P9表8
send(0x0F00);//关闭测试模式参考手册P10表10
for(n=0;n<8;n++)//显示全0
{send(d[n]);}
while
(1)
{if((*PFDATDIR&0X0002)==0)//若按下KEY1,则启动定时器1
{*T1CON|=0x0040;}//启动定时器1
if((*PFDATDIR&0X0004)==0)//若按下KEY2,则暂停定时器1
{*T1CON&=~0x0040;}//停止定时器1
if((*PFDATDIR&0X0008)==0)//若按下KEY3,则复位时钟
{*T1CON&=~0x0040;//停止定时器1
for(n=0;n<8;n++)//显示全0
{send(d[n]);}
k=0;s=0;m=0;h=0;//复位各时钟变量
}
}
}
五仿真调试过程:
(1)选择Project->New。
ProjectName框里输入工程名:
LED。
点击Finish,CCS创建一个叫做LED.prj的工程文件。
(2)选择Project->AddfilestoProject,把文件加到工程里。
(3)在CCS2000环境中打开本实验的工程编译(.\shuzi\shuzi.pjt)
,生成输出文件,通过仿真器把执行代码(.out的文件)下载到DSP芯片;
(4)运行程序
。
(5)仿真过程中遇到的问题:
五个源文件不在C盘内时,无法生成.out文件。
将其移至C盘后方可生成。
(6)仿真结果: