[STM32F1] STM32汉字字库(GB-2312)显示实验分享

[复制链接]
5269|25
 楼主| wangbao619 发表于 2014-6-25 10:14 | 显示全部楼层 |阅读模式
本帖最后由 wangbao619 于 2014-6-26 09:13 编辑

TFT彩屏是大家经常用到的一个显示模块,用来显示字符图片等一些信息,作为产品的一个重要部分,实现人机交互。其中汉字显示是非常必要的,显示字符只需要采用对应的取模软件,把字符的点阵数据放在程序中即可。当我们要显示少量且固定的汉字时也可以采用这种方法,但是,需要大量且随机的汉字时,靠取模就不能完成了,需要汉字字库来实现。
这个实验使用的汉字大小是16*16,字库是放在SD卡根目录下sys文件夹中的。下面简单的解释一下实现过程。
先来一张图片看看实验效果。
金龙107汉字字库实验.jpg
本实验中,涉及到SD卡的使用,文件系统的移植,LCD屏的使用等。这里主要说明的是LCD的汉字显示
首先是对SD卡的初始化,以及LCD的初始化。
然后下面开始汉字以及一些字符的显示,字符的显示还是采用的字符点阵的方式。
QQ截图20140624173814.png
首先是判断的显示位置,是否超过屏的显示范围,如果超过则是实现换行功能。然后下面是判断显示内容的ASCII知道下一个要显示的是字符还是汉字,如果ASCII大于0x80,则是汉字,小于0x80则是字符。因为字符是16*8,所以每显示一个字符横坐标+8,如果是汉字(16*16),横坐标是+16。如果你要使用其它大小的字体显示,请修改相应的数据。
QQ截图20140624174313.png
在主要讲解汉字显示,字符显示和汉字一样的道理。显示汉字里面,首先开辟一个缓冲区,用来存储点阵数据,然后获取点阵数据,下面是通过获取的点阵数据来进行打点显示。注意我们是16*16的字体,所以每行16个点,一共16行。这里简单说一下打点,主要是采用设置一块16*16显示区域,然后逐一把每个点的数据送给LCD即可,注意要设置号彩屏内部的地址自增方向。否则容易出现错位等现象。注意最后要把显示区域设置成全屏显示。
QQ截图20140624180111.png
怎么在字库中找到对应的汉字点阵信息,这里的文件系统已经移植好了,打开字库文件。注意的是,每个汉字都有一个内码,占两个字节,通过汉字内码的高低字节,通过公式32*((High8bit-0xa0-1)*94+(Low8bit-0xa0-1))来找到该汉字在字库中的偏移位置,然后读取32个字节,也就是该汉字的点阵数据。字体是16*16=256。256/8=32字节。最后关闭文件就可以了。
QQ截图20140624180840.png
在整个实验中,要注意字体大小的设置,以及LCD设置的地址自增方向,否则容易出现错位现象。
最后附上整个工程: 【22】STM32_HZK16(SD)(3.2寸)(板上).rar (3.14 MB, 下载次数: 173)
沉默胜过白金 发表于 2014-6-25 11:02 | 显示全部楼层
mmuuss586 发表于 2014-6-25 12:05 | 显示全部楼层
不错,谢谢分享
 楼主| wangbao619 发表于 2014-6-25 14:02 | 显示全部楼层
mmuuss586 发表于 2014-6-25 12:05
不错,谢谢分享

谢谢支持!:)
jeansonm 发表于 2014-6-26 10:08 | 显示全部楼层
写的很详细哦
 楼主| wangbao619 发表于 2014-6-26 13:35 | 显示全部楼层
jeansonm 发表于 2014-6-26 10:08
写的很详细哦

谢谢支持。
朝阳之光 发表于 2014-6-26 13:50 来自手机 | 显示全部楼层
 楼主| wangbao619 发表于 2014-6-27 09:29 | 显示全部楼层
自己顶一下。
samuelhu 发表于 2014-7-18 12:00 | 显示全部楼层
不错,挺详细的
qq4988 发表于 2014-7-23 19:38 | 显示全部楼层
samuelhu 发表于 2014-8-11 16:41 | 显示全部楼层
szopenmcu 发表于 2014-8-14 14:05 | 显示全部楼层
:)支持楼主:handshake
yukaigogogo 发表于 2014-8-14 16:28 | 显示全部楼层
这个得收下,刚好用到这一块。
拿起书本 发表于 2014-8-14 19:10 | 显示全部楼层
讲的很详细,显示屏,做产品很经常用到,收藏——感谢分享!
szopenmcu 发表于 2014-11-6 14:57 | 显示全部楼层
庆祝双11,深圳旺宝电子真情回馈广大消费者,送大礼!http://openmcu.taobao.com

1)【买一赠一】购买金龙107/红龙407赠(SD卡一个或JLINK V8仿真器或OV7670摄像头或NRF24L01无线模块一对)

2)【 5折优惠】购买红龙103,金龙207,金龙407,路虎1768,宝马1768,TINY11C14,启航板,TI玉兔均5折优惠回馈广大新老用户!
szopenmcu 发表于 2014-12-4 14:31 | 显示全部楼层
感谢楼主的分享,学习学习
szopenmcu 发表于 2014-12-17 14:49 | 显示全部楼层
非常感谢楼主,无私奉献的精神:)
珍惜放弃 发表于 2015-4-13 19:07 | 显示全部楼层
必须赞啊,现在就是 少这个//
lyn3210 发表于 2015-4-14 11:03 | 显示全部楼层
深圳旺宝 发表于 2016-1-14 15:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:金龙107开发板http://shop36995246.taobao.com/

7

主题

65

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部