1、 目录一、DSP简介1二、CCS(Code Composer Studio)简介2三、设计目的与步骤:33.1、设计目的33.2、设计步骤3四、设计原理:44.1、扩展IO 接口:44.2、液晶显示模块编程控制:44.3、控制I/O 口的寻址:44.4、显示控制方法:44.5.液晶显示器与DSP的连接:64.6、数据信号的传送:6五、 CCS 开发环境6六、C 语言程序9七、实验结果与分析147.1源程序实验结果147.2修改程序157.3自己设计程序15八、设计心得16九、参考文献16液晶显示器控制显示一、DSP简介DSP(digital signal processor)是一种独特的微处理
2、器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。近年来,随着低价格、高性能DSP芯片的出现,DSP已越来越多地被应用于高速信号采集、语音处理、图像分析处理等领域中,并且日益显示其巨大的优越性。而液晶显示屏更以其显示直观、便于操作的特点被用作各种便携式系统的显示前端。传统的液晶显示
3、往往采用单片机控制。但在系统有大量高速实时数据的情况下,单片机由于受到处理速度的限制就显得力不从心。 DSP应用的快速发展为数字信息产品带来广阔的发展空间,并将支持通信、计算机和消费类电子产品的数字化融合。在无线领域,DSP遍及无线交换设备、基站、手持终端和网络领域,并涵盖从骨干基础设施到宽带入户的设备,包括VoIP网关和IP电话、DSL和Cable Modem等。面向群体应用,DSP在媒体网关、视频监控、专业音响、数字广播、激光打印等应用中表现出色;面向个人应用,DSP在便携式数字音频和影像播放器、指纹识别和语音识别等应用中表现不俗;针对嵌入式数字控制应用,DSP极大地满足了工业界的需求,如
4、数字变频电力电源设备、工业缝纫机等;DSP也极大地满足了消费电子的需求,如空调、冰箱、洗衣机等。随着数字信号处理领域不断发展,DSP也由应用推动发展。SoC集成意味着更多的存储器和不同的内核与专用外设一起均能集成到同一器件上,这就使DSP产品能够按特定市场的需求进行定制。在此环境中,浮点功能已成为整体 DSP 产品组合中的另一要素。移动电话、数码相机等DSP产品的主要应用领域走势良好,需求旺盛,推动着DSP市场持续增长。 在无线领域,我国手机用户继续大规模增加,手机需求的大幅增加带动了我国DSP市场的高速增长。在数字消费领域,我国新兴的数字消费类电子产品进入增长活跃期,市场呈现高增长态势,用户
5、认知率和普及率大幅提高,数码消费市场的高速增长推动了DSP市场的发展。此外,计算机、通信和消费类电子产品的数字化融合也为DSP提供了进一步的发展机会。目前,在VoIP、DSL、Cable Modem、3G、数字相机和马达控制等需要实时处理大量数字信息的应用中,都可见到DSP的身影,DSP无疑已经成为推动数字化进程的动力。二、CCS(Code Composer Studio)简介 CCS(Code Composer Studio)是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。CCS有两种工作模
6、式,即软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。 CCS的开发系统主要由以下组件构成:TMS320C54x集成代码产生工具;CCS集成开发环境;DSP/BIOS实时内核插件及其应用程序接口API;实时数据交换的RTDX插件以及相应的程序接口API;由TI公司以外的第三方提供的各种应用模块插件。 CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C+和汇编的混合编程,其主要功能如下: 1. 具有集成可视化代码编辑界面
7、,用户可通过其界面直接编写C、汇编、.cmd文件; 2. 含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中; 3. 高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误; 4. 工程项目管理工具可对用户程序实行项目管理。在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理; 5. 基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试; 6. 断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置; 7.
8、 探测点工具,可用于算法的仿真,数据的实时监视等; 8. 分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码、执行的时钟; 9. 数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新; 10. 提供GEL工具。利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等。三、设计目的与步骤: 3.1、设计目的 通过实验学习使用VC5416DSP的扩展I/O 端口控制外围设备的方法,了解液晶 显示器的显示控制原理及编程方法。 3.2、设计步骤 1.实验准备: 连接实验设备:请参
9、看本书第三部分、第一章、二。2.设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行: 3.启动Code Composer Studio 2.21: 选择菜单DebugReset CPU。 4.打开工程文件:浏览LCD.c 文件的内容,理解各语句作用工程目录:C:ICETEKVC5416AES61VC5416AES61Lab0403-LCDLCD.pjt。 5.编译、下载程序。 6.运行程序观察结果: 7. 将内层循环中的“CTRLCDLCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”语句改为“CTRLCD
10、RCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”,重复步骤5-6,实现在屏幕右侧显示。 8.更改程序中对页、列的设置,实现不同位置的显示。 9.自己设计一些控制语句,实现不同显示效果。 10.结束程序运行,退出CCS。 四、设计原理: 4.1、扩展IO 接口: ICETEK-VC5416-A 是一块以TMS320VC5416ADSP为核心的DSP扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。 4.2、液晶显示模块编程控制:液晶显示模块的访问、控制是由TMS320VC5416对扩展接口的操作完成。 4.3、控制I/O
11、 口的寻址: 命令控制接口CTRLCDCMD的地址0x8001,数据控制接口的地址为 CTRLCDLCR :0x8003和CTRLCDRCR :0x8004,辅助控制接口CTRLCDCR的地址为 0x8002。 4.4、显示控制方法:液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的象素,向其中 3 写入数值将改变显示,写入“1”则显示一点,写入“0”则不显示。其地址与象素 的对应方式参见表2-3: 表2-3 地址与象素的对应方式- 发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制 I/O 接口写入命令控制字,然后再向辅助控制接口写入 0。由于液晶模块相对于DSP来讲是慢速设
12、备,在命令之间可能需要增加延时语句。下面给出的是基 本命令字、解释和C 语言控制语句举例。 .显示开关:0x3f 打开显示;0x3e 关闭显示; CTRLCDCMDR=0x3f; CTRLCDCR=0; /将液晶显示打开 CTRLCDCMDR=0x3e; CTRLCDCR=0; /将液晶显示关闭 .设置显示起始行:0x0c0+起始行取值,其中起始行取值为0 至63; CTRLCDCMDR=0x0c0; CTRLCDCR=0; / 设置从存储器第0 行开始显示 CTRLCDCMDR=0x0c8; CTRLCDCR=0; / 设置从存储器第8 行开始显示 .设置操作页:0x0b8+页号,其中页号取
13、值为0-7;CTRLCDCMDR=0x0b0; CTRLCDCR=0; /设置即将操作的存储器第0 页 CTRLCDCMDR=0x0b2; CTRLCDCR=0; /设置即将操作的存储器第2 页 .设置操作列:0x40+列号,其中列号为取值为0-63;CTRLCDCMDR =0x40; CTRLCDCR=0; /设置即将操作的存储器第0 列CTRLCDCMDR =0x44; CTRLCDCR=0; /设置即将操作的存储器第4 列 - 写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待 显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制I/O 接口 即可。由于液晶模块相
14、对于DSP来讲是慢速设备,在命令之间可能需要增加 延时语句。C 语言语句举例说明:CTRLCDLCR=0x80; CTRLCDCR=0; /向左侧屏幕缓存存入数0x80, /如果显示行、页号和列号均 为0 /时,屏幕上第8 行第1 列将 显/示黑色象素 CTRLCDRCR=0x01; CTRLCDCR=0; /向右侧屏幕缓存存入数据1,如/果显示行、页号和列号均为 0/时,屏幕上/第1 行第65 列 将显 /示黑色象素 4.5.液晶显示器与DSP的连接: 4.6、数据信号的传送: 由于液晶显示模块相对运行在高主频下DSP属于较为慢速设备,连接时需 要考虑数据线上信号的等待问题; 电平转换:由于
15、DSP为 3.3V 设备,而液晶显示模块属于 5V 设备,所以在连 接控制线、数据线时需要加电平隔离和转换设备。 五、 CCS 开发环境 5.1、CCS 是一种针对TMS320 系列DSP的集成开发环境,在windows 操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,提供了配置、建立、调试、跟踪和分析程序的工具,从而完成编辑、编译、链接、调试和数据分析等工作。利用CCS 集成开发软件,用户可以在一个开发环境下完成工程项目创建、程序 编辑、编译、链接、调试和数据分析等工作环节。使用CCS 开发应用程序的一般步 骤为: 1.打开或创建一个工程项目文件,包括源程
16、序、目标文件、库文件、链接命令 文件和包含文件。2.编辑各类文件。可以使用CCS提供的集成编辑环境,对头文件、链接命令文 件和源程序进行编辑。 3.对工程项目进行编译。如出现语法错误,将在构建窗口中显示错误信息。用 户可以根据显示信息定位错误信息,更改错误。 4.对结果和数据进行分析和算法评估。用户可以利用CCS提供的探测点、图形 显示、性能评价等工具,对运行结果、输出数据进行分析,评估算法性能。 5.2、ICETEKDSP教学实验箱结构图(参见图2-2) 步进电机扩展模块电源开关液晶屏幕直流电机实验箱电源开关AD输入键盘交通灯蜂鸣器DSP电源开关测试点图2-2DSP教学实验箱结构图通用控制模
17、块部分: 显示输出:-液晶显示(LCD):12864 像素点阵图形显示屏。 - 发光二极管:指示灯(12 只,分为红、黄、绿三种颜色)音频输出: D/A 输出提供音频插座,可直接接插耳机。 键盘:17 键数字键盘(标准PS2 接口)。步进电机:四相步进电机,步距角5.625,起动频率300PPS,运行频率900PPS, 可由DSPI/O 端口控制旋转和方向、速度。直流电机:空载转速3050 转/分,输出功率1.35W,启动力矩21.3N,可以接收DSP输出的PWM 控制信号,实现电机的转速和方向控制。ICETEKDSP教学实验箱的外围接口: 外围接口PA:ICETEK-VC5416-A 扩展接
18、口P4 外围接口PB:ICETEK-VC5416-A 扩展接口P3。 六、C 语言程序 / 常量定义#define LCDDELAY 1#define LCDCMDTURNON 0x3f#define LCDCMDTURNOFF 0x3e#define LCDCMDSTARTLINE 0xc0 /起始行为第0行#define LCDCMDPAGE 0xb8 /起始页为第0页#define LCDCMDVERADDRESS 0x40 /起始列为第0列#define WAITSTATUS (*(unsigned int *)0x28)/ CTR扩展寄存器定义ioport unsigned int
19、port3002,ioport unsigned int port3003,ioport unsigned int port8000;ioport unsigned int port8001;ioport unsigned int port8002;ioport unsigned int port8003;ioport unsigned int port8004;ioport unsigned int port8005;ioport unsigned int port8007;#define CTRGR port8000#define CTRLCDCMDR port8001#define CT
20、RKEY port8001#define CTRCLKEY port8002#define CTRLCDCR port8002#define CTRLCDLCR port8003 /输出显示在左侧屏幕#define CTRLCDRCR port8004 /输出显示在右侧屏幕#define CTRLA port8005#define CTRLR port8007void Delay(unsigned int nTime);/ 延时函数void TurnOnLCD(); / 打开显示void LCDCLS(); / 清除屏幕显示内容unsigned char ledkey110 8 =0x00,0
21、x00,0x7C,0x82,0x82,0x82,0x7C,0x00, /0 0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00, /1 0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00, /2 0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00, /3 0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00, /4 0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00, /5 0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00, /
22、6 0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00, /7 0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00, /8 0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00 /9;/主函数main()int i,j,nCount=0,nBW=0; /定义变量CTRGR=0; / 初始化ICETEK-CTRCTRGR=0x80;CTRGR=0;CTRLR=0; / 关闭东西方向的交通灯CTRLR=0x40; / 关闭南北方向的交通灯TurnOnLCD(); /子函数调用, 打开显示LCDCLS(); /子函数调
23、用,清除显示内存CTRLCDCMDR=LCDCMDSTARTLINE; / 设置显示起始行CTRLCDCR=0;for (;) /设置无限循环,行列初始化,并输出要显示的内容CTRLCDCMDR=LCDCMDPAGE; / 设置操作页=0Delay(LCDDELAY); /延时CTRLCDCR=0;Delay(LCDDELAY); /延时CTRLCDCMDR=LCDCMDVERADDRESS;/ 起始列=0Delay(LCDDELAY); /延时CTRLCDCR=0;Delay(LCDDELAY); /延时for ( i=0;i8;i+ ) /设置八次循环,每次循环显示一个数 CTRLCDLC
24、R=( nBW=0 )?(ledkey1nCounti):(ledkey1nCounti); / 屏幕左侧第1至8行第i列赋值 port8002=0;/ (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY); /调用延迟子程序CTRLCDCR=0;Delay(LCDDELAY);Delay(512); /调用延迟子程序 nCount+; /显示完一个数则加一,显示下一个数 if ( nCount=10) nCount=0; /十个数显示完则对nCount赋值为0,重新开始显示 nBW=1-nBW; /nBW为字节定义,十个数显示完则取反 /延迟子函数void Delay(u
25、nsigned int nDelay) Int ii,jj,kk=0; for ( ii=0;iinDelay;ii+ )for ( jj=0;jj1024;jj+ )kk+;void TurnOnLCD() /打开液晶屏子程序 CTRLCDCMDR=LCDCMDTURNON; /赋值为0x3f Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY); CTRLCDCMDR=LCDCMDSTARTLINE; /赋值为0x3e Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY);void LCDCLS() /清除液晶屏显示子
26、程序 int i,j; CTRLCDCMDR=LCDCMDSTARTLINE; /从第0行开始 Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY); for ( i=0;i8;i+ ) /共8页,一页一页的清屏CTRLCDCMDR=LCDCMDPAGE+i; /清完一页进入下一页Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for ( j=0;j64;j+ ) /每页64列,一
27、列一列清屏CTRLCDLCR=0;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDPAGE+i;Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY); CTRLCDCMDR=LCDCMDVERADDRESS; Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY); for ( j=0;j64;j+ ) CTRLCDRCR=0; Delay(LCDDELAY); CTRLCDCR=0; Delay(LCDDELAY);七、实验结果与分析7.1源程序实验结
28、果图一7.2修改程序“CTRLCDLCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”语句改为“CTRLCDRCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”,重复步骤5-6,实现在屏幕右侧显示。 图二7.3自己设计程序将主函数中的if语句前添加一个语句:LCDMDVERADDRESS +;IF (LCDMDVERADDRESS= =63) LCDMDVERADDRESS=0;实验结果如下图所示: 图三八、设计心得通过本次DSP的课程设计我对所学知识有了更加深刻的认识,对DSP及C语言有了更加深入的理解。在本
29、次课程设计过程中我有很多体会。首先,我体会到了认真的重要性,尤其是在修改程序的过程中,一个小小的疏忽往往要花费很大的精力和时间去修改。其次,增长了很多知识,在遇到困难时我们首先要自己去查阅资料,来补充自身的不足。最后,我体会到了同学间团结协作,互帮互助的作用,或许是一个不经意的提点就会让你收益匪浅,在自己解决不了问题的时候同学和老师给予的帮助让问题很快的解决,同时让我更深刻的明白了自己所欠缺的知识,更快更好的学习了DSP的相关内容。由此可见,课程设计的意义是十分重大和深远的,丰富了我们的知识。今后我要把从课设中学到的学习方法用到平时的学习中去,努力做到不放弃。九、参考文献 1苏奎峰.TMS320X281xDSP应用系统设计M.北京:北京航空航天大学出版社,2008.2李宏等.液晶显示器件应用技术M.北京:机械工业出版社,2004.3范邹.TMS320LF2407ADSP与图形点阵式LCM的接口设计J.现代电子技术,2006,(22):124127.4莫莉,谢运祥,张天保.基于DSP的液晶显示的应用与实现J.国外电子元器件,2007,。5廖丽莹,李啸骢,罗涛等.基于TMS320F2812的液晶显示的设计J.微计算机信息,2008,24(7-2). 6党瑞荣,罗兵武,张珂.基于高速DSP控制的液晶显示J.现代显示,2006,(5960):5558.17