keil C51环境下, 某些汉字显示乱码问题

问题描述:使用keil C51编译环境,带字库液晶。发现有些汉字在液晶上无法正确显示: 

uchar code coun_show1[]={"请输入第一操作数"};

其中的汉字 "数" 显示乱码,而如果用简体中文编码代替以上汉字,如:

uchar code coun_show1[] = {0xc7,0xeb,0xca,0xe4,0xc8,0xeb,0xb5,0xda,0xd2,0xbb,0xb2,0xd9,0xd7,0xf7,0xca,0xfd};

在液晶屏上汉字 "数" 是可以正常显示的。其中,汉字 "数" 简体中文编码为:0xca、0xfd。

还发现一些汉字,比如 "除" (简体中文编码:0xb3、0xfd)、"三" (简体中文编码0xc8、0xfd)等。这些不能显示的汉字都有一个共同点:简体中文编码的第二个字节都是 0xfd。

      这是个很早前遇到的问题,要追溯到我还在大学备战大学生电子竞赛的时候。工作期间又一次遇到这个问题,只是分析出可能是编译器的bug,因为简体中文编码下,液晶是可以显示的,但一直没有得到证实。知道前几天在网上闲逛,看到了一个补丁,才意识到自己当初的猜想是正确的。

      原来, Keil 编译器(C51、C251、C166)在内部使用字符编码0xFD、0xFE 和 0xFF ,所以在编译的时候会将 0xfd 的字符(有些汉字含该字符的内码,比如汉字 "数" )过滤,而导致程序出错。特别是在做液晶汉字显示时。

      针对这个问题,有些网友制作了一个补丁,下载之后放到你的 keil/c51/bin 目录里,运行这个程序,就可以了。

        可以在网上搜索关键字 “keil fd 补丁” 来查找并下载补丁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值