DSP课程设计总结报告Word文档格式.docx

上传人:b****4 文档编号:6478052 上传时间:2023-05-06 格式:DOCX 页数:16 大小:1.03MB
下载 相关 举报
DSP课程设计总结报告Word文档格式.docx_第1页
第1页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第2页
第2页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第3页
第3页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第4页
第4页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第5页
第5页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第6页
第6页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第7页
第7页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第8页
第8页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第9页
第9页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第10页
第10页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第11页
第11页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第12页
第12页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第13页
第13页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第14页
第14页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第15页
第15页 / 共16页
DSP课程设计总结报告Word文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP课程设计总结报告Word文档格式.docx

《DSP课程设计总结报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《DSP课程设计总结报告Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

DSP课程设计总结报告Word文档格式.docx

⑴此系统先显示设定的当前时间(年月日时分秒),并进行计数

⑵设计硬件外扩电路,同时设计软件程序进行软硬件联系调试

⑶连接仿真器,在液晶显示屏上进行显示

第二章系统的组成和工作原理

2.1DSPTMS320VC5509APGE芯片

2.1.1DSPTMS320VC5509APGE芯片引脚图。

2.1.2DSP开发环境

ccs3.3,Easy5509开发板的程序都是基于TI公司的CCS3.3。

2.1.3软件安装

1)首先安装CCS3.3。

安装步骤可直接运行光盘中软件目录下的CCS软件的setup.exe,按提示操作,即可完成CCS的安装,接着按手册说明顺序安装CCS补丁软件

2)然后连接好硬件与仿真器,连与电脑接口,打开电脑的设备管理器,寻找刚检测到的未知设备,更新驱动,接着安装仿真器驱动,注意要和CCS安装在同一个目录;

3)打开setupccs,设置。

具体可看手册。

最后可以打开ccs软件,进行编写程序,同时连接硬件,测试是否连接。

2.2LCD1602液晶显示器

2.2.11602LCD液晶显示原理

LCD1602液晶显示器的工作原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

引脚图:

1602采用标准的16脚接口,其中:

第1脚:

VSS为电源地第2脚:

VCC接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端,高电平

(1)时读取信息,负跳变时执行指令。

第7~14脚:

D0~D7为8位双向数据端。

第15~16脚:

空脚或背灯电源。

第三章主电路图及流程图

4.1主电路图

4.2程序总流程图

该设计用DSP程序完成。

程序总的流程图如下:

接通电源,DSP和时钟初始化,读取时钟数据,DSP进行处理程序,LCD1602显示器接受数据并进行显示。

每200ms检测一次时间。

4.3程序分块流程图

4.3.1LCD1602液晶显示模块

当DSP一上电,显示一个时间,一定时间后,显示程序中设置的时间,并实时刷新时间,将要要显示的时间送入LCD1602中,实现万年历的显示。

利用LCD160216*2的数组,自己设置两个长度为10的数组,第一行显示年月日,第二行显示时分秒,如第一行:

2014-12-12,第二行:

12-12-12。

秒表时间接近于60秒旨在能够快速的检测分秒日月,是否能够转换增加。

4.3.2时钟模块

先判断1s延迟是否到了,如否,如否,则返回,如是,则将秒加1,加到60秒时,分加1,并将秒置0,分加到60时,小时自动加1,当小时加到24时,天加1,天加到30时,月加1,月加到12时,年加1。

从而实现万年历的设计。

第四章软件程序设计

#include<

csl.h>

csl_pll.h>

csl_emif.h>

csl_chip.h>

stdio.h>

#defineled8(*((unsignedint*)0x200001))

#defineDigital8(*((unsignedint*)0x200002))

#defineLCD_REG(*((unsignedint*)0x200003))

#definebuzzer(*((unsignedint*)0x200004))

#defineUSER_SW(*((unsignedint*)0x200005))

#defineLCD_DATA(*((unsignedint*)0x200006))

#defineUART_BASE_ADDR0x200008

#defineRBR*((int*)(UART_BASE_ADDR+0))

#defineTHR*((int*)(UART_BASE_ADDR+0))

#defineIER*((int*)(UART_BASE_ADDR+1))

#defineIIR*((int*)(UART_BASE_ADDR+2))

#defineFCR*((int*)(UART_BASE_ADDR+2))

#defineLCR*((int*)(UART_BASE_ADDR+3))

#defineMCR*((int*)(UART_BASE_ADDR+4))

#defineLSR*((int*)(UART_BASE_ADDR+5))

#defineMSR*((int*)(UART_BASE_ADDR+6))

#defineSCR*((int*)(UART_BASE_ADDR+7))

#defineDLL*((int*)(UART_BASE_ADDR+0))

#defineDLM*((int*)(UART_BASE_ADDR+1))

#definecomm0

#definedat1

/*要显示的字符*/

unsignedcharstr1[]={"

2014-12-30"

};

