.专业整理.
.学习帮手.
课 程 设 计 报 告
设计名称 :DSP原理及应用课程设计 专业班级 : 自动化1242 学生姓名 : 潘成 学 号 : 1104421226 指导教师 : 钟菲 徐航 完成时间 : 2016年3月24日
成 绩 评 定
考核 平时 设计 设计成果综合评 容 表现 报告 和答辩 定成绩 成绩
长 春 工 程 学 院
.专业整理.
纪律要求和成绩考核办法
(纪律要求和成绩考核办法打印在封皮背面)
1.不允许在实验室吸烟、吃零食、玩手机,累计警告三次者,考核成绩降为及格,屡教不改者成绩不及格;不准带无关人员到实验室活动,否则扣平时表现分。
2.参加本次课程设计时间不足三分之二或旷课3天以上者,不得参加本次考核,按不及格处理。
3.病事假必须有请假条,需经班主任或有关领导批准,否则按旷课处理。 4.过程考核和综合成绩在教师手册中要有记载。
5.课程设计的考核由指导教师根据学生平时表现(出勤、学习态度、工作进展、遵守纪律情况等)、设计成果(完成情况)、设计报告是否规、答辩等几个方面,结合考核纲要规定的各项成绩权重,综合后给出课程设计总成绩。
6.成绩评定采用五级分制,即优、良、中、及格和不及格。
7.课程设计结束一周,指导教师提交课程设计成绩和课程设计总结。
.学习帮手.
.专业整理.
基于DSP的数字时钟设计
一、系统设计任务及功能概述
(一)硬件电路设计,包括TMS320LF2407基本电路、数码显示电路和基本按键,需要用altium designer软件完成原理图;
(二)软件设计,主要指应用片上定时器作为时钟源编写数字钟程序,数字电子钟功能要求能调小时、分钟、秒钟,还有随时暂停的功能等,在实验箱上运行调试成功并能用数码管显示;
(三)课程设计报告,包括总体设计方案、硬件电路设计和软件设计的具体说明。
二、设计方案论证
(一)数字时钟方案
数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。原理为:在单片机部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。而且,由于是软件实现,当DSP芯片不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。 (二)数码管显示方案
方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
.学习帮手.
.专业整理.
(三)秒时间显示方式选择方案
本次设计的延时可以采用部定时器与软件结合的1秒延时,也可以直接编写一个延时程序,实现1秒延时。
方案一:本方案采用部定时器实现1秒延时。原理为:在单片机部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器相应的秒值加1;若秒达到60,则将其清零,并将相应的分加1;若分达到60,则清零分,并将时加1;若值达到24,则将十字节清零。
方案二:本方案完全用软件实现1秒延时。原理为:编写一个延时函数DELAY,用for语句实现秒值循环从0加到60,秒每加1,调用一次延时函数,当秒值大于60,则将分加1,当分加到60,则将分赋0值,并将时加1,当时加到24,将时赋0值。本方案采用的延时方法编程简单,容易理解。
结论:根据两种方案的比较,第二种方案编写程序简单易懂,所以采用第二种方案。
三、硬件设计
(一)总体思路
DSP2407最小系统是整个芯片能正常运行的最基本要求,首先由 DSP最小系统的设计包括电源转换电路、复位电路等组成。然后利用TMS320LF2407芯片制作简易电子时钟,利用芯片上的定时器编写1ms的时间子程序,继而写出主函数程序。总的模块由6个LED数码管显示、四个按键调试时间、数码管驱动模块74HC273及数码管位选模块74HC138构成。
电源电路芯片复位电路TMS320LF2407位选部分LED显示电路按键电路驱动部分 图1 系统框图
(二)组件介绍
1.TMS320LF2407芯片
(1). 高性能静态CMOS技术,供电电压为3.3V,指令周期为33ns (2).片有高达32K字的FLASH程序存储器
(3).2KB SARAM,544字DARAM,外扩64千字的程序ROM,64千字的数据RAM
.学习帮手.
.学习帮手.
64K字I/O寻址空间
(13).5个外部中断
2. 位选芯片74HC138
(7).10位A/D转换器
(6).0看门狗定时模块
(9).串行通信接口SCI模块
(8).控制局域网络CAN模块
(4).两个事件管理器EVA和EVB
(10).16位串行外设SPI接口模块
(11).基于锁相环PLL的时钟发生器
.专业整理.
(12).高达40个可单独编程或复用的通用I/O引脚
(14).电源管理包括3种低功耗模式,能独立地将外设器件转入低功耗工作模式
(5).可扩展外部存储器总共192K字空间:64K程序存储空间,64K字数据存储器空间,
图2 TMS320LF2407
.专业整理.
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个数码管的选择导通。如图3所示:
图3 74HC138译码器
3.驱动芯片74HC273
74HC273是一款高速CMOS器件,74HC273引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。74HC273的公共时钟(CLK)和主复位(-CLR)端可同时读取和复位(清零)所有触发器。每个D输入的状态将在时钟脉冲上升沿之前的一段就绪时间被传输到触发器对应的输出(Qn)上。一旦CLR输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。74HC273适用于要求原码输出或者所有存储元件共用时钟和主复位的应用,如下图4所示:
.学习帮手.
.专业整理.
图4 74HC273
4.数码管显示
下图为共阴极数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由DSP控制器控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相同的,如下图5所示:
图5 LED 数码管
.学习帮手.
.专业整理.
5.外部时钟电路
DSP2407A最小系统时钟硬件设计有两种工作方法。一种是利用锁相环时钟模块PLL中提供的部振荡电路,在DSP芯片的引脚XTAL1/CLKIN与XTAL2之间连接一晶振,启动部振荡器。另一种方法是不使用片的振荡电路,完全由外部有源晶体振荡器产生时钟信号,直接接入XTAL1/CLKIN引脚,此时,XTAL2脚悬空。这种方法称为晶振方式。但着一方式仍是用片的PLL倍频电路来对这一来自片外的时钟进行倍频,以产生所需的时钟。在此次设计中我是用第二种方式电路图如下图6所示:
图6 外部时钟电路图
6.电源电路
2407本设计不需要用到1.8V的电压所以选择使用TI公司的TPS76333作为DC/DC转换芯片。它是一个 LDO电压调节器, 0.15A, 3.3 V输出 ±3%, 2.7 → 10 V输入,可输出一路+3.3V固定电压。电源电路原理图如下图所示。+3.3V输出电压供LF2407A使用。其原理图如图7所示:
图7 电源电路电路图
.学习帮手.
.专业整理.
7.按键电路
设计采用五个按键的设计。都实现以下的五个功能调时、调分、启动、停止、4个功能,外加复位系统一个按键,基本满足了设计需求,采用独立按键的设计方便简单,制造难度小,但同时如要拓展则会占用其他端口,但设计并没考虑功能拓展设计所以不再考虑。其电路图如图8所示:
图8 按键电路原理图
.学习帮手.
.专业整理.
四、软件设计
(一)程序流程图
开始时加1显示初始化N启动定时器i++N判断是否i=5Y i=0秒加1T1,T2,T3N分加1秒是否60Y 秒清0分加一N分是否到60Y 分清0图9 电子时钟程序流程图
时是否到24Y时清0Tm按键判断Th启、停、复位时加1显示结束
.学习帮手.
.专业整理.
(二)程序清单
程序编写如下:
#include %unsigned int sec,min,hour,i;
unsigned
char
table[]={0xFF3F,0xFF06,0xFF5B,0xFF4F,0xFF66,
0xFF6D,0xFF7D,
0xFF07,0xFF7F, 0xFF6F}; //程序初始化 unsigned
tablewe[]={0xFF00,0xFF01,0xFF02,0xFF03,0xFF04,0xFF05,0xFF06};void delay(unsigned int j);
void main() //主程序 {
DSP2407_Initialing(); Ioport_Initialing(); asm(\
EVAIMRA= EVAIMRA|0x0080; //仅允许定时器1的周期中断 EVAIMRA=EVAIMRA&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]; //秒个位显示 PFDATDIE=0xFF00; //关断74HC273 PBDATDIR=table[1]; //选通秒的十位
char
PFDATDIR=0xFF01; //选通74HC273
PADATDIR=table[sec/10]; //秒十位显示
.学习帮手.
.专业整理.
PFDATDIR=0xFF00; //关断74HC273 }
if(sec==60) {
sec=0;
min++; //分钟的显示 PBDATDIR=table[2]; PFDATDIR=0xFF01; PADATRDIR=table[min]; 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]; 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;
EVAIFRA=EVAIFRA&0x0080;
.学习帮手.
.专业整理.
break; default; break; }
void delay(unsigned int j) //延时程序 {
unsigned k,m; for(m=0;m for(k=0;k<50;k++) } } .学习帮手. .专业整理. 五、调试结果 (一)实验过程 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。点击 LED.prj的工程文件。 (4) 选择Project->Add files to Project,把文件加到工程里。你也可以在左边的工程视图窗口里右击工程,选择 Add files to Project。 (5) 从你所创建的文件夹里添加 main.c, DoLoop.c, 和lnk.c(映射存的连接命令文件)。 3. 编译工程:单击“Project”菜单,“Rebuild all”项,编译工程中的文件,生成Timer.out 文件。 4. 下载程序:单击“File”菜单,“Load program…”项,选择F:\\2407A\\Lab3-Timer 目录中的Timer.out 文件,通过仿真器将其下载到2407A DSP 上。 5. 运行程序观察结果:单击“Debug”菜单,“Run”项,运行程序,查看结果。单击“Debug”菜单,“Halt”项,停止程序运行 (二)调试结果 基本完成了设计要求。实现了调小时、分钟、秒钟,还有随时暂停的功能等,在实验箱上运行调试成功并能用数码管显示,所以设计是成功的。 Finish,CCS创建一个叫做 .学习帮手. .专业整理. 六、总结 这次的课程设计是十分有意义的,而且是十分必要的。一方面经过了大学四年的专业知识的学习已经储备了比较充足的相关方面知识;另一方面,即将走向社会,创新设计给了我们一个机会来使我们将所学知识应用到实践。 在调试过程中,难免会遇到很难解决或者自己无法解决的问题,在遇到问题时,要沉着冷静,首先自己要不断尝试修改,实在无法完成时,再向同学、老师寻求帮助,在交流中收获知识,达到查漏补缺的效果。当自己独立完成实验的调试运行,看到实验达到要求的时刻,是实验最快乐的时刻,也是有所收获,感觉充实的时刻。 虽然我们通过DSP课程对DSP有了基本的框架认识,但对如何在实践中运用DSP进行实际问题的解决还缺乏能力。本次创新设计,使我对DSP有更深的理解与认识。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的。 .学习帮手. .专业整理. 参考文献 [1] 和平,LF240XDSP结构原理及应用[M].北京 .北京航空航大学出版2002 [2] 宁该娣等,DSP控制器原理与应用[M].北京.科学,2002 [3] 牛小兵,DSP控制器实用教程[M].北京.国防工业,2007 [4] 汉才.单片机原理及系统设计[M].北京.清华大学,2002 [5] 许敬淑.傅华明.川,现代电子技术[J].北京.电子,2007 [6] 仿真系统使用说明书. [7] 程佩青,数字信号处理教程(第二版).北京.清华大学.2001 [8] 王秋生,数字信号处理器(DSP)易学通.人民邮电.2008 [9] 彭启琮等,DSP 技术的发展与应用,第二版,高等教育,2007 [10] 邹彦,DSP 原理及应用,第1 版,电子工业,2006 [11] 雄伟,DSP 集成开发与应用实例.第1 版.电子工业.2002 [12] 洪涛等,数字信号处理.第一版.华中科技大学.2007 .学习帮手.