Keil5下使用STC15W4K32S4单片机显示汉字的问题

最近一个项目,是用STC15W单片机驱动1.54寸的TFT显示屏。遇到一个问题,即 显示汉字过种中,均可以显示到屏幕上。但是,只有一个汉字不显示,这个汉字就是“过”。

显示程序及效果如下:

经过排查,发现是这个“过”字作为索引在结构体中没有存储完整或是读取时获取的不完整,如下:

输出结果如下:

注意K=11,代表“过”这个汉字在结构体数组中是第11号,明显看出:indx1=0x0,取读的并不完整,有缺失。正常应该是0xfd。也就是“过”这个汉字的GB2312码:0xb9fd

同时,我将Keil的版本进行了降级、升级等,都没办法解决。在结构体加上字节对齐,却无法编译。

烦请各位大神帮看看什么问题。

-------------->   2023/12/21 结帖。具体如下:  <-----------------

本文已经结帖,Mark一下。问题的原因是:Keil软件将诸如0xFD的数值作为Keil内码的一部分进行了过滤。

所以,带来的问题就是:GBK码表中0xFD列相关涉及到的汉字,均显示异常。表现为:汉字的低8位,即0xFD显示成了0x0?,所以会出现这类乱码或是空白的情况。

一、参考文档

Keil C51汉字显示的bug问题_0xd5 0xfd-CSDN博客

        【注】:上述参考文档内关于Keil内C51单片机编译器的错误,解决办法同样适用于C251(但是要在Keil安装目录\C251\Bin目录下修改C251.exe文件)。
二、解决办法:

1. 在待显示的汉字字库、以及代码调用时,汉字后边均加入“\xFD”即可。如:“过”这个汉字,在字库中写成“过\xFD”,程序代码调用时也写成"过\xFD",即可。

2. 我做了个补丁包,请移步这里下载:Keil环境编译汉字字库后,部分汉字显示乱码的补丁包资源-CSDN文库

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值