标题: LCD12864为何个别汉字无法正常显示 [打印本页]

作者: exv    时间: 2014-12-9 12:02
标题: LCD12864为何个别汉字无法正常显示
在一段别人写的数字转汉字的代码中看到这样一段“经调试发现液晶屏不认这一句”,起初以为是这段程序作者自己的液晶硬件上的一些问题导致,没想在自己的液晶上也出现这样问题。
此代码作者将汉字“三”编码拆两半输入问题解决。

  1.         
  2.           if(sel==6)  {lcm_w_word("六");}    //
  3.           if(sel==5)  {lcm_w_word("五");}    //
  4.           if(sel==4)  {lcm_w_word("四");}    //
  5. //        if(sel==3)  {lcm_w_word("三");}//<font color="red">经调试发现液晶屏不认这一句</font>,只好用下一句显示 三        。需要打补丁才能正确显示。
  6.         if(sel==3)  {lcm_w_test(1,0xc8);lcm_w_test(1,0xfd);} //此指令等于lcm_w_word("三"); 因为“三”的内码失效。
  7.           if(sel==2)  {lcm_w_word("二");}    //
  8.          
复制代码



有谁知道这是什么问题?


作者: admin    时间: 2014-12-9 13:02
解决方案在这里,12864 keil汉字补丁 :http://www.51hei.com/bbs/dpj-5399-1.html
作者: TY天网    时间: 2014-12-9 17:08
我们用的破解版编译软件,难免存在不足,你从网上下一个补丁,打个补丁就行了。
作者: exv    时间: 2014-12-9 18:45
谢谢各位。

按胡老师提供的补丁修正后已可正常显示。

搜索了下,此问题与KEIL的正版与否无关(正版软件的试用期内使用也会有这个问题),是这么回事:

经过详细研究,西文字符在传递时应该是ACSII值,一个字节,数值小于128;而汉字传递的是其机内码,分高低2个字节,2个字节都大于127,当然并小于256。 字符串传递参数值一显示,可不得了。其惊人之处有:
1."数","正","过"正确显示时其传参值为:0xca00,0xd500,0xb900;而其正确的机内码应该是:0xcafd,0xd5fd,0xb9fd。看来其低位字节被无情忽视。
2."数","正","过"单独显示正确,但是后面带一个字符或汉字就显示乱码了。如"正:"传参的值为:0xd53a,0x0000;"数 "传参的值为:0xca20,0x0000。而":"和" "的ASCII值恰好是0x3a,0x20,看来这几个汉字是叛变到西文字符中去了,机内码只有一个高位字节了。
3.将传参值直接赋给汉字显示函数,如"过"用"0xb9,0xfd"是显示不了的,只能用"0xb9,0x00"。
4.比较发现,显示不正常的"数","正","过"三个字的低位字节都是0xfd,而一直显示正确的"一二"等汉字机内码的低位字节都不是0xfd。 莫非keil跟0xfd有不共戴天之仇?


汉字的编码种类繁多,没有统一标准,出现乱码非常常见。

记得有这么些个汉字,写入TXT文档后再打开文字就变了。


作者: ahshmj    时间: 2014-12-9 19:25
本帖最后由 ahshmj 于 2014-12-9 19:26 编辑

汉字区位码的每个“区”,都有一个0x**fd的字,由于在keil中,0xfd被过滤掉,所以不能正确编译,也就不能正确显示。解决的方法可以直接使用区位码。或者如上几位所说使用补丁。

作者: 来自火星的蜗牛    时间: 2014-12-17 22:12
终于找到解决办法了,谢谢谢谢
作者: 来自火星的蜗牛    时间: 2014-12-18 20:58
补丁程序运行了,提示没有改变。还是显示不了“三”
作者: dgahz    时间: 2014-12-18 21:15
我WIN7,32位,Keil4下了补丁正常使用,原来不正常。
作者: fsj5098    时间: 2015-6-26 20:17
升级keil
作者: jasone    时间: 2015-6-27 13:00
汉字补丁
作者: zhanghanli007    时间: 2015-7-13 17:50
汉字补丁吧
作者: 5000322    时间: 2017-7-30 22:58
这个补丁很好用
作者: 宝哥哥    时间: 2017-8-12 00:58
看看数组的代码。
作者: tyyhmtyyhm    时间: 2017-11-17 18:56
刚刚也遇到了这个问题,汉字“数”不能正常显示!!
有这个补丁也没解决

C51.exe Havn't  Change
作者: tyyhmtyyhm    时间: 2017-11-17 19:32
tyyhmtyyhm 发表于 2017-11-17 18:56
刚刚也遇到了这个问题,汉字“数”不能正常显示!!
有这个补丁也没解决

请问怎么解决呢,用补丁解决不了。版本965
作者: zhito    时间: 2017-11-17 20:28
学习了
作者: @单片机。。。    时间: 2017-11-17 21:19
需要补丁的

作者: 695297438@qq.co    时间: 2019-4-6 16:18
出现不能显示的汉字,有可能是ASCII码中以0xfd结尾了,被keil编译时忽略。 自己手动添加就好了。
例如:"正确"单独显示没问题,一起显示就乱码。  我们在他后尾自己添加\xfd
“正\xfd确\xfd” 则显示正确了。  
作者: zlm1007    时间: 2019-4-7 11:35
打个补丁啊  我兄
作者: toby2006    时间: 2019-4-7 12:12
要补丁的
作者: zzy9903    时间: 2022-3-24 17:51
不用打补丁的解决办法
百度"关于12864液晶屏汉字显示问题"即可得到答案

作者: caowei123    时间: 2022-3-25 11:32
字库里面没有你要显示的字




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1