ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:447.34KB ,
资源ID:25538649      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25538649.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP课程设计液晶显示器控制显示.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP课程设计液晶显示器控制显示.docx

1、DSP课程设计液晶显示器控制显示一、设计题目:液晶显示器控制显示二、设计目的与步骤:2.1、设计目的通过实验学习使用VC5416 DSP的扩展I/O端口控制外围设备的方法,了解液晶显示器的显示控制原理及编程方法。2.2、设计步骤1实验准备: 连接实验设备:请参看本书第三部分、第一章、二。2设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行:3启动Code Composer Studio 2.21:选择菜单DebugReset CPU。4打开工程文件:浏览LCD.c文件的内容,理解各语句作用工程目录:C:ICETEKVC5416AES61VC5416A

2、ES61Lab0403-LCDLCD.pjt。5编译、下载程序。6运行程序观察结果:7将内层循环中的“CTRLCDLCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”语句改为“CTRLCDRCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”,重复步骤5-6,实现在屏幕右侧显示。8更改程序中对页、列的设置,实现不同位置的显示。9自己设计一些控制语句,实现不同显示效果。10结束程序运行,退出CCS。三、设计原理:3.1、扩展IO接口:ICETEK-VC5416-A是一块以TMS320VC5416ADSP为核心的DS

3、P扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。3.2、液晶显示模块的访问、控制是由VC5416 DSP对扩展接口的操作完成。控制口的寻址:命令控制接口的寄存器为CTRLCDCMDR,数据控制接口的寄存器为CTRLCDLCR和CTRLCDRCR,辅助控制接口的寄存器为CTRLCDCR。3.3、液晶显示模块编程控制:液晶显示模块的访问、控制是由TMS320VC5416对扩展接口的操作完成。3.4、控制I/O口的寻址:命令控制接口CTRLCDCMDR的地址为0x8001,数据控制接口的地址为CTRLCDLCR :0x8003和CTRLCDRCR :0x8004,辅

4、助控制接口CTRLCDCR的地址为0x8002。3.5、显示控制方法:液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的象素,向其中写入数值将改变显示,写入“1”则显示一点,写入“0”则不显示。其地址与象素的对应方式参见表2-3: 表2-3 地址与象素的对应方式左侧显示内存右侧显示内存Y=016263016263行号DB0DB0DB0DBODBODBODBODBODBODBO0X=0DB7DB7DB7DB7DB7DB7DB7DB7DB7DB77DB0DB0DB0DB0DB0DB0DB0DB0DB0DB08DB7DB7DB7DB7DB7DB7DB7DB7DB7DB755X=7DB0DBODB

5、ODBODBODBODBODBODBODBO56DB7DB7DB7DB7DB7DB7DB7DB7DB7DB763- 发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制I/O接口写入命令控制字,然后再向辅助控制接口写入0。由于液晶模块相对于DSP来讲是慢速设备,在命令之间可能需要增加延时语句。下面给出的是基本命令字、解释和C语言控制语句举例。.显示开关:0x3f打开显示;0x3e关闭显示;CTRLCDCMDR=0x3f; CTRLCDCR=0; /将液晶显示打开CTRLCDCMDR=0x3e; CTRLCDCR=0; /将液晶显示关闭.设置显示起始行:0x0c0+起始行取值,其中起始

6、行取值为0至63;CTRLCDCMDR=0x0c0; CTRLCDCR=0; / 设置从存储器第0行开始显示CTRLCDCMDR=0x0c8; CTRLCDCR=0; / 设置从存储器第8行开始显示.设置操作页:0x0b8+页号,其中页号取值为0-7;CTRLCDCMDR=0x0b0; CTRLCDCR=0; /设置即将操作的存储器第0页CTRLCDCMDR=0x0b2; CTRLCDCR=0; /设置即将操作的存储器第2页.设置操作列:0x40+列号,其中列号为取值为0-63;CTRLCDCMDR =0x40; CTRLCDCR=0; /设置即将操作的存储器第0列CTRLCDCMDR =0x

7、44; CTRLCDCR=0; /设置即将操作的存储器第4列- 写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制I/O接口即可。由于液晶模块相对于DSP来讲是慢速设备,在命令之间可能需要增加延时语句。C语言语句举例说明:CTRLCDLCR=0x80; CTRLCDCR=0; /向左侧屏幕缓存存入数0x80,/如果显示行、页号和列号均为0/时,屏幕上第8行第1列将显/示黑色象素CTRLCDRCR=0x01; CTRLCDCR=0; /向右侧屏幕缓存存入数据1,如/果显示行、页号和列号均为0/时,屏幕上/第1行第65列将

8、显/示黑色象素3.6液晶显示器与DSP的连接:3.7、数据信号的传送:由于液晶显示模块相对运行在高主频下的DSP属于较为慢速设备,连接时需要考虑数据线上信号的等待问题;电平转换:由于DSP为3.3V设备,而液晶显示模块属于5V设备,所以在连接控制线、数据线时需要加电平隔离和转换设备,如:ICETEK-CTR板上使用了74LS245。四、 CCS开发环境4.1、CCS是一种针对TMS320系列DSP的集成开发环境,在windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,提供了配置、建立、调试、跟踪和分析程序的工具,从而完成编辑、编译、链接、调试和数据分

