利用数字信号处理器控制模块的液晶显示

光电显示

1051人已加入

描述

引言

我国自20 世纪80 年代引进数字信号处理器以来,其已在各个领域得到了广泛应用,DSP 理论和技术已成为IT 领域的核心技术。由于液晶显示技术近年来不断获得新的突破,显示屏应用范围不断拓宽,成为极具发展潜力的电子显示产品。在DSP 的应用研究领域中,基于DSP 的图形液晶显示的研究和开发一直受到科研人员的广泛关注。传统的显示采用单片机控制,处理速度有限,存在局限性。DSP 是基于超大规模集成电路技术和计算机技术发展起来的,它一方面结合了DSP 系统诸多特点,另一方面又结合了液晶显示器诸多优点[1-2]。非常适合于个人信息化电子产品的输出显示前端。本文提出了一种基于DSP 控制的液晶显示屏的设计方案,以DSP 为核心控制芯片、可编程逻辑器件PLD 为辅助控制芯片来进行LCD 显示器的设计和控制,实现了系统功能,简化了系统结构、提高了系统可靠性。

1 硬件设计

1.1 硬件系统结构

本设计中,采用TMS320C28335 浮点DSP 控制器,该器件具有精度高,成本低,功耗小,性能高,外设集成度高,数据以及程序存储量大,A/D 转换更精确快速等优点。基于TMS320C28335 的显示系统的硬件电路包括电源模块、信息存储模块、外部存储器扩展模块、液晶显示模块、驱动电路、仿真接口、复位电路。系统结构如图1 所示。该系统具有掉电数据不丢失的功能,能在保证传输速度和准确性的基础上,进行多种模式的显示功能。

液晶显示

图1 系统结构

1.2 电源模块

由于系统所涉及的器件种类较多,针对不同的要求需使用不同幅值的电压,TMS320C28335 DSP 等芯片的供电电压为3.3V,有些外围数字器件供电电压为5V,因而本系统采用AMS1084CM 稳压芯片解决不同电压要求的问题,电路中电源由+5V 稳压直流电源输入,并采用AMS1084CM-3.3 电源转换芯片作为5V 转3.3V 的高性能稳压芯片,为电路提供稳定可靠的主电源VCC(3.3V),且内部有过热保护和限流电路。另外,电路中还使用TI 专用的电源管理芯片TPS767D301,能稳定给DSP 内核供电。

1.3 存储模块

控制器选用TMS320C28335 芯片,因为该DSP 芯片片内存储空间容量有限,所以外挂一片型号为SST39VF800A,存储大小为512K*16bit的FLASH 芯片,用来存储程序与外部字库;利用DSP 将存储器中的数据直接送入显示屏,无需通过计算机下载程序,实现脱机使用。

1.4 液晶显示模块

本项目所使用的128*64 点阵汉字图形液晶显示器,可显示汉字及图形,其中内置国标GB2312 码简体中文字库(16*16 点阵)、128 个字符(8*16 点阵)及64*256 点阵显示RAM(GBRAM)。可与DSP 直接接口,提供两种界面来连接微机处理器,8 位并行及串行两种连接方式。具有多种功能,光标显示、画面移动、睡眠模式等。电路如图2 所示。

液晶显示

图2 液晶显示接口

2 软件设计

DSP 系统的软件是指包括信号处理算法及相应的程序软件[3]。我们采用的开发方式是利用CCS 集成开发环境完成工程的创建、文件的编辑、编译链接、调试等环节。然后通过仿真接口将所生成的.out 文件直接下载到DSP 片外扩展存储器。考虑到程序的可移植性和软件的可读性,采用C 语言作为开发语言,利用C 语言灵活的语法和结构丰富的特点,使系统能够发挥较大作用和实现所要求的功能。

液晶显示LCD 模块工作时序的完成主要通过控制信号的改变实现的,在确定操作时序后通过片选信号CS 以及地址线A1、A0 来改变数据线相关寄存器的状态,通过改变控制寄存器的值可实现此款LCD强大的显示功能。由于DSP 速度较快,此程序的关键在于写操作引脚电平跳变的延时,延时选择过小数据写不进去,延时选择过大则会导致屏刷速度变慢,影响系统的显示功能,具体程序中会用较为精确的软件延时方法来实现。

本系统中DSP 控制液晶模块软件流程如图2 所示。系统上电、复位后,由于输出口状态对输入LCD 模块的数据影响较大,所以必须要对各I/O 口清零。由于LCD 之前状态未知,所以要调用清屏子程序清屏。然后通过调用命令子程序即改变控制寄存器的各个位来设置背景色。最后调用写地址子程序定好坐标,写点阵数据到LCD 显示存储器将要显示的字体显示在屏幕上。

具体语法实现如下:

void LCD_write_command(uchar command){

LCD_RS=0; //指令

LCD_E=1; //允许

LCD_DB=(command《《2)|0x0002;//赋值给DB0-DB7 对应的GPIO2-

GPIO9 引脚

Delay_us(10000);

LCD_E=0;

Delay_us (100);}

/*--------------------------------------

模块名称:LCD_write_data();

功能:LCD12864 写数据函数

占用资源:GPIO0-RS(LCD_RS),GND-RW(LCD_RW),GPIO1-E(LCD_E)。

;参数说明:data 为写数据参数

;-------------------------------------*/

void LCD_write_data(unchar data){

LCD_RS=1; //指令

LCD_E=1; //允许

LCD_DB=(data《《2)|0x0003;//赋值给D0-D7 对应的GPIO2-GPIO9 引脚

Delay_us (10000);

LCD_E=0;

Delay_us (100);}/*--------------------------------------

模块名称:LCD_int();

功能:初始化LCD12864

占用资源:--

参数说明:--

-------------------------------------*/

void LCD_int(void){

Delay_us (100000);//延迟100ms

LCD_write_command(0x30);//功能设置

Delay_us (200);//延迟200us

LCD_write_command(0x0c);//显示开关控制

Delay_us (200);//延迟200us

LCD_write_command(0x01);//显示清除

Delay_us (12000);//延迟12ms

CD_write_command(0x06);//光标移动方向

Delay_us (500);//延迟500us}

液晶显示

图3 系统的软件设计流程图

3 结语

该课题是西安文理学院大学生创新创业训练项目,旨在推动和提高大学生实践动手能力,以适应社会对高素质人才的需求。本文提出的用DSP 控制LCD 屏的显示方法可以很好的解决系统在海量数据的情况下,速度受到限制的问题,降低投资成本,从而提高市场竞争力。该项目的完成使我们对数字信号处理器的结构和原理有了进一步的认识,增强了学习的积极性和自信心,为今后的工作打下了坚实的基础。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分