基于T6963CFG的LCD嵌入式应用的实现
1引言
在嵌入式系统的研发和应用中,选择低价位、高性能的液晶显示设备一直是设计者追求的目标。中小型液晶显示器以其规格多、价位低以及非常适用于嵌入式系统"量身定制"的特点深受研发者的青睐。T6963CFG是TOSHIBA公司生产的一款LCD控制器,可用于不同规格的液晶显示器。深圳汉升公司生产的HS240128显示器采用了这款LCD控制器,其分辨率达240×128,带自扫描电路,具有文本显示、图形显示和图文混合显示功能。
2 T6963CFG控制命令及时序
T6963CFG是一款与大规模LCD驱动器和数据存储器配合使用的LCD控制器。该控制器有8条并行数据、读/写控制、模式选择以及亮度和背光控制等接口线,可以方便地与多种型号的处理器或微控制器直接相连。T6963CFG内置128个字符的字模;外部扩展存储器高达64KB(HS240128显示器扩展了32KB),用于显示缓冲区,如文本区、图形区以及自定义字符区;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的电源(5V);
VD:驱动电压调整输入(亮度);
VEE:LCD驱动电源(输出,-15V);
RST:复位(低)信号;
K:背光(地);
A:背光(5V)。
LCD接口控制信号的读写时序如图1所示。各控制信号的时序可由微控制器的通用输入输出(GPIO)接口仿真实现,例如:C/D为高电平,CE为低电平,WR为高电平以及RD为低电平时,可以从数据线上(D0~D7)读取T6963CFG的状态字。
3在嵌入式系统中的硬件接口电路
通常LCD产品都具有相应的硬件接口电路,但其类型不尽相同。带自扫描电路,可提供文本、图形和图文混合显示功能的LCD可以方便地与市场提供的嵌入式微控制器或单片机相连,如Phlips公司的LPC2104、2119等。S3C44B0X是Samsung公司提供的高性价比嵌入式片上系统解决方案,采用ARM7TDMI内核,片上集成了丰富的外围元件,特别适用于对成本和功耗敏感的应用。S3C44BOX虽然集成有LCD控制逻辑,但是,HS240128显示器的控制接口内置了控制电路,利用S3C44BOX丰富的GPIO口资源(71个),很容易实现配接。在本系统设计中选用PD0~PD7、PE0~PE2、PG4~PG5作为LCD的控制线和数据线。其电路连接如图2所示。
根据T6963CFG的读写时序和相应的电路配接,读写操作的函数为:
charread(chartype)∥从T6963CFG读取数据
4显示控制及程序设计
4。1显示缓冲区的设置
显示缓冲区可分为系统内存显示缓冲区和LCD显示缓冲区。当然,系统也可以只设置LCD显示缓冲区,程序可以只对LCD显示缓冲区进行操作。通常LCD显示缓冲区设置在I/O接口电路中,如HS240128的显示缓冲大小为32KB。根据需要,LCD显示缓冲区可以定义一个、二个或三个不同的显示区,例如:文本区、图形区和自定义字符字模区。可以自定义各区大小.如图3所示。LCD控制器可以自动将LCD显示缓冲区中文本区和图形区的显示信息向屏幕输出和刷新。屏幕的显示位置与显示缓冲区的位置具有映射对应关系。
在系统内存中设置显示缓冲区,通常是为了规范程序设计,提高工作效率。程序首先对系统内存中的显示缓冲区进行读/写操作,然后将其数据更新到LCD显示缓冲区中。系统内存显示缓冲区分为文本区和图形区,本设计设置8KB文本区和16KB的图形区。在字符方式下文本区可映射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字节。如果内存文本缓冲区为8KB,可映射17页(共272行),其缓冲区设置为:Text_Buffer[272][30](行列二维数组),内存文本缓冲区中的数据传送到LCD文本缓冲区的过程可以通过下面的代码实现:
LCD控制器自动扫描并显示从内存送来的17页数据的第一页,如果要显示第二页或其他页,只要向LCD控制器重新设置文本区起始地址即可,因此,LCD可以从显示缓冲区的任意位置开始显示。例如.从第二行开始显示,LCD文本区开始地址应该为30(0x001E)。
设置文本区开始地址的过程如下:
- 基于单片机的频率特性测试仪设计(03-07)
- 基于STC89C516RD单片机的新型冰箱温控器系统(04-27)
- 基于ARM9的带农历实时时钟LCD显示设计(04-27)
- 基于液晶触摸屏技术的太阳能热水器控制系统设计与实现(01-03)
- 基于ARM的校园LED公告板系统设计(02-26)
- 嵌入式系统的定义与发展历史(11-15)