用DSP设计万年历的.docx
- 文档编号:3384016
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:16
- 大小:304.57KB
用DSP设计万年历的.docx
《用DSP设计万年历的.docx》由会员分享,可在线阅读,更多相关《用DSP设计万年历的.docx(16页珍藏版)》请在冰豆网上搜索。
用DSP设计万年历的
第一章设计要求:
………………………………………………3
第一章1.1主要要求……………………………………………3
1.2基本要求……………………………………………3
第二章电路设计………………………………………………4
2.1程序流程图…………………………………………5
第三章电路实验与调试…………………………………………6
3.1程序…………………………………………………6
3.2硬件图………………………………………………20
3.3实物效果图………………………………………21
第四章调试和解决问题…………………………………………25
4.1.1问题:
……………………………………………24
4.1.2处理方法:
………………………………………24
第五章设计总结………………………………………………25
前言设计要求
1.1主要要求
试设计一个LCD1602液晶显示器芯片进行显示的万年历,利用DSPTMS320VC5509APGE芯片控制,使用程序来控制时间的实时更新。
1.2基本要求
1、熟悉CCS3.3软件的使用;
2、万年历具有显示当前时间的功能;
一、能显示当前时间(时、分、秒);
二、能显示年、月、日;
3、可以通过万年历得知当前的年月日时分秒。
一、万年历可以进行时间(时分秒年月日)上下限的修改;
二、经过模式的转换可以由时间修改模式转化为时间的显示模式。
第二章电路设计
2.1程序流程图
第三章电路实验与调试
3.1程序
/*********************************************************************
**ModuleName:
1602LCD**
**Author:
CTH**
**Version:
1.0**
**CreateDate:
2008-8-10**
**Description:
**
**Remark:
**
**RevisionHistory:
2008-8-10**
**Web:
http:
//www.study-**
**********************************************************************/
/*********************************************************************
**实验目的:
了解1602字符液晶的使用功能**
**实验说明:
数据线是和12864液晶共用在一起的,都是从CPLD引出来的,控**
**制信号RS和E两个信号线全部都是由CPLD引出的.因此在CPLD中**
**将会定义他们各自的地址.具体还得看我们提供的手册来学习**
**实验结果:
显示两行字符,开发板之家的网址和电话。
**
**********************************************************************/
#include
#include
#include
#include
#include
#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:
CE0spacecontrolregister1
//Asynchronous,16Bit
0x00ff,//CE1_2:
CE0spacecontrolregister2
0x00ff,//CE1_3:
CE0spacecontrolregister3
0x1FFF,//CE2_1:
CE0spacecontrolregister1
//Asynchronous,16Bit
0xFFFF,//CE2_2:
CE0spacecontrolregister2
0x00FF,//CE2_3:
CE0spacecontrolregister3
0x1fff,//CE3_1:
CE0spacecontrolregister1
0x00ff,//CE3_2:
CE0spacecontrolregister2
0x00ff,//CE3_3:
CE0spacecontrolregister3
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的读写等函数**************/
/*参考:
LCD说明书
TMS320VC5509DSPExternalMemoryInterface(EMIF)ReferenceGuide
*/
//*addr为CPLD寄存器操作专用指针
voiddelay(unsignedintd_time)
{
while(d_time--);
}
main()
{
inttemp,k;
/*初始化CSL库*/
CSL_init();
/*EMIF为全EMIF接口*/
CHIP_RSET(XBSR,0x0a01);
/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);
/*初始化DSP的EMIF*/
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)
{
/*
a=20;
nian=14;
yue=9;
ri=24;
shi=8;
fen=55;
miao=43;*/
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);//第一行字符地址
for(k=0;k<16;k++)
{
wr_lcd(dat,str1[k]);
delay(200);
}*/
wr_lcd(comm,0xc0);//第二行数据指针的地址
for(k=0;k<8;k++)
{
wr_lcd(dat,str2[k]);
delay(200);
}
delay(5000);
}
//LCD输出设置
}
voiddelaynum(unsignedintd_time)
{
while(d_time--);
}
//BIT0LCD1602RS
//BIT1LCD1602EN
voidwr_lcd(unsignedchardat_comm,unsignedintcontent)
{
//EN高变低电平,液晶开始操作
//RS高电平为数据寄存器低电平为指令寄存器
Delay(40);
if(dat_comm)
{
LCD_REG=0x01;
LCD_DATA=content;//数据端口
LCD_REG=0x03;//en=0
delaynum(80);
LCD_REG=0x00;//en=0
}
else
{
LCD_REG=0x00;
LCD_DATA=content;
LCD_REG=0x02;//rs==1en==0写指令端口
delaynum(80);
LCD_REG=0x00;//en=0
}
Delay(100);
}
voidDelay(unsignedintnDelay)
{
intii,jj,kk=0;
for(ii=0;ii { for(jj=0;jj<1024;jj++) { kk++; } } } /******************************************************************************\ *Endoflcd.c \******************************************************************************/ 3.2硬件图 XDS510USB2.0DSP仿真器: Easy5509开发板 3.3实物成果图 第四章调试和解决问题 4.1调试与处理出现问题 4.1.1问题: 1.驱动安装不了 2.电脑无法与开发板链接 3.程序不知如何改写 4.1.2处理方法: 1.经过老师的讲解发现驱动只有在32位的电脑上才能安装 2.看驱动安装的教程视频一步一步设置好驱动软件并完好的链接上开发板 3.通过上网查找类似的程序加上同学们的帮忙终于成功了 第五章设计总结 在这次dsp设计中,充分锻炼了我的独立性,设计自己的方案,锻炼自己独立思考的能力。 当然,一个项目仅靠一个人的力量是有限的,另一方面,大家又互相帮助,遇到问题时,先是独立思考,当实在不行时。 我们可以一起讨论,要是在解决不了的话,我们就去请教老师,总之是尽量达成想要实现的结果。 通过设计,也使我们加深了对所学知识的理解,通过实践运用所学的知识,对我们很有帮助,只有通过动手发现自己的不足,才能在以后的道路上改进。 时间的分配也是问题,做什么事都要将时间合理的布局,只有时间安排好了,做事的效率才能提起来。 总之,通过课程设计,我得到了很多的经验和教训。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 设计 万年历