找回密码
 立即注册
搜索
热搜: RA8889 RA8876 RA8875
查看: 580|回复: 0

RA8889/RA8876显示汉字与缩进字符混合

[复制链接]

4

主题

0

回帖

240

积分

版主

积分
240
发表于 2024-4-16 10:29:43 | 显示全部楼层 |阅读模式
本帖最后由 weran 于 2024-7-22 09:25 编辑

本文章介绍如何显示中英文混合字符串,并且ASCII字符为半角经过缩进调整后显示。

一、效果演示
演示范例为中英文混合输出显示,简体中文汉字为GB2312编码方式、字型为宋体、大小 24x24,英文ASCII字符字型为Arial、大小 24x24、缩进之后显示。
  


二、字库的生成
1、中文字库的生产使用CharacterMatrix软件,先使用16x16汉字点阵字体生成当前字体内包含的所有字符共8177个字模,然后全选字模更改为字体设定为宋体,字体大小24x24,然后导出二进制文件(bin文件)。


2、ASCII字符字库生产使用CharacterMatrix软件;编辑/添加单写文字/输入所有ASCII字符;全选字模 ,设置/字模字体,设定合适的字体格式与大小;逐个调整字符使其全部进行左对齐;调整好之后导出代码(.h文件)。



中英文字库工程文件:


3、生成好的ASCII字库在开头添加一个字符大小(24*24/8)的空数据,并将文件调整为数组的格式。


4、将调整好的ASCII文件以头文件的方式引用到计算ASCII字符实际宽度的代码中并将输出的数组添加到ASCII字库文件中,可参考RA8889/RA8876显示缩进自定义ASCII字符方法这篇文章。

计算ASCII字符实际宽度的代码文件:

制作好的ASCII字库文件:



三、演示代码
  1.                 SPI_NOR_initial_DMA (0,Font_BUS,Font_CS,1,0);
  2.                 str="苏州菱致电子 @lcdvision.com.cn";
  3.                 Show_User_Def_String(str,songti24,24,3,60,100,1,color65k_yellow,color65k_blue);//后三个参数  汉字和ASCII字符的透明度、前景色、背景色

  4.         //显存色深恢复初始化状态
  5.         #if defined (MCU_8bit_ColorDepth_8bpp)
  6.                 BTE_S0_Color_8bpp();
  7.         #endif
  8.         #if defined (MCU_8bit_ColorDepth_16bpp) || defined (MCU_16bit_ColorDepth_16bpp)        
  9.                 BTE_S0_Color_16bpp();
  10.         #endif
  11.         #if defined (MCU_8bit_ColorDepth_24bpp) || defined (MCU_16bit_ColorDepth_24bpp_Mode_1) || defined (MCU_16bit_ColorDepth_24bpp_Mode_2)        
  12.                 BTE_S0_Color_24bpp();
  13.         #endif
复制代码



四、程序流程图


该流程为将生成的中文字库(.bin文件)烧录到FLASH中,ASCII字库添加到项目工程中头文件引用数组,中文汉字字节最高位为1,ASCII字符单字节高位为0,以此判断该字体为中汉字或ASCII字符 ,汉字通过识别该字体内码计算该字体在FLASH中的地址,然后通过线性DMA将数据写入显存再进行数据延展到屏幕显示;ASCII字符通过识别该字符内码计算该字符在数组中的地址,然后调用数组中的数据进行打点显示到屏幕上。


五、源代码下载

分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Lcdvision Technology ( 苏ICP备10203891号 )

GMT+8, 2024-11-1 08:11 , Processed in 0.074215 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表