基于STM32的中文字库解码

本文介绍了在STM32单片机上实现汉字显示的原理,涉及汉字内码、点阵库以及GBK编码。通过理解汉字内码和点阵库的对应关系,可以制作点阵库并在液晶屏上显示汉字。同时提到了Windows长文件名使用UNICODE码的情况,以及转换码表的必要性。
摘要由CSDN通过智能技术生成

大一在用51显示汉字的时候,用的是带中文字库的12864液晶屏,那个时候只需要套下一下格式就可以实现汉字的显示:

Write_Com(XXX);

delay();

Write_Data("XXX");    //这里的XXX是汉字

但是接触STM32之后,开发板配套的LCD没有带中文字库,所以就只能直接显示英文,不能直接显示中文。再者加上最近要做一个MP3,想实现对于歌词和UI及歌名的中文显示,便萌生了学习汉字显示原理的想法。

汉字在单片机里不是以字符保存的,而是以内码保存的。常用的内码系统有GB2312,GBK等,前者能表示仅几千个汉字,而后者支持繁体字,总字数的达到两万多个。

一般来说,一个汉字对应一个内码,单片机在知道了内码过后再去字库里查找这个汉字的点阵数据,然后在液晶上显示出来。

大概的步骤如下:汉字内码->查找点阵库->解析->显示。所以我们如果有整个汉字的点阵库,就可以把电脑上的文本信息在单片机上显示出来了。这里要解决的最大的问题就是要制作一个与汉字内码对应的汉字点阵库,而且还要方便单片机查找。

每个GBK码由两个字节组成,第一个字节为0X81~0XFE,第二字节分为两部分,第一部分是0X40~0X7E,第二部分是0X80~0XFE。

 第一个字节代表的意义叫做区,那么GBK里就一共有(0XFE-0X81+1)= 126个区。每个区里有(0X40-0X80+8X7E-0X40+2)= 190个汉字,总共是126*190 = 23940个汉字。点阵库只要按照这个编码规则从0X81开始,逐一建立每个区,

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值