unsignedcharstr2[]={"

23-59-55"

Uint16nian,yue,ri,shi,fen,miao,a;

voidDelay(unsignedintnDelay);

voidwr_lcd(unsignedchardat_comm,unsignedintcontent);

voiddelaynum(unsignedintd_time);

/*锁相环的设置*/

PLL_ConfigmyConfig={

0,//IAI:

thePLLlocksusingthesameprocessthatwasunderway

//beforetheidlemodewasentered

1,//IOB:

IfthePLLindicatesabreakinthephaselock,

//itswitchestoitsbypassmodeandrestartsthePLLphase-locking

//sequence

12,//PLLmultiplyvalue;

multiply12times

2//Divideby2PLLdividevalue;

itcanbeeitherPLLdividevalue

//(whenPLLisenabled),orBypass-modedividevalue

//(PLLinbypassmode,ifPLLmultiplyvalueissetto1)

/*SDRAM的EMIF设置*/

EMIF_Configemiffig={

0x221,//EGCR:

theMEMFREQ=00,theclockforthememoryisequaltocpufrequence

//theWPE=0,forbidenthewritingpostingwhenwedebugtheEMIF

//theMEMCEN=1,thememoryclockisreflectedontheCLKMEMpin

//theNOHOLD=1,HOLDrequestsarenotrecognizedbytheEMIF

0xFFFF,//EMI_RST:

anywritetothisregisterresetstheEMIFstatemachine

0x1fff,//CE3_1:

CE0spacecontrolregister1

0x00ff,//CE3_2:

CE0spacecontrolregister2

0x00ff,//CE3_3:

CE0spacecontrolregister3

0x1fff,//CE1_1:

//Asynchronous,16Bit

0x00ff,//CE1_2:

0x00ff,//CE1_3:

CE0spacecontrolregister3

0x1FFF,//CE2_1:

0xFFFF,//CE2_2:

0x00FF,//CE2_3:

0x2911,//SDC1:

SDRAMcontrolregister1

//TRC=8

//SDSIZE=0;

SDWID=0

//RFEN=1

//TRCD=2

//TRP=2

0x0410,//SDPER:

SDRAMperiodregister

//7ns*4096

0x07FF,//SDINIT:

SDRAMinitializationregister

//anywritetothisregistertoinittheallCEspaces,

//doitafterhardwareresetorpoweruptheC55xdevice

0x0131//SDC2:

SDRAMcontrolregister2

//SDACC=0;

//TMRD=01;

//TRAS=0101;

//TACTV2ACTV=0001;

};

/*************以下内容为LCD的读写等函数**************/

TMS320VC5509DSPExternalMemoryInterface(EMIF)ReferenceGuide

*/

//*addr为CPLD寄存器操作专用指针

voiddelay(unsignedintd_time)

{

while(d_time--);

}

main()

inttemp,k;

CSL_init();

CHIP_RSET(XBSR,0x0a01);

PLL_config(&

myConfig);

EMIF_config(&

emiffig);

a=20;

nian=14;

yue=12;

ri=31;

shi=23;

fen=59;

miao=55;

wr_lcd(comm,0x01);

//清屏指令

wr_lcd(comm,0x38);

//设定LCD为16*2,5*7矩阵,8位数据接口

wr_lcd(comm,0x0f);

//显示ON光标ON,闪烁ON

wr_lcd(comm,0x06);

//文字不动,光标

while

(1)

{

miao++;

if(miao==60)

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

ri++;

if(ri==32)

ri=1;

yue++;

if(yue==13)

yue=1;

nian++;

if(nian==99)

nian=0;

a++;

}

str1[0]=a/10+0x30;

str1[1]=a%10+0x30;

str1[2]=nian/10+0x30;

str1[3]=nian%10+0x30;

str1[4]='

-'

;

str1[5]=yue/10+0x30;

str1[6]=yue%10+0x30;

str1[7]='

str1[8]=ri/10+0x30;

str1[9]=ri%10+0x30;

str2[0]=shi/10+0x30;

str2[1]=shi%10+0x30;

str2[2]='

:

'

str2[3]=fen/10+0x30;

str2[4]=fen%10+0x30;

str2[5]='

str2[6]=miao/10+0x30;

str2[7]=miao%10+0x30;

wr_lcd(comm,0x80);

//第一行字符地址

for(k=0;

k<

10;

k++)

wr_lcd(dat,str1[k]);

delay(200);

}

/*wr_lcd(comm,0x80);

16;

}*/

wr_lcd(comm,0xc0);

//第二行数据指针的地址

8;

{

wr_lcd(dat,str2[k]);

delay(200);

}

delay(5000);

}

//LCD输出设置

voiddelaynum(unsignedintd_time)

voidwr_lcd(unsignedchardat_comm,unsignedintcontent)

Delay(40);

if(dat_comm)

LCD_REG=0x01;

LCD_DATA=content;

//数据端口

LCD_REG=0x03;

//en=0

delaynum(80);

LCD_REG=0x00;

else

LCD_REG=0x02;

//rs==1en==0写指令端口

//en=0

Delay(100);

}

voidDelay(unsignedintnDelay)

intii,jj,kk=0;

for(ii=0;

ii<

nDelay;

ii++)

for(jj=0;

jj<

1024;

jj++)

kk++;

*Endoflcd.c

第五章设计总结

在两周万年历的课程设计中,我首先学到的是软件的安装,在前几天,一直安装CCS3.3和驱动,尽管电脑系统是32位的,因为装不上补丁不能用。

接下来学习的就是软件的编写,基本要求是可对年月日时分秒进行计数。

当秒加到60时,分自动加1,当分加到60时,小时自动加1,当小时加到24,天加1,天加到30时,月加1,月加到12时,年加1。

这部分我们原先需要用的是定时器,但是一直无法显示出想要的效果,最后是在老师的指导下将定时器那部分程序直接用延时程序代替。

最后将软硬件联系调试,在1602上正常显示时间并进行运作。

通过这两周的学习,对DSP有了更深的了解,掌握了对现有器件进行编程,实现各种简单地显示控制。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2