16X16点阵汉字显示89C51

本文以UCDOS中文宋体字库为例,详细介绍了如何利用16×16点阵显示汉字,并通过具体实例展示了单片机如何控制显示汉字“大”的过程。此外,还提供了获取汉字扫描代码的方法。

 

参考链接:http://www.picavr.com/news/2008-01/1753.htm (以下不全)

1汉字显示的原理:

我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字, 也可以显示在256像素


我们以显示汉字“大”为例,来说明其扫描原理:

在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。如果用

8位的AT89C51单片机控制, 由于单片机的总线为8位,一个字需要拆分为2个部分。

一般我们把它拆分为上部和下部,上部由8*16点阵组成, 下部也由8*16点阵组成。

在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。即二进制00000100,转换为16进制为 04h.。

上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮, 即为00000000,16进制则为00h。

然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h.

这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.

   依照这个方法,继续进行下面的扫描,一共扫描32个8位, 可以得出汉字“大”

的扫描代码为:

04H,00H,04H,02H,04H,02H,04H,04H

04H,08H,04H,30H,05H,0C0H,0FEH,00H

05H,80H,04H,60H,04H,10H,04H,08H

04H,04H,0CH,06H,04H,04H,00H,00H

由这个原理可以看出, 无论显示何种字体或图像, 都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。

   不过现在有很多现成的汉字字模生成软件, 我们就不必自己去画表格算代码了。


汉字提取软件:

 

转载于:https://www.cnblogs.com/qbmiller/p/3611389.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值