1、课程设计总结汇报课程名称 DSP控制器及其应用 设计题目 万年历设计 专 业 电子信息工程 班 级 姓 名 学 号 指导老师 汇报成绩 信息工程学院 二一四年六月十三日目 录前 言3第一章 设计要求41.1 基础要求41.2 提升要求4第二章 系统组成和工作原理52.1 DSP TMS320 VC5509APGE芯片工作原理52.2 LCD1602液晶显示器工作原理6第三章 主电路图及程序步骤图73.1主电路图73.2程序总步骤图73.3程序分块步骤图8第四章 软件程序设计94.1 程序94.2 调试和处理出现问题9第五章 设计总结20附录1:参考文件30前 言 伴随科技不停发展,诞生了越来越
2、多电子产品。比如手表,时钟等等,现在钟表在功效设计上不停地完善,不仅仅能够显示时间(时分秒),而且能够显示年月日,星期几等等。 科技发展离不开人类不停努力,培养高科技人才是二十一世纪必做事。作为祖国接班人更要努力学习好电子信息这门科技专业。所以我们要不停接触多种电子产品,加强对电子技术 技术理论掌握和实际应用 。在此次试验中,我们就 以 DSP芯片为关键控制电子钟,含有多项显示,用2812上LCD液晶显示器显示目前年、月、日、时、分、秒。第一章 设计要求此次课程设计要求设计一个万年历,利用DSPTMS320 VC5509APGE芯片控制,使用程序来控制时间实时更新,当秒加到60时,分自动加1,
3、当分加到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 基础要求 此系统先显示设定目前时间(年月日时分秒),并进行计数 设计硬件外扩电路,同时设计软件程序进行软硬件联络调试 连接仿真器,在液晶显示器上进行显示 第二
4、章系统组成和工作原理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.3。安装步骤可直接运行光盘中软件目录下 CCS 软件 setup.exe,按提醒操作,即可完成 CCS 安装,接着按手册说明次序安装CCS补丁软件2)然后连接好硬件和仿真器,连和电脑接口,打开电脑设备管理器,寻求刚检测到未知设备,更新驱动,接着安装仿真器驱动,注意要和 CCS 安装在同一个目录;3)打开
5、set up ccs,设置。具体可看手册。最终能够打开ccs软件,进行编写程序,同时连接硬件,测试是否连接。2.2 LCD1602液晶显示器 2.2.1 1602LCD液晶显示原理LCD1602液晶显示器工作原理是利用液晶物理特征,经过电压对其显示区域进行控制,有电就有显示,这么即能够显示出图形。液晶显示器含有厚度薄、适适用于大规模集成电路直接驱动、易于实现全彩色显示特点,现在已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。引脚图:1602采取标准16脚接口,其中:第1脚:VSS为电源地 第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最
6、弱,接地电源时对比度最高 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时实施指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。 第三章 主电路图及步骤图4.1 主电路图4.2程序总步骤图该设计用DSP程序完成。程序总步骤图以下:接通电源,DSP和时钟初始化,读取时钟数据,DSP进行处理程序,LCD1602显示器接收数据并进行显示。每200ms检测一次时间。4.3程序分块步骤图4.3.
7、1 LCD1602液晶显示模块当DSP一上电,显示一个时间,一定时间后,显示程序中设置时间,并实时刷新时间,将要要显示时间送入LCD1602中,实现万年历显示。利用LCD1602 16*2数组,自己设置两个长度为10数组,第一行显示年月日,第二行显示时分秒,如第一行:-12-12,第二行:12-12-12。秒表时间靠近于60秒意在能够快速检测分秒日月,是否能够转换增加。4.3.2 时钟模块先判定1s延迟是否到了,如否,如否,则返回,如是,则将秒加1,加到60秒时,分加1,并将秒置0,分加到60时,小时自动加1,当小时加到24时,天加1,天加到30时,月加1,月加到12时,年加1。从而实现万年历
8、设计。第四章 软件程序设计#include #include #include #include #include #define led8 (*(unsigned int *)0x01) #define Digital8 (*(unsigned int *)0x02)#define LCD_REG (*(unsigned int *)0x03) #define buzzer (*(unsigned int *)0x04) #define USER_SW (*(unsigned int *)0x05) #define LCD_DATA (*(unsigned int *)0x06) #defi
9、ne UART_BASE_ADDR0x08#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 *)(
10、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=-12-30;unsigned char str2=23-59-55;Uint16 nian,yue,ri,shi,fen,miao,a;void Dela
11、y(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 entered 1, /IOB: If the PLL indicates a break in the phase lock
12、, /it switches to its bypass 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);/*
13、SDRAMEMIF设置*/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
14、by the EMIF 0xFFFF,/EMI_RST: any write to this register resets the EMIF state machine 0x1fff,/CE3_1: CE0 space control register 1 0x00ff,/CE3_2: CE0 space control register 2 0x00ff,/CE3_3: CE0 space control register 3 0x1fff,/CE1_1: CE0 space control register 1 / Asynchronous, 16Bit 0x00ff,/CE1_2: C
15、E0 space control register 2 0x00ff,/CE1_3: CE0 space control register 3 0x1FFF,/CE2_1: CE0 space control register 1 / Asynchronous, 16Bit 0xFFFF,/CE2_2: CE0 space control register 2 0x00FF,/CE2_3: CE0 space control register 3 0x1fff,/CE3_1: CE0 space control register 1 0x00ff,/CE3_2: CE0 space contr
16、ol register 2 0x00ff,/CE3_3: CE0 space control register 3 0x2911, /SDC1: SDRAM control register 1 / TRC = 8 / SDSIZE = 0;SDWID = 0 / RFEN = 1 / TRCD = 2 / TRP = 2 0x0410,/SDPER : SDRAM period register / 7ns *4096 0x07FF, /SDINIT: SDRAM initialization register / any write to this register to init the
17、 all CE spaces, / do it after hardware reset or power up the C55x device 0x0131/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 in
18、t 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,闪烁ON wr_lcd(comm,0x06
19、); /文字不动,光标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+; str10=a/10+0x30; str11=a%10+0x30; str12=nian/10+0x30; str13=nian%10+0x30; str14=-; str15=yue/10+0x30; str16=yue%10+0x30; str17=-;
20、 str18=ri/10+0x30; str19=ri%10+0x30; str20=shi/10+0x30; str21=shi%10+0x30; str22=:; str23=fen/10+0x30; str24=fen%10+0x30; str25=:; str26=miao/10+0x30; str27=miao%10+0x30; wr_lcd(comm,0x80); /第一行字符地址for(k=0;k10;k+) wr_lcd(dat,str1k); delay(200); /* wr_lcd(comm,0x80); /第一行字符地址for(k=0;k16;k+) wr_lcd(da
21、t,str1k); delay(200); */wr_lcd(comm,0xc0);/第二行数据指针地址for(k=0;k8;k+) wr_lcd(dat,str2k); 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; /
22、en=0 delaynum(80); LCD_REG=0x00; /en=0 elseLCD_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;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有了更深了解,掌握了对现有器件进行编程,实现多种简单地显示控制。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100