《DSP课程设计总结报告31931.pdf》由会员分享,可在线阅读,更多相关《DSP课程设计总结报告31931.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 课程设计总结报告 课程名称 DSP 控制器及其应用 设计题目 万年历设计 专 业 电子信息工程 班 级 姓 名 学 号 指导教师 报告成绩 信息工程学院 二一四年六月十三日目 录 前 言.错误!未定义书签。第一章 设计要求.错误!未定义书签。1.1 基本要求.错误!未定义书签。1.2 提高要求.错误!未定义书签。第二章 系统的组成和工作原理.错误!未定义书签。2.1 DSP TMS320 VC5509APGE 芯片的工作原理错误!未定义书签。2.2 LCD1602 液晶显示器的工作原理.6 第三章 主电路图及程序流程图.7 3.1 主电路图.7 3.2 程序总流程图.7 3.3 程序分块流程
2、图.8 第四章 软件程序设计.9 4.1 程序.9 4.2 调试与处理出现问题.9 第五章 设计总结.错误!未定义书签。附录 1:参考文献.错误!未定义书签。前 言 随着科技的不断发展,诞生了越来越多的电子产品。比如手表,时钟等等,现在的钟表在功能设计上不断地完善,不仅仅可以显示时间(时分秒),而且可以显示年月日,星期几等等。科技的发展离不开人类的不断努力,培养高科技人才是 21 世纪必做的事。作为祖国的接班人更要努力学习好电子信息这门科技专业。因此我们要不断的接触各种电子产品,加强对电子技术 技术理论的掌握和实际的应用。在本次的实验中,我们就 以 DSP 芯片为核心控制电子钟,具有多项显示,
3、用 2812 上的 LCD 液晶显示屏显示当前年、月、日、时、分、秒。第一章 设计要求 本次课程设计要求设计一个万年历,利用 DSPTMS320 VC5509APGE 芯片控制,使用程序来控制时间的实时更新,当秒加到 60 时,分自动加 1,当分加到 60 时,小时自动加 1,当小时加到 24,天加 1,天加到 30 时,月加 1,月加到 12 时,年加 1,使用 I602 上的 LCD 液晶显示屏显示当前年、月、日、时、分、秒。对现有器件进行简单地编程,实现各种简单地显示控制。1.1 设计目的 1.学习软件的安装,熟悉运用 CCS v3.3 软件,加强软件编程能力;2.学习 DSP 芯片的
4、I/O 端口的控制方法;3.了解 1602 字符液晶的使用功能 4.能够对现有器件进行简单地编程,实现各种简单地显示控制。1.2 基本要求 此系统先显示设定的当前时间(年月日时分秒),并进行计数 设计硬件外扩电路,同时设计软件程序进行软硬件联系调试 连接仿真器,在液晶显示屏上进行显示 第二章系统的组成和工作原理 2.1 DSP TMS320 VC5509APGE 芯片 2.1.1 DSP TMS320 VC5509APGE 芯片引脚图。2.1.2 DSP 开发环境 ccs 3.3,Easy5509 开发板的程序都是基于 TI 公司的 CCS3.3。2.1.3 软件安装 1)首先安装 CCS3.
5、3。安装步骤可直接运行光盘中软件目录下的 CCS 软件的 setup.exe,按提示操作,即可完成 CCS 的安装,接着按手册说明顺序安装CCS 补丁软件 2)然后连接好硬件与仿真器,连与电脑接口,打开电脑的设备管理器,寻找刚检测到的未知设备,更新驱动,接着安装仿真器驱动,注意要和 CCS 安装在同一个目录;3)打开 set up ccs,设置。具体可看手册。最后可以打开 ccs 软件,进行编写程序,同时连接硬件,测试是否连接。2.2 LCD1602 液晶显示器 2.2.1 1602LCD 液晶显示原理 LCD1602 液晶显示器的工作原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有
6、电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。引脚图:1602 采用标准的 16 脚接口,其中:第 1 脚:VSS 为电源地 第 2 脚:VCC 接 5V 电源正极 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第 6 脚:E(或 EN)端
7、为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第 714 脚:D0D7 为 8 位双向数据端。第 1516 脚:空脚或背灯电源。第三章 主电路图及流程图 4.1 主电路图 4.2 程序总流程图 该设计用DSP程序完成。程序总的流程图如下:接通电源,DSP 和时钟初始化,读取时钟数据,DSP 进行处理程序,LCD1602显示器接受数据并进行显示。每 200ms 检测一次时间。4.3 程序分块流程图 4.3.1 LCD1602 液晶显示模块 当 DSP 一上电,显示一个时间,一定时间后,显示程序中设置的时间,并实时刷新时间,将要要显示的时间送入 LCD1602 中,实现万年历
8、的显示。利用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#include#include#include
9、#include#define led8 (*(unsigned int*)0 x200001)#define Digital8 (*(unsigned int*)0 x200002)#define LCD_REG (*(unsigned int*)0 x200003)#define buzzer (*(unsigned int*)0 x200004)#define USER_SW (*(unsigned int*)0 x200005)#define LCD_DATA (*(unsigned int*)0 x200006)#define UART_BASE_ADDR 0 x200008#def
10、ine 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
11、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
12、);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 entered 1,/IOB:If the PLL indicates a break in the phase lock,/it switches to its bypas
13、s mode and restarts the PLL phase-locking /sequence 12,/PLL multiply value;multiply 12 times 2 /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 emi
14、ffig=0 x221,/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 EMIF 0 xFFFF,/EMI_RST:any write to t
15、his register resets the EMIF state machine 0 x1fff,/CE3_1:CE0 space control register 1 0 x00ff,/CE3_2:CE0 space control register 2 0 x00ff,/CE3_3:CE0 space control register 3 0 x1fff,/CE1_1:CE0 space control register 1 /Asynchronous,16Bit 0 x00ff,/CE1_2:CE0 space control register 2 0 x00ff,/CE1_3:CE
16、0 space control register 3 0 x1FFF,/CE2_1:CE0 space control register 1 /Asynchronous,16Bit 0 xFFFF,/CE2_2:CE0 space control register 2 0 x00FF,/CE2_3:CE0 space control register 3 0 x1fff,/CE3_1:CE0 space control register 1 0 x00ff,/CE3_2:CE0 space control register 2 0 x00ff,/CE3_3:CE0 space control
17、register 3 0 x2911,/SDC1:SDRAM control register 1 /TRC=8 /SDSIZE=0;SDWID=0 /RFEN=1 /TRCD=2 /TRP =2 0 x0410,/SDPER:SDRAM period register /7ns*4096 0 x07FF,/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 devic
18、e 0 x0131/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,0 x0a01);PLL_confi
19、g(&myConfig);EMIF_config(&emiffig);a=20;nian=14;yue=12;ri=31;shi=23;fen=59;miao=55;wr_lcd(comm,0 x01);/清屏指令 wr_lcd(comm,0 x38);/设定 LCD 为 16*2,5*7 矩阵,8 位数据接口 wr_lcd(comm,0 x0f);/显示 ON 光标 ON,闪烁 ON wr_lcd(comm,0 x06);/文字不动,光标 while(1)miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;ri+
20、;if(ri=32)ri=1;yue+;if(yue=13)yue=1;nian+;if(nian=99)nian=0;a+;str10=a/10+0 x30;str11=a%10+0 x30;str12=nian/10+0 x30;str13=nian%10+0 x30;str14=-;str15=yue/10+0 x30;str16=yue%10+0 x30;str17=-;str18=ri/10+0 x30;str19=ri%10+0 x30;str20=shi/10+0 x30;str21=shi%10+0 x30;str22=:;str23=fen/10+0 x30;str24=fe
21、n%10+0 x30;str25=:;str26=miao/10+0 x30;str27=miao%10+0 x30;wr_lcd(comm,0 x80);/第一行字符地址 for(k=0;k10;k+)wr_lcd(dat,str1k);delay(200);/*wr_lcd(comm,0 x80);/第一行字符地址 for(k=0;k16;k+)wr_lcd(dat,str1k);delay(200);*/wr_lcd(comm,0 xc0);/第二行数据指针的地址 for(k=0;k8;k+)wr_lcd(dat,str2k);delay(200);delay(5000);/LCD 输出
22、设置 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=0 x01;LCD_DATA=content;/数据端口 LCD_REG=0 x03;/en=0 delaynum(80);LCD_REG=0 x00;/en=0 else LCD_REG=0 x00;LCD_DATA=content;LCD_REG=0 x02;/rs=1 en=0 写指令端口 delaynum(80);
23、LCD_REG=0 x00;/en=0 Delay(100);void Delay(unsigned int nDelay)int ii,jj,kk=0;for(ii=0;iinDelay;ii+)for(jj=0;jj1024;jj+)kk+;*End of lcd.c 第五章 设计总结 在两周万年历的课程设计中,我首先学到的是软件的安装,在前几天,一直安装 CCS3.3 和驱动,尽管电脑系统是 32 位的,因为装不上补丁不能用。接下来学习的就是软件的编写,基本要可对年月日时分秒进行计数。当秒加到 60 时,分自动加 1,当分加到 60 时,小时自动加 1,当小时加到 24,天加 1,天加到 30 时,月加 1,月加到 12 时,年加 1。这部分我们原先需要用的是定时器,但是一直无法显示出想要的效果,最后是在老师的指导下将定时器那部分程序直接用延时程序代替。最后将软硬件联系调试,在 1602 上正常显示时间并进行运作。通过这两周的学习,对 DSP 有了更深的了解,掌握了对现有器件进行编程,实现各种简单地显示控制。
限制150内