Keil C51某些汉字不显示bug解决
这个问题是在用ST7920 LCD 12864时发现的,“星期三”中的“三”字显示不出来。经查,发现是Keil编译器的问题,编译器在编译汉字时会将汉字内码0xFD给过滤掉,导致汉字显示不正常。
一、直接用汉字编码
如果直接用编码则不会有这个问题。例如,“三”用0xc8,0xfd代替。
举例如下:
code const unsigned char week_ch[7][6]=
{
{"星期日"},
{"星期一"},
{"星期二"},
{"星期三"},
{"星期四"},
{"星期五"},
{"星期六"}
};
如果直接编译,星期三肯定显示不正常。这个时候可以直接用编码。
code const uchar week_ch[7][6]=
{
{0xD0,0xC7,0xC6,0xDA,0xC8,0xD5},
{0xD0,0xC7,0xC6,0xDA,0xD2,0xBB},
{0xD0,0xC7,0xC6,0xDA,0xB6,0xFE},
{0xD0,0xC7,0xC6,0xDA,0xC8,0xFD},
{0xD0,0xC7,0xC6,0xDA,0xCB,0xC4},
{0xD0,0xC7,0xC6,0xDA,0xCE,0xE5},
{0xD0,0xC7,0xC6,0xDA,0xC1,0xF9}
};
编码可以在LCD模块的使用手册里找到,也可以在ST7920 datasheet里找到。
二、给keil打补丁
针对keil的汉字编译bug,已有网友(晓奇工作室)做了补丁。
下载地址:http://www.greenxf.com/soft/40975.html
若地址失效,请百度or google搜索“Keil C51汉字修复”。
补丁使用办法:
1、关闭Keil,将exe文件拷贝到 \Keil\C51\BIN
2、运行exe文件,打开后点“start”,等待即可。
3、重启Keil
经试验,该补丁对Keil 4有效。
还有人说,用十六进制编辑软件如Ultraedit打开c51.exe,搜索80FBFD,改为80FBFF即可。这个方法我没有尝试。
c51.exe位置:Keil安装目录/keil/c51/bin/c51.exe”。




