图形点阵式液晶显示器MSP-G320240在高速处
扫描二维码
随时随地手机看文章
关键词:液晶显示器;DSP;接口;SED1335;MSP-G320240
1 引言
各种仪器仪表无论是测量型的仪器仪表,还是信号源型的仪器仪表,或大或小都有一个显示子系统,这使得液晶显示器(LCD)的应用尤为广泛。由于液晶显示器具有体积小、外形薄、功耗低、重量轻、工作驱动电压低、无辐射,特别是视域宽、显示信息量大等优点,因此,随着现代测控技术的日益发展,液晶显示器已经成为测量显示结果和人机对话的重要工具。本文介绍了内嵌SED1335控制器的液晶显示器MSP-G320240的工作原理,给出了它与DSP的接口方法及相应的C语言程序应用设计。
SED1335是日本SEIKO EPSON公司出品的液晶显示控制器,它具有I/O缓冲器、指令功能丰富、能混合显示图形和文本、4位数据可并行发送、并可最大驱动640×256点阵等特点。
2 MSP-G320240简介
MSP-G320240是TRULY SEMICONDUCTORS公司生产的图形点阵式液晶显示器,图1为其具体的电路结构。
从图1可知,MSP-G320240的最大点阵为320×240?且带有背光功能,能够在很宽的温度范围内工作(0~50℃)?内部有SED1335液晶显示控制器。SED1335的硬件结构可分成MPU接口部分、内部控制部分和LCD驱动部分。
SED1335的接口部分由指令输入缓冲器、数据输入缓冲器、数据输出缓冲器和标志寄存器组成。通过引脚的电平设置可选择适配8080系列和M6800系列MPU的等两种操作时序电路。
SED1335的控制部分由振荡器、功能逻辑电路、显示RAM管理电路、字符库及其管理电路以及产生驱动时序的时序发生器等组成。振荡器工作频率可在1~10MHz内选择,而SED1335也可在很高的工作频率下迅速解译由MPU发来的各类代码。
SED1335可以管理64kB显示RAM,同时可以管理内藏的字符发生器、外扩字符发生器CGRAM或外部CGRAM。64kB显示RAM可分为文本显示区、图形显示区和字符显示区等三种显示特性区。其中文本显示区专用于文本方式显示,区中每个字节的数据都认为是字符代码。SED1335使用该字符代码确定字符首地址,然后将相应的字模数据传送出去,以在液晶屏上显示该字符的8×8点阵块;图形显示区用于图形方式显示,区中每个字节的数据直接被送出,每个位的电平状态决定显示屏上一个点的显示状态,“1”为显示,“0”为不显示;SED1335内的字符发生器CGROM固化了160种5×7点阵字符的字模;此外,SED1335还能外扩字符发生器,其代码范围是80H~9FH和E0H~FFH共64种。
SED1335的驱动部分具有各显示区的合成显示能力、传输数据的组织功能及产生液晶显示模块所需时序的功能。SED1335用4位并行方式向液晶显示器传输数据。
一般来讲,使用内置SED1335控制器的液晶显示器时,设计者无需了解SED1335对液晶屏的显示驱动、点阵扫描、显示存储器管理等操作,这一切都会由SED1335自动进行?因此只需清楚SED1335的各种数据指令格式、显示存储器的区间划分和接口引脚的功能定义即可。
该液晶显示器同微处理器的接口也很简单,只要按液晶显示器的引脚功能定义将其分别连接于微处理器的相应管脚即可。微处理器对液晶显示器的操作有四类、共13条指令:第一类是系统控制指令(2条),用于设置SED1335的软件初始化和显示驱动电源状态;第二类是显示操作指令(7条),该类指令用于设置显示的数据起始地址、区域、方式以及光标的显示方式、形状和光标地址指针的移动方向等;第三类是绘制操作指令(2条),该指令专用于对液晶屏上的像素(点)进行操作;第四类是存储操作指令(2条),该指令用于将显示数据写入显示区并把光标地址确定的数据送到缓冲区。SED1335的多数指令都带有参数,这些参数值可根据所控制的液晶显示器的具体特征和显示的需要来进行设置,其指令集如表1所列。
表1 SED1335的指令集
功 能 | 指 令 | 操作码 |
说 明 |
参数量 |
系统控制 | SYSTEM SET | 40H | 初始化,显示窗口设置 | 8 |
SLEEP IN | 53H | 空闲操作 | - | |
显示操作 | DISP ON/OFF | 59H/58H | 设置显示方式 | 1 |
SCROLL | 44H | 设置显示区域,卷动 | 10 | |
CSRFORM | 5DH | 设置光标形状 | 2 | |
CGRAM ADR | 500H | 设置CGRAM起始地址 | 2 | |
CSRDIR | 4CH~4FH | 设置光标移动方向 | - | |
HDOT SCR | 5AH | 设置点单元卷动位置 | 1 | |
OVLAY | 5BH | 设置合成显示方式 | 1 | |
绘制操作 | CSRW | 46H | 设置光标地址 | 2 |
CSRR | 47H | 读出光标地址 | 2 | |
存储操作 | MWRITE | 42H | 数据写入显示缓冲区 | 若干 |
MREAD | 43H | 从显示缓冲区读数据 | 若干 |
3 MSP-G320240同DSP的接口
TI公司的16-bit定点DSP TMS320F206是一种低功耗的DSP器件,它采用改进的哈佛结构,有1条程序总线和3条数据总线。该DSP采用流水线操作,同时具有高度并行32-bit算术逻辑单元、16×16bit并行硬件乘法器、片内存储器、片内外设和高度专业化的指令集,特别适合于信号处理,可用于工业控制领域和各类仪器仪表的开发设计。液晶显示器MSP-G320240有8位数据线、3个电源线和5个控制线,当TMS320F206外接16MHz晶振,且工作时钟控制模式选为×1时,可以把液晶显示器MSP-G320240的读写信号线同TMS320F206的读写信号线直接相连。图2所示是液晶显示器与TMS320F206的典型接口电路。
4 C语言程序设计
TMS320F206的用户可以用汇编语言或C语言进行源程序的编写,因为用C语言开发出的系统易于维护,可靠性高,可移植性好。下面是用C语言编写的液晶显示器MSP-G320240的初始化及清屏程序:
ioport unsigned int port1ff1; /*定义片选地址*/
ioport unsigned int port1ff0;
#define Lcd_wc port1ff1 /*LCD写指令*/
#define Lcd_wd port1ff0 /*LCD写参数*/
#define Lcd_rs port1ff0
#define Lcd_rd port1ff1
#define SYSTEM_SET 0x40 /*初始化设置*/
#define SCROLL 0x44 /*显示域设置*/
#define SLEEP_IN 0x53 /*休闲模式设置*/
#define DISP_ON 0x59 /*显示状态设置显示开*/
#define DISP_OFF 0x58 /*显示关*/
#define OVLAY 0x5b /*显示合成设置*/
#define HDOT_SCR 0x5a /*点位移设置*/
#define CSRFORM 0x5d /*光标形状设置*/
#define CGRAM_ADR 0x5c /*CGRAM首址设置*/
#define CSRDIR_RG 0x4c /*光标移动方式设置光标右移*/
#define CSRDIR_LF 0x4d /*光标左移*/
#define CSRDIR_UP 0x4e /*光标上移*/
#define CSRDIR_DW 0x4f /*光标下移*/
#define CSRW 0x46 /*光标指针设置*/
#define CSRR 0x47 /*读取光标指针*/
#define MWRITE 0x42 /*数据写入设置*/
#define MREAD 0x43 /*数据读取设置*/
#define Lcd AP 0x28 /*显示屏一行所占字节数*/
#define wait() while((Lcd_rs&0x0040)==0x0040)/*等待*/
void Clear(unsigned int Add1,unsigned int Add2,unsigned int Data)
{unsigned int Counter;
Lcd_wc=CSRDIR_RG;wait();?/*Add1: 显示区首址*/
Lcd_wc=CSRW; wait();/*Add2: 显示区末址 */
Lcd_wd=0x00; wait(); /*Data: 显示数据*/
Lcd_wd=0x00;wait();?
Lcd wc=MWRITE; wait();
{for_Counter=Add1;Counter<Add2;Counter++)
{Lcd_wd=Data;wait();}?
Lcd_wc=CSRDIR_DW; wait();}
void Lcd_Init( void) /*初始化液晶子程序*/
{unsigned int i; Lcd_wc=SYSTEM_SET; wait();
for(i=0;i<8;i++)/* Systab[]=0x30,0x87,
0x07,0x27,0x42,0xf0,0x28,0*/
{ Lcd_wd=Systab[i];wait();}Lcd_wc=
SCROLL; wait();
for(i=0;i<10;i++) /*Scrtab[]=0,0,
0xf0,0,0x40,0xf0,0,0x80,0,0x00*/
{Lcd_wd=Scrtab[i];wait(); Lcd_wc=
HDOT_SCR; wait(0;
Lcd_wd=0x00; wait();Lcd_wc=OVLAY;
wait();Lcd_ wd=0x08;wait();
Lcd_Clear(0,0x8000,0x00); /* 清显示区子程序*/
Lcd_wc=DISP_ON; wait();Lcd_wd=
0x54;wait(); /*0x54*/
Lcd_wc=CSRFORM;wait();Lcd_wd=0x07;
wait();
Lcd_wd=0x87;wait();
Lcd_wc=CSRDIR_DW;wait();