你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
wangbao619 发布时间:2014-6-25 10:39
分享一个用过最好用的字库取模软件, o3 R; b& _5 p
LCD字库、表情资料! `! g0 Q6 C7 M8 G# E

* Z3 x! D+ T0 ~$ v- x. \9 b! Q$ g

6 ?- B9 g, ~: j4 O- A( |TFT彩屏是大家经常用到的一个显示模块,用来显示字符图片等一些信息,作为产品的一个重要部分,实现人机交互。其中汉字显示是非常必要的,显示字符只需要采用对应的取模软件,把字符的点阵数据放在程序中即可。当我们要显示少量且固定的汉字时也可以采用这种方法,但是,需要大量且随机的汉字时,靠取模就不能完成了,需要汉字字库来实现。

' V  h/ m% Q' s" d) W2 i. _这个实验使用的汉字大小是16*16,字库是放在SD卡根目录下sys文件夹中的。下面简单的解释一下实现过程。# f8 v# E$ }8 q4 g! l4 y$ n' L/ r* F' b
先来一张图片看看实验效果。& Q+ N! f, a/ X3 i
金龙107汉字字库实验.jpg
/ }1 F& s! s0 Q4 P本实验中,涉及到SD卡的使用,文件系统的移植,LCD屏的使用等。这里主要说明的是LCD的汉字显示
3 {9 |! n! W; R首先是对SD卡的初始化,以及LCD的初始化。
) t$ }( e. U, m. r, ^然后下面开始汉字以及一些字符的显示,字符的显示还是采用的字符点阵的方式。
, `) y7 P; K# |$ _+ V0 ~/ _% K QQ截图20140624173814.png
/ n6 p$ k% l0 ^% @0 |8 n4 h首先是判断的显示位置,是否超过屏的显示范围,如果超过则是实现换行功能。然后下面是判断显示内容的ASCII知道下一个要显示的是字符还是汉字,如果ASCII大于0x80,则是汉字,小于0x80则是字符。因为字符是16*8,所以每显示一个字符横坐标+8,如果是汉字(16*16),横坐标是+16。如果你要使用其它大小的字体显示,请修改相应的数据。
; _# k- V" e( d: X, h2 X QQ截图20140624174313.png - L, b4 t6 e; a) U
在主要讲解汉字显示,字符显示和汉字一样的道理。显示汉字里面,首先开辟一个缓冲区,用来存储点阵数据,然后获取点阵数据,下面是通过获取的点阵数据来进行打点显示。注意我们是16*16的字体,所以每行16个点,一共16行。这里简单说一下打点,主要是采用设置一块16*16显示区域,然后逐一把每个点的数据送给LCD即可,注意要设置号彩屏内部的地址自增方向。否则容易出现错位等现象。注意最后要把显示区域设置成全屏显示。& y$ t" {- h1 s% s
QQ截图20140624180111.png : k" S4 A0 @) I; ]3 z, C
怎么在字库中找到对应的汉字点阵信息,这里的文件系统已经移植好了,打开字库文件。注意的是,每个汉字都有一个内码,占两个字节,通过汉字内码的高低字节,通过公式32*((High8bit-0xa0-1)*94+(Low8bit-0xa0-1))来找到该汉字在字库中的偏移位置,然后读取32个字节,也就是该汉字的点阵数据。字体是16*16=256。256/8=32字节。最后关闭文件就可以了。! h" k* p6 x7 U& k0 D
QQ截图20140624180840.png
2 \. q" c, x9 j" X* _0 G5 h在整个实验中,要注意字体大小的设置,以及LCD设置的地址自增方向,否则容易出现错位现象。
! t* {% C6 ^6 \7 a; C" H最后附上整个工程: 【22】STM32_HZK16(SD)(3.2寸)(板上).rar (3.14 MB, 下载次数: 2058)
收藏 2 评论17 发布时间:2014-6-25 10:39

举报

17个回答
szruan 回答时间:2014-12-11 14:58:16
1212,旺宝电子三重豪礼!
4 v. j8 ?9 }, d. q+ `& G, F- n6 \1.进店有礼,送2元现金!只需要把支付宝账号发给客服,13号客服将统一转账;8 l% {' D! v4 ^' k- Q
2.当天购物红包现抵扣20块;先领红包,再购物哟;
2 r7 c- U* R) Y' L0 h0 t7 n3.12月12日当天全场含1212购物券均支持购物券抵扣,全场包邮。" a2 t( w7 l8 B1 h' ~( Y
仅此一天!活动解释权归深圳旺宝电子所有。( t5 J) G/ \8 N  Z& s8 N
http://openmcu.taobao.com/
bigy 回答时间:2018-10-26 09:36:54
32*32的汉字库呢,搞了一晚上显示得很不好,照理说buffer应该是128,tmp_char 一次要接4个字节不是么
xiaoyustm32 回答时间:2016-6-3 08:36:09
谢谢楼主的讲解。
jeanson-363338 回答时间:2014-6-25 10:43:44

RE:STM32汉字字库(GB-232)显示实验分享

楼主这是直接从SD卡里面读取字库文件然后显示的吗?
zykzyk-93033 回答时间:2014-6-25 11:21:55

RE:STM32汉字字库(GB-232)显示实验分享

意义非凡
wangbao619 回答时间:2014-6-25 14:03:33

回复:STM32汉字字库(GB-232)显示实验分享

回复第 2 楼 于2014-06-25 10:43:44发表:
' k4 z: ^0 q- P) v楼主这是直接从SD卡里面读取字库文件然后显示的吗?; T& z6 m* T/ G9 ^
是的,是直接从SD卡中读取的。字库文件放在SD卡中即可。
! z& d. b- Y9 |4 q8 N1 m- y1 u9 ? 
平淡~简单 回答时间:2014-6-26 09:29:51

RE:STM32汉字字库(GB-2312)显示实验分享

讲解很详细,学习了。
wangbao619 回答时间:2014-6-26 11:21:26

回复:STM32汉字字库(GB-2312)显示实验分享

回复第 5 楼 于2014-06-26 09:29:51发表:/ @6 G. W# W2 {3 o) \8 v' |
讲解很详细,学习了。
8 G, A! V) g- ]* T# k' d% c: M % M$ N$ {; f" I- H9 X
希望对你有帮助。: K8 J, o! y! M( l) v; q
 
yejiangfang 回答时间:2014-7-4 11:41:17

RE:STM32汉字字库(GB-2312)显示实验分享

非常感谢分享宝贵经验!
szruan 回答时间:2014-7-4 14:02:04

RE:STM32汉字字库(GB-2312)显示实验分享

非常感谢楼主的分享
hsh506 回答时间:2014-7-28 06:43:40

回复:STM32汉字字库(GB-2312)显示实验分享

 谢谢!学习了。
caanyee 回答时间:2014-8-11 15:12:25

回复:STM32汉字字库(GB-2312)显示实验分享

bucuoxohu8a 
旺宝电子-364841 回答时间:2014-8-11 17:56:00

RE:STM32汉字字库(GB-2312)显示实验分享

很详细,不错
szruan 回答时间:2014-8-13 09:56:01

回复:STM32汉字字库(GB-2312)显示实验分享

 
szruan 回答时间:2014-8-14 13:57:26

回复:STM32汉字字库(GB-2312)显示实验分享

 楼主
pjrstar 回答时间:2014-9-29 13:55:30

RE:STM32汉字字库(GB-2312)显示实验分享

hao
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版