WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
T6963C是一款在仪表中使用得比较多的一种液晶显示控制器。提供文本和点阵两种输出方式,但点阵输出的速度比文本显示的速度要慢很多。在文本方式下,其CGROM控制128个英文ASCII码字符,CGRAM则可由用户自定义32个汉字或128个自定义图形。WWW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
由于仪表中使用的汉字经常超过32个,因此,需要对汉字的显示作特别的处理。但由于汉字的处理有些特殊,因此,很多开发人员即偷懒,直接使用点阵需出。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJS_COM-PLC-技.术_网
昨天,我到一家比较有名的电力企业参观,见其仪表的显示速度非常之慢,可以断定它的显示是采用点阵而不是采用文本方式,于是写了此文章。WWW_PLCJS@_COM%-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
原理:WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWcW_PLCJS_COM-PLC-技.术_网
利用液晶故有的CGRAM,将一个汉字作为四个字符,以文本方式显示汉字。WWW.PLCJS.COM——可编程控制器技术门户
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
方法:——可——编——程——控-制-器-技——术——门——户
WWW_PL※CJS_COM-PLC-技.术_网
CGRAM中能显示的字符从80H到FFH,共128个。其中,每连续四个字符作为显示一个汉字。故能显示的汉字量为32个。但在系统中使用的汉字数可能会超过32个。所以,采用数据缓冲技术,在需要显示汉字时,临时构成字符显示码。WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WW.W_PLC※JS_C,OM-PL,C-技.术_网
汉字点阵是以表格形式ChineseTable保存在数据区中。WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLC※JS_COM-PmLC-技.术_网
建立一个长度为16的字符数组CharFlagTable,用来保存当前系统CGRAM中可显示的汉字编号。为了加快系统显示汉字的速度,将汉字分成两组:一级汉字;二级汉字,一级汉字永远保存在CGRAM中,不需要记录编号;而二级汉字在需要显示时,才调于到CGRAM中,需要CharFlagTable来记录编号。其中一级汉字为16个,规定在ChineseTable中前16个汉字为一级汉字,其余的汉字为二级汉字。WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
程序初始化时,将一级汉字调入和前16个二级汉字同时调入CGRAM;并将CharFlagTable的内容清为0。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WriteOneChin函数实现方法:WWW_PLCJS@_COM%-PLC-技.术_网
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
根据需要显示的汉字的编号,计算此汉字对应的CharFlagTable编号Num和序列编号Offset,计算方法为:WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WW.W_PLCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
——可——编——程——控-制-器-技——术——门——户
if (汉字的编号>=16) WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
{WWcW_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
Num=(汉字的编号-16)%16;WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW.PLCJS.COM——可编程控制器技术门户
Offset=(汉字的编号-16)/16;WWW.PLCJS.COM——可编程控制器技术门户
WWW_PL※CJS_COM-PLC-技.术_网
}WWW_P※LCJS_COM-PLC-)技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
再判断对应Num编号的CharFlagTable中的序列编号,如果两者相等,则直接显示该汉字字符,否则,将对应汉字字模调入CGRAM中后,再显示该汉字。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
plcjs.技.术_网
为了提高显示速度,可以将整个显示模式改为非图形模式。WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
WWW_PLCJS_COM-PLC-技.术_网
定义全局静态数组:WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
static signed char CharFlagTable[16];WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
P.L.C.技.术.网——可编程控制器技术门户
WWW_PLCJS_COM-PLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
定义如下函数:WWW_PLCJS_COM-PLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网
void InitCGRAM(void);WWW_PLCJS@_COM%-PLC-技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
//功能:完成初始化CGRAM字符显示区,初始化CharFlagTable表格,程序逻辑如下:WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
{P.L.C.技.术.网——可编程控制器技术门户
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
for (I=0;I<16;I++) CharFlagTable[I]=0;WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
for (I=0;I<32;I++)WriteCGRAM(I);WWcW_PLCJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
}WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WW.W_PLCJS_COM-PLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
void WriteCGRAM(unsigned int ChinNo);WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
——可——编——程——控-制-器-技——术——门——户
//功能:完成将对应编号的汉字的字模点阵信息写入到对应的CGRAM内存区,程序逻辑如下:WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
{P.L.C.技.术.网——可编程控制器技术门户
WWW_PLCJS_COM-PLC-技.术_网
if (ChinNo<16) Num=ChinNo;W1WW_P4LCJS_COM-PLC-技.术_网
P.L.C.技.术.网——可编程控制器技术门户
else Num=(ChinNo-16)%16+16;WWcW_PLCJS_COM-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
Num*=4;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
Num+=0x80; ////得到对应编号汉字的四个字符中第一个字符编号;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
{将编号为ChinNo的汉字数组送入到Num到Num+3四个字符中}WWW_PLCJS_COM-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
}WWW_PLCJS_COM-PLC-技.术_网