单12864显示乱码我们应该怎么做。

张泽平   ·   发表于 2019-12-5   ·   技术交流

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


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

这不是12864损坏   这不是12864损坏   这不是12864损坏   

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

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

keil官方解释为

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

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

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

当然既然出现了就有解决的办法,添加补丁方便快捷(补丁在附件中下载)

使用方法:将本软件放至KEIL的编译器【C51.EXE及A51.EXE】所在文件夹(例如:C:\KEIL_V5\C51\BIN),按[开始]即可自动打补丁(将0x[80 FB FD]替换为[80 FB FF],忽略CX51.EXE及AX51.EXE)。

本工具实测通用支持Keil C51 u2/u3/u4/u5等所有版本!

-------------------------------------------------------------------------------------------

下载链接:http://pan.nyqty.com/s/gokqhwcf



原文链接:https://blog.csdn.net/qq_34692743/article/details/82051808

0 条回复   |  直到 2019-12-5 | 191 次浏览
登录后才可发表内容