当前位置:文档之家› DSP课程设计总结报告

DSP课程设计总结报告

课程设计总结报告课程名称DSP控制器及其应用设计题目万年历设计专业电子信息工程班级姓名学号指导教师报告成绩信息工程学院二〇一四年六月十三日目录前言 ................................................................ 错误!未定义书签。

第一章设计要求 ................................................ 错误!未定义书签。

1.1 基本要求................................................. 错误!未定义书签。

1.2 提高要求................................................. 错误!未定义书签。

第二章系统的组成和工作原理 ........................... 错误!未定义书签。

2.1 DSP TMS320 VC5509APGE芯片的工作原理错误!未定义书签。

2.2 LCD1602液晶显示器的工作原理 (6)第三章主电路图及程序流程图 (7)3.1主电路图 (7)3.2程序总流程图 (7)3.3程序分块流程图 (8)第四章软件程序设计 (9)4.1 程序 (9)4.2 调试与处理出现问题 (9)第五章设计总结 .............................................. 错误!未定义书签。

附录1:参考文献 ............................................... 错误!未定义书签。

前言随着科技的不断发展,诞生了越来越多的电子产品。

比如手表,时钟等等,现在的钟表在功能设计上不断地完善,不仅仅可以显示时间(时分秒),而且可以显示年月日,星期几等等。

科技的发展离不开人类的不断努力,培养高科技人才是21世纪必做的事。

作为祖国的接班人更要努力学习好电子信息这门科技专业。

因此我们要不断的接触各种电子产品,加强对电子技术技术理论的掌握和实际的应用。

在本次的实验中,我们就以DSP芯片为核心控制电子钟,具有多项显示,用2812上的LCD液晶显示屏显示当前年、月、日、时、分、秒。

第一章设计要求本次课程设计要求设计一个万年历,利用DSPTMS320 VC5509APGE芯片控制,使用程序来控制时间的实时更新,当秒加到60时,分自动加1,当分加到60时,小时自动加1,当小时加到24,天加1,天加到30时,月加1,月加到12时,年加1,使用I602上的LCD液晶显示屏显示当前年、月、日、时、分、秒。

对现有器件进行简单地编程,实现各种简单地显示控制。

1.1设计目的1. 学习软件的安装,熟悉运用CCS v3.3软件,加强软件编程能力;2. 学习DSP芯片的I/O端口的控制方法;3. 了解1602字符液晶的使用功能4. 能够对现有器件进行简单地编程,实现各种简单地显示控制。

1.2 基本要求⑴此系统先显示设定的当前时间(年月日时分秒),并进行计数⑵设计硬件外扩电路,同时设计软件程序进行软硬件联系调试⑶连接仿真器,在液晶显示屏上进行显示第二章系统的组成和工作原理2.1 DSP TMS320 VC5509APGE芯片2.1.1DSP TMS320 VC5509APGE芯片引脚图。

2.1.2 DSP开发环境ccs 3.3,Easy5509开发板的程序都是基于TI 公司的CCS3.3 。

2.1.3 软件安装1) 首先安装CCS3.3。

安装步骤可直接运行光盘中软件目录下的CCS 软件的setup.exe,按提示操作,即可完成CCS 的安装,接着按手册说明顺序安装CCS补丁软件2)然后连接好硬件与仿真器,连与电脑接口,打开电脑的设备管理器,寻找刚检测到的未知设备,更新驱动,接着安装仿真器驱动,注意要和CCS 安装在同一个目录;3)打开set up ccs,设置。

具体可看手册。

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

2.2 LCD1602液晶显示器2.2.1 1602LCD液晶显示原理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.1 LCD1602液晶显示模块当DSP一上电,显示一个时间,一定时间后,显示程序中设置的时间,并实时刷新时间,将要要显示的时间送入LCD1602中,实现万年历的显示。

