关于12864液晶屏汉字显示问题

在我们学习或者开发12864显示屏(带字库)的过程中,可能大家会遇到我这样的情况。如下:
 

第三行的“ 数学 ” 两字显示不出来?而第四行却可以,为什么?

答案显而易见,仔细观察的人就发现我第三行跟第四行有个不同的地方就是加了  “ \xfd ”  

我给大家解释解释

这个问题是由于keil本身的固有bug,keil编译器会忽略0xFD值的字符串,导致汉字内码以0xFD结尾的汉字和紧跟着后面的汉字全部显示为乱码,因为它把0xFD丢掉了,导致后面的一大串全是错的。(但是keil官方不认为这是一种bug,所以一直没有去修改这个缺陷

 

下面是Keil官方的说明:
http://www.keil.com/support/docs/2618.htm

GENERAL: COMPILER IGNORES 0XFD, 0XFE, 0XFF VALUES IN STRINGS


Information in this article applies to:

  • C166 Compiler All Versions
  • Cx51 Compiler All Versions
  • C251 Compiler All Versions

QUESTION

I have a problem with the interpretation of Russian strings in the Keil C51 compiler. Some Russian characters are using the encoding 0xFD. It looks like this encoding is ignored by the compiler and is not included in the program code.

Example:

code char RussianString[] = "??? ????";

Why does this problem exist and how can I avoid this behavior?

ANSWER

The character encodings 0xFD, 0xFE, and 0xFF are used internally by the C compiler. The ANSI standard only requires support for ASCII characters in the range 0x00 - 0x7F.

You may insert these characters by using HEX encodings in the string as follows:

code char RussianString[] = "My Text" "\xFD";

A simple text replacement which replaces all 0xFD characters with the string '" "\xFD' should do the job.

 

翻译过来就是:

字符编码0xFD,0xFE和0xFF由C编译器在内部使用。 ANSI标准仅要求支持0x00 - 0x7F范围内的ASCII字符。

您可以在字符串中使用HEX编码插入这些字符,如下所示:

code char RussianString [] =“My Text”“\ xFD”;

使用字符串'“”\ xFD'替换所有0xFD字符的简单文本替换应该可以完成。

****************************************************************************************************************************************

可能有些网友回去修改Keil里面的文件,但不是很建议,因为一旦修改了,对于后面又不知道出现不可想象的错误。

所以我们自己手动添加一个  \xfd    就可以正常显示了。例子就是图片中修改即可。

 

 

读者根据下面两个可以对照了解一下

 

下面是从GB2312中挑出来的相关汉字:

褒 饼 昌 除 待 谍 洱 俘 庚 过 

糊 积 箭 烬 君 魁 例 笼 慢 谬 

凝 琵 讫 驱 三 升 数 她 听 妄 

锡 淆 旋 妖 引 育 札 正 铸 

佚 冽 邶 埤 荦 蔟 摭 啐 帻 猃 

恺 泯 潺 妪 纨 琮 椠 辇 挲 臊 

忑 睚 铨 稞 瘕 颀 螨 簖 酏 觚 

鳊鼾 

 

汉字内码以0xFD结尾的汉字都显示不出来

求证如下:

 

 

 

大家尝试把上面的  \xfd  删除,对比一下,就清楚了。

 

觉得不错,点个赞支持一下!!!

  • 49
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
590gme刷580 是指以游戏590gme为基础,进行刷改使之变为580游戏。刷机是指通过软件或硬件方式对设备进行修改,以实现更高的性能或功能扩展。 要将590gme刷改为580,首先需要了解这两款游戏主机的硬件和软件差异。通常情况下,不同型号的游戏主机在硬件上可能存在差异,如处理器、显卡、内存容量等。同时,软件上可能存在固件版本等差异。 如果580拥有更高的性能和更多的功能,可以考虑以下方法进行刷改: 1. 寻找合适的刷机教程:在互联网上查找与590gme刷改为580相关的刷机教程。这些教程可能包含软件刷机和硬件刷机两种方式,根据自身情况选择合适的刷机方式。 2. 刷机工具和软件:根据教程指引,下载并安装相应的刷机工具和软件,这些软件可以提供对游戏主机的修改和升级支持。 3.备份重要数据:刷机之前,务必备份重要的游戏数据和个人文件,以防止意外情况导致数据丢失。 4.刷机操作:根据教程指引,按照步骤进行刷机操作。这可能包括连接游戏主机到计算机,选择适当的刷机选项,完成刷改过程。 5.测试和验证:完成刷机后,重新启动游戏主机,测试新的功能和性能是否成功应用。如果一切都正常,可以继续享受改版后的游戏主机。 需要注意的是,刷机可能存在风险,可能导致设备不可逆转的损坏,且可能违反制造商的保修条款。因此,在刷机之前,请务必详细了解相关风险并谨慎操作。同时,刷机也并不总是可行的,因为硬件限制可能无法通过刷机进行改变。建议在刷机之前仔细评估和了解相关信息。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值