当前位置:首页 > 技术心得 > 正文内容

Keil C51某些汉字不显示bug解决

xjtudll12年前 (2014-10-13)技术心得16780

这个问题是在用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里找到。

clip_image002




二、给keil打补丁

针对keil的汉字编译bug,已有网友(晓奇工作室)做了补丁。

下载地址:http://www.greenxf.com/soft/40975.html

若地址失效,请百度or google搜索“Keil C51汉字修复”。

补丁使用办法:

1、关闭Keil,将exe文件拷贝到 \Keil\C51\BIN

clip_image004

2、运行exe文件,打开后点“start”,等待即可。

clip_image006


3、重启Keil

经试验,该补丁对Keil 4有效。

还有人说,用十六进制编辑软件如Ultraedit打开c51.exe,搜索80FBFD,改为80FBFF即可。这个方法我没有尝试。

c51.exe位置:Keil安装目录/keil/c51/bin/c51.exe”。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/340/

标签: keil
分享给朋友:

“Keil C51某些汉字不显示bug解决” 的相关文章

word文档无法打开插入文档里的RAR文件

问题: 办公室的电脑打不开插入word文档插入文档里的RAR文件,但在其他电脑上可以打开。打开时提示:此对象创建于Package中。此应用程序不能用来打开此对象。请确认此应用程序已正确安装,并且未被删除、移动或重命名。 请问该问题如何解决?谢谢! 答案: C:\WINDOWS\system32 目录...

“CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常

“CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常

VS2010 System.TypeInitializationException: “CrystalDecisions.ReportSource.ReportSourceFactory”的类型初始值设定项引发异常。 System.TypeInitializationExce...

金蝶K3 WISE 快速登录

修改快捷方式 "C:\Program Files (x86)\Kingdee\K3ERP\k3main.exe" -LoginUser|账套号|账套密码|用户账号|用户密码...

金蝶K3 怎么实现一个物品 对应多个供应商

金蝶K3 怎么实现一个物品 对应多个供应商

在基础资料里面的采购管理这一块,可以设定每个供应商供应的产品,而且每个供应商的产品可以重复。 虽然会有提示,确定就是了 没问题的...

带锁存移位寄存器(verilog)

带锁存移位寄存器(verilog)

带锁存的移位寄存器 rclk——锁存时钟 sclk——移位时钟 din——输入数据 dout——输出数据 [shiftBitNumbers——移位寄存器位数 module shi...

Altium Keepout层内覆铜

Altium Keepout层内覆铜

Altium绘制PCB时,PCB Keepout层难免是异形,各种乌七八糟的形状都有可能出现。很多时候,只想在Keepout层内覆铜,该咋办呢? 其实很简单,勾选“Remove Dead Copper”,覆铜时覆盖整个Keepout层,覆铜操作结束后,则只在Keepout...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。