9、析等工作。利用ccs集成开发软件,用户可以在一个开发环境下完成工程项目创建、程序编辑、编译、链接、调试和数据分析等工作环节。使用ccs开发应用程序的一般步骤为:1.打开或创建一个工程项目文件,包括源程序、目标文件、库文件、链接命令文件和包含文件。2.编辑各类文件。可以使用ccs提供的集成编辑环境,对头文件、链接命令文件和源程序进行编辑。3.对工程项目进行编译。如出现语法错误,将在构建窗口中显示错误信息。用户可以根据显示信息定位错误信息,更改错误。4.对结果和数据进行分析和算法评估。用户可以利用ccs提供的探测点、图形显示、性能评价等工具,对运行结果、输出数据进行分析,评估算法性能。4.2、IC

10、ETEK DSP教学实验箱结构图(参见图2-2)图2-2 DSP教学实验箱结构图通用控制模块部分:显示输出:- 液晶显示(LCD):12864像素点阵图形显示屏。- 发光二极管:指示灯(12只,分为红、黄、绿三种颜色)音频输出: D/A输出提供音频插座,可直接接插耳机。键盘:17键数字键盘(标准PS2接口)。步进电机:四相步进电机,步距角5.625,起动频率300PPS,运行频率900PPS,可由DSP I/O端口控制旋转和方向、速度。直流电机:空载转速3050转/分,输出功率1.35W,启动力矩21.3N,可以接收DSP输出的PWM控制信号,实现电机的转速和方向控制。ICETEK DSP教学

11、实验箱的外围接口:外围接口PA:ICETEK-VC5416-A扩展接口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 *)0x2

12、8)/ CTR扩展寄存器定义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 CTRKEY port8001#define CTR

13、CLKEY 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 ledkey108= 0x00,0x00,0x7C,0x82,0x82,0x82,0

14、x7C,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, /6 0x00,0x00,0x02,0xC2,0x3

15、2,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,nCount=0,nBW=0; 定义变量 CTRGR=0; / 初始化ICETEK-CTR CTRGR=0x80; CTRGR=0; CTRLR=0; / 关闭东西方向的交通灯 CTRLR=0x40; / 关闭南北方向的交通灯 TurnOnLCD(); / 子函数调用,打开显示 LCDCLS(); / 子函数调用,清除显示内存 CTRLCDCMD

16、R=LCDCMDSTARTLINE; / 设置显示起始行 CTRLCDCR=0; for (;) /设置无限循环,行列初始化,并输出要显示的内容 CTRLCDCMDR=LCDCMDPAGE; / 设置操作页=0 Delay(LCDDELAY); /延时 CTRLCDCR=0; Delay(LCDDELAY); /延时 CTRLCDCMDR=LCDCMDVERADDRESS; / 起始列=0 Delay(LCDDELAY); /延时 CTRLCDCR=0; Delay(LCDDELAY); /延时 for ( i=0;i8;i+ ) /设置八次循环,每次循环显示一个数 CTRLCDLCR=( n

17、BW=0 )?(ledkeynCounti):(ledkeynCounti); / 屏幕左侧第1至8行第i列赋值 port8002=0; / (赋值后当前操作列自动加1,所以不需设置) nBW=0则取原数字,十个数显示完nBW取反,则对数据取反 Delay(LCDDELAY); /延时 CTRLCDCR=0; Delay(LCDDELAY); /延时 Delay(512); /延时 nCount+; /显示完一个数则加一,显示下一个数 if ( nCount=10 ) nCount=0; /十个数显示完则对nCount赋值为0,重新开始显示 nBW=1-nBW; /nBW为字节定义,十个数显示

18、完则取反 /延时子函数void Delay(unsigned 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); /清

19、除液晶屏幕内容void LCDCLS() 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);

20、for ( j=0;j64;j+ ) /每页64列,一列一列清屏 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; D

21、elay(LCDDELAY); 六、实验结果和分析6.1、原程序实验结果如图一所示图一6.2、将程序中CTRLCDLCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);语句改为“CTRLCDRCR=( nBW=0 )?(ledkeynCounti):(ledkeynCounti);”后,数字应该显示在右半屏的第0行、第0列,实验结果如下图二6.3、将LCDCMDSTARTLINE 的值改为0xcf,LCDCMDPAGE 0xbc3, 显示结果如下图所示图三6.4、将主函数中的if语句前添加语句:LCDCMDVERADDRESS +;if (LCDCMDVERADDRESS =63) LCDCMDVERADDRESS =0; 结果显示如下图所示图四七、设计收获及体会通过这次课程设计让我们更多的了解了更多关于DSP的知识和协作的重要,也看清了现代电子科技对我们的生活的影响,同时也巩固了我们的专业知识。此次课程设计也会是我们在大学时期的很好的一次实践和锻炼机会。让我们在以后的学习中更加努力刻苦。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1