利用LCD1602 16*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>#include <csl_pll.h>#include <csl_emif.h>#include <csl_chip.h>#include <stdio.h>#define led8 (*((unsigned int *)0x200001))#define Digital8 (*((unsigned int *)0x200002))#define LCD_REG (*((unsigned int *)0x200003))#define buzzer (*((unsigned int *)0x200004))#define USER_SW (*((unsigned int *)0x200005))#define LCD_DATA (*((unsigned int *)0x200006))#define UART_BASE_ADDR 0x200008#define RBR *((int *)(UART_BASE_ADDR+0))#define THR *((int *)(UART_BASE_ADDR+0))#define IER *((int *)(UART_BASE_ADDR+1))#define IIR *((int *)(UART_BASE_ADDR+2))#define FCR *((int *)(UART_BASE_ADDR+2))#define LCR *((int *)(UART_BASE_ADDR+3))#define MCR *((int *)(UART_BASE_ADDR+4))#define LSR *((int *)(UART_BASE_ADDR+5))#define MSR *((int *)(UART_BASE_ADDR+6))#define SCR *((int *)(UART_BASE_ADDR+7))#define DLL *((int *)(UART_BASE_ADDR+0))#define DLM *((int *)(UART_BASE_ADDR+1))#define comm 0#define dat 1/*要显示的字符*/unsigned char str1[]={"2014-12-30"};unsigned char str2[]={"23-59-55"};Uint16 nian,yue,ri,shi,fen,miao,a;void Delay(unsigned int nDelay);void wr_lcd(unsigned char dat_comm, unsigned int content);void delaynum(unsigned int d_time);/*锁相环的设置*/PLL_Config myConfig = {0, //IAI: the PLL locks using the same process that was underway//before the idle mode was entered1, //IOB: If the PLL indicates a break in the phase lock,//it switches to its bypass mode and restarts the PLL phase-locking//sequence12, //PLL multiply value; multiply 12 times2 //Divide by 2 PLL divide value; it can be either PLL divide value//(when PLL is enabled), or Bypass-mode divide value//(PLL in bypass mode, if PLL multiply value is set to 1)};/*SDRAM的EMIF设置*/EMIF_Config emiffig = {0x221, //EGCR : the MEMFREQ = 00,the clock for the memory is equal to cpu frequence// the WPE = 0 ,forbiden the writing posting when we debug the EMIF// the MEMCEN = 1,the memory clock is reflected on the CLKMEM pin// the NOHOLD = 1,HOLD requests are not recognized by the EMIF0xFFFF, //EMI_RST: any write to this register resets the EMIF state machine0x1fff, //CE3_1: CE0 space control register 10x00ff, //CE3_2: CE0 space control register 20x00ff, //CE3_3: CE0 space control register 30x1fff, //CE1_1: CE0 space control register 1// Asynchronous, 16Bit0x00ff, //CE1_2: CE0 space control register 20x00ff, //CE1_3: CE0 space control register 30x1FFF, //CE2_1: CE0 space control register 1// Asynchronous, 16Bit0xFFFF, //CE2_2: CE0 space control register 20x00FF, //CE2_3: CE0 space control register 30x1fff, //CE3_1: CE0 space control register 10x00ff, //CE3_2: CE0 space control register 20x00ff, //CE3_3: CE0 space control register 30x2911, //SDC1: SDRAM control register 1// TRC = 8// SDSIZE = 0;SDWID = 0// RFEN = 1// TRCD = 2// TRP = 20x0410, //SDPER : SDRAM period register// 7ns *40960x07FF, //SDINIT: SDRAM initialization register// any write to this register to init the all CE spaces,// do it after hardware reset or power up the C55x device0x0131 //SDC2: SDRAM control register 2// SDACC = 0;// TMRD = 01;// TRAS = 0101;// TACTV2ACTV = 0001;};/*************以下容为LCD的读写等函数**************/TMS320VC5509 DSP External Memory Interface (EMIF) Reference Guide*///*addr为CPLD寄存器操作专用指针void delay(unsigned int d_time){while(d_time--);}main(){int temp,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,闪烁ONwr_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); //第一行字符地址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输出设置}void delaynum(unsigned int d_time){while(d_time--);}void wr_lcd(unsigned char dat_comm, unsigned int content) {Delay(40);if(dat_comm){LCD_REG=0x01;LCD_DATA=content; //数据端口LCD_REG=0x03; //en=0delaynum(80);LCD_REG=0x00; //en=0}else{LCD_REG=0x00;LCD_DATA=content;.. .专业. .LCD_REG=0x02; //rs==1 en==0 写指令端口delaynum(80);LCD_REG=0x00; //en=0}Delay(100);}void Delay(unsigned int nDelay){int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<1024;jj++ ){kk++;}}}* End of lcd.c.. .专业. .第五章设计总结在两周万年历的课程设计中,我首先学到的是软件的安装,在前几天,一直安装CCS3.3和驱动,尽管电脑系统是32位的,因为装不上补丁不能用。

相关主题