基于T6963CFG的LCD在嵌入式系统中的应用
2008-09-02
作者:谭云福 林志钦
1 引 言
在嵌入式系统" title="嵌入式系统">嵌入式系统的研发和应用中,选择低价位、高性能的液晶显示设备一直是设计者追求的目标。中小型液晶显示器以其规格多、价位低以及非常适用于嵌入式系统量身定制的特点深受研发者的青睐。T6963CFG是TOSHIBA公司生产的一款LCD控制器,可用于不同规格的液晶显示器。深圳汉升公司生产的HS240128显示器采用了这款LCD控制器,其分辨率达240×128,带自扫描电路,具有文本显示、图形显示" title="图形显示">图形显示和图文混合显示功能。
2 T6963CFG控制命令及时序
T6963CFG是一款与大规模LCD驱动器和数据存储器配合使用的LCD控制器。该控制器有8条并行数据、读/写控制、模式选择以及亮度和背光控制等接口线,可以方便地与多种型号的处理器或微控制器" title="微控制器">微控制器直接相连。T6963CFG内置128个字符的字模;外部扩展存储器高达64 KB(HS240128显示器扩展了32 KB),用于显示缓冲区,如文本区、图形区以及自定义字符区;LCD显示窗口能在显示缓冲区内方便地移动。
2.1 控制命令及状态字
T6963CFG命令字有三种基本格式:
格式1:数据1 数据2 命令码
格式2:数据1 命令码
格式3:命令码
在使用格式1时,需要按照数据1、数据2、命令码的先后顺序进行写操作,每次写一个字节。如果选择格式3,只有写命令码的操作。在对LCD读数据或写数据操作之前都要进行状态检测。只有在LCD允许的情况下才可以进行相应的操作。其状态字及其功能如表l所示。
2.2 接口信号及时序
HS240128-1显示器封装后留有21个接口信号线:
C/D:命令/数据(高/低)选择信号;
CE:片选(低)信号;
WR:写(低)信号;
RD:读(低)信号;
D0~D7:数据信号;
FS:字体选择信号(高:6×8,低:8×8);
FG:外壳安全地;
VSS:GND(地);
VDD:逻辑电路和LCD的电源(5 V);
VD:驱动电压调整输入(亮度);
VEE:LCD驱动电源(输出,-15 V);
RST:复位(低)信号;
K:背光(地);
A:背光(5 V)。
LCD接口控制信号的读写时序如图1所示。各控制信号的时序可由微控制器的通用输入输出(GPIO)接口仿真实现,例如:C/D为高电平,CE为低电平,WR为高电平以及RD为低电平时,可以从数据线上(D0~D7)读取T6963CFG的状态字。
3 在嵌入式系统中的硬件接口电路
通常LCD产品都具有相应的硬件接口电路" title="接口电路">接口电路,但其类型不尽相同。带自扫描电路,可提供文本、图形和图文混合显示功能的LCD可以方便地与市场提供的嵌入式微控制器或单片机相连,如Phlips公司的LPC2104、2119等。S3C44B0X是Samsung公司提供的高性价比嵌入式片上系统解决方案,采用ARM7TDMI内核,片上集成了丰富的外围元件,特别适用于对成本和功耗敏感的应用。S3C44BOX虽然集成有LCD控制逻辑,但是,HS240128显示器的控制接口内置了控制电路,利用S3C44BOX丰富的GPIO口资源(71个),很容易实现配接。在本系统设计中选用PD0~PD7、PE0~PE2、PG4~PG5作为LCD的控制线和数据线。其电路连接如图2所示。
根据T6963CFG的读写时序和相应的电路配接,读写操作的函数为:
char read(char type) ∥从T6963CFG读取数据
4 显示控制及程序设计
4.1 显示缓冲区的设置
显示缓冲区可分为系统内存" title="系统内存">系统内存显示缓冲区和LCD显示缓冲区。当然,系统也可以只设置LCD显示缓冲区,程序可以只对LCD显示缓冲区进行操作。通常LCD显示缓冲区设置在I/O接口电路中,如HS240128的显示缓冲大小为32 KB。根据需要,LCD显示缓冲区可以定义一个、二个或三个不同的显示区,例如:文本区、图形区和自定义字符字模区。可以自定义各区大小.如图3所示。LCD控制器可以自动将LCD显示缓冲区中文本区和图形区的显示信息向屏幕输出和刷新。屏幕的显示位置与显示缓冲区的位置具有映射对应关系。
在系统内存中设置显示缓冲区,通常是为了规范程序设计,提高工作效率。程序首先对系统内存中的显示缓冲区进行读/写操作,然后将其数据更新到LCD显示缓冲区中。系统内存显示缓冲区分为文本区和图形区,本设计设置8 KB文本区和16 KB的图形区。在字符方式下文本区可映射17个显示页,在图形方式下图形区可映射4个显示页。
4.2 字符和图形显示过程
4.2.1 字符显示过程
在字符方式下,HS240128-1已装配了128个常用字符字模。在指定的文本显示缓冲区写入相应的字符码00H~7FH,即可实现LCD输出字符[1]。该LCD显示器还提供了扩展字符功能,字符码为80H~FFH,它的字形码(8×8点字模)需要提前写入自定义字符的字模缓冲区中。其地址为7800H~7FFFH。在应用中,通过控制FS引脚选择字体大小(1:6×8或0:8×8)。在6×8方式下,屏幕一行可以显示40个字符,在8×8方式下,一行显示30个字符。整屏可以显示16行字符。
系统内存文本缓冲区与LCD文本显示缓冲区有着映射关系.其数据格式是按屏幕格式大小设定的。例如:一行30个字符对应着内存连续的30个字节。一屏(页)16行对应内存连续的480字节。如果内存文本缓冲区为8 KB,可映射17页(共272行),其缓冲区设置为:Text_Buffer[272][30](行列二维数组),内存文本缓冲区中的数据传送到LCD文本缓冲区的过程可以通过下面的代码实现:
LCD控制器自动扫描并显示从内存送来的17页数据的第一页,如果要显示第二页或其他页,只要向LCD控制器重新设置文本区起始地址即可,因此,LCD可以从显示缓冲区的任意位置开始显示。例如.从第二行开始显示,LCD文本区开始地址应该为30(0x001E)。
设置文本区开始地址的过程如下:
4.2.2 图形显示过程
在图形方式下,显示方法是写点作图,每次向图形缓冲区写入数据时,单位是一个字节(8点),HS240128是240x128分辨率,写满一屏(页)共有3840字节。HS240128-1的控制器T6963CFG自动扫描并显示图形缓冲区的信息。系统内存图形显示缓冲区与LCD图形显示缓冲区具有映射关系,其数据格式是按屏幕格式大小设定的。
例如:一行240个点对应着内存连续的30个字节。一屏(页)128行,对应内存连续的3 840字节。设置内存图形缓冲区为16 kB,映射LCD屏4页(共512行)。内存图形缓冲区设置为:Graph-ic_buffer[512][30](行列数组),则将内存图形缓冲区中的数据传送到LCD图形缓冲区的过程可以通过下面的代码实现:
另外,通过设置图形区的起始地址实现屏幕滚动功能,每次滚动一行时,图形区开始修改地址增量为+30。例如图形从第二行开始显示.向T6963CFG控制器送入图形区的地址应该是0x201E,即图形区首地址为2000H+30=0x201E。
其过程如下:
4.2.3 汉字显示过程
汉字的显示过程是在图形方式下进行的。HS240128-1中无汉字库,显示汉字时需要用户自定义字模并写入LCD图形显示缓冲区,其显示位置按显示页映射即可。汉字字模为16×16点阵格式(32字节)。需汉字16x16字模的用户可以从一般的汉字字模提取软件中获取,本文不再赘述。
4.3 程序设计流程
在对HS240128编程时,首先在内存显示缓冲区中准备好数据,并把数据写入LCD缓冲区,LCD自动实现扫描显示功能。要实现屏幕滚动功能时,只要简单的修改LCD文本区和图形区的起始地址即可。其基本流程如图4所示。
5 结束语
本文系统介绍了T6963CFG控制器的工作原理及LCD软硬件应用接口,详细讨论了点阵液晶显示器的应用方法和在嵌入式系统中的设计实例,希望为嵌入式系统开发人员在选择和使用液晶显示器时提供参考。文中所述的方法已经在一些嵌入式系统设计中得到了很好的应用。