※点阵汉字显示原理及其在点阵 LCD&LED 中的应用※
豪智软件工具 自由职业者 秦文豪
摘 要:本文主要论述汉字的显示原理,并详细阐述了如何创建点阵字库,如何在点阵 LCD&LED 进行扫
描显示的原理,还阐述了如何根据不同的字符编码标准,来存取数据,使您的系统可以和计算机
兼容,并象计算机一样能显示各种字符。
关键字:位(bit)、字节(byte)、字模、计算机内码(ASCII)、UNICODE 编码。
提 示:如果没有特别提示,本文所提到的字库都是指点阵字库。
1. 问题引入
大千世界中,有很多物质都可以看作是由很小很小的点(例如:分子、原子)组成的,当然,您所看
到的字符也不例外。假设我们把一个字符分成若干个可视的点组成,换句话来说,就是一个个点组成
了我们看到的字符。假设您的电脑显示器是液晶的,您不妨仔细的看看,每一个字符或图形都是由一
个个的点组成的,只是这些点很小,小得让您不容易发现而已(仔细看看还是不难发现呀!);由此,
我们引入点阵字符的概念,从微观的电子信号 0 或 1,到宏观可视的字符,足以让我们感叹这世界真
是丰富多彩,奥妙无穷啊!
2. 字模数据
首先,从我们常用的计算机系统谈起,再扩展到我们要开发设计的点阵 LCD&LED 显示系统中去,其
实单片机系统的显示原理和计算机是一样的。在计算机中,所有的数据(包括指令等)都是以 0 和 1
来表示的,这意味着,如果我们想要在显示器上显示字符,那么这些字符的信息将也会是以 0、1 来保
存显示的。那么计算机是如何来存贮显示字符的呢?下面我们举例来说明点阵字符的数据存贮及显示
原理(这里我们主要讨论的是点阵字符,故有关计算机矢量字符的显示及其原理这里就不作说明,而
且单片机的寻址和计算能力远不及 PC,故显示矢量的字符还是有一定的困难)。假设我们把计算机液
晶显示器上显示 16x16 点阵的“豪”字放大 10 倍,如下图所示:
放大 10 倍的“豪” 位信息 字模数据
放大之后,每一个小方格代表一个点,黑色的为 1,白色为 0;每一个点看作为一位(bit)。据此可以
描绘出“豪”字的位(bit)信息。采用行扫描的方式,每八位(bit)为一个字节,这里采用十六进制
表示,这样就得到了字模数据。由上述的示例,我们可以清晰的了解到可视字符、位信息与字模数据
之间的关系。清楚了上面的关系之后,我们就可以自己编写一个字模数据生成工具了。笔者自己就编
写了两款很强劲的字模工具(
汉字字模点阵数据批量生成工具和Font Model Tool,前者是针对汉字编
写的,后来一小日本想用这个工具,Font Model Tool就出生了,不过新增了很多功能,而且是一个中
英文可以互相切换的双语版
),这里介绍给大家,希望共同学习和使用哟。
[点阵异常处理] 假设字符的点阵不是 8 的倍数怎么办呢?通常情况下可以不计或在后面以 4 个 0 位补
足 8 位都可,例如:12x12 点阵的汉字,以本人编写的字模工具软件
为例,是这样处理的:先假设对
12x12 的点阵字符进行扫描,第一行的前 8 位为一个字节,第一行的后面 4 位形成一个字节,以后的
每行逐次类推,直到扫描到最后一行,行成一个完整可用的字模数据。