snowflyin的个人空间 https://bbs.21ic.com/?456050 [收藏] [复制] [RSS]

日志

STM32F407开发板中文字库显示之中文字库介绍和下载(一)

已有 436 次阅读2018-12-19 21:19 |个人分类:STM32F407实战|系统分类:单片机

中文字库介绍
1.GB2312 编码中表示的6763 个汉字已经覆盖中国大陆99.75%的使用率;
2.当2 个大于127 的字符连在一起时,就表示1 个汉字,第1 个字节使用 (0xA1-0xFE) 编码,第2 个字节使用(0xA1-0xFE)编码,这样的编码组合起来可以表示了7000 多个符号,其中包含6763 个汉字。在这些编码里,我们还把数学符号、罗马字母、日文假名等都编进表中,就连原来在ASCII 里原本就有的数字、标点以及字母也重新编了2 个字节长的编码,这就是平时在输入法里可切换的“全角”字符,而标准的ASCII 码表中127 号以下的就被称为“半角”字符。
3.在GB2312 编码的实际使用中,有时会用到区位码的概念,见图 28-34。GB2312 编码对所收录字符进行了“分区”处理,共94 个区,每区含有94 个位,共8836 个码位。而区位码实际是GB2312 编码的内部形式,它规定对收录的每个字符采用两个字节表示,第一个字节为“高字节”,对应94 个区;第二个字节为“低字节”,对应94 个位。所以它的区位码范围是:0101-9494。为兼容ASCII 码,区号和位号分别加上0xA0 偏移就得到GB2312 编码。在区位码上加上0xA0 偏移,可求得GB2312 编码范围:0xA1A1-0xFEFE,其中汉字的编码范围为0xB0A1-0xF7FE,第一字节0xB0-0xF7(对应区号:16-87),第二个字节0xA1-0xFE(对应位号:01-94)。

例如,“啊”字是GB2312 编码中的第一个汉字,它位于16 区的01 位,所以它的区位码就是1601,加上0xA0 偏移,其GB2312 编码为0xB0A1。其中区位码为0101 的码位表示的是“空格”符。
4.我们常用的中文字库有GB2312_H2424.FON、GB2312_H3232.FON。表示每个汉字是由24*24/32*32个像素组成的.
5.以GB2312_H2424.FON为例, 每个像素在字库中占用24*24/3 = 72bytes的空间。
字库的下载
字库的下载方式有很多, 比如用烧录器预先烧录, 通过usb、uart接收并写入外部flash。
本实验是通过sd卡的方式刷中文字库。
1.准备一张TF卡,格式化为FAT32格式,将GB2312_H2424.FON拷贝到TF卡根目录。
2.打开准备的工程,编译下载。

程序代码如下:


Aux_Data_Typedef  burn_data[] =  

{

  [AUX_GB2312_H2424] =

  {

    .filename           =   "0:/GB2312_H2424.FON",

    .description        =   "**中文字库",

    .start_addr         =   3*1024*1024 ,

    .length             =   1024*1024,

    .burn_option      =  UPDATE,      

  },

};

字库是从flash 3M bytes的地址处下载。

程序运行后, 按下K1按键就可以将字库从TF卡拷贝到外部FLASH。

需要源代码和开发板验证的同学, 请上淘宝店铺https://shop36329318.taobao.com/ 吧!



路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)