找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14854|回复: 21
打印 上一主题 下一主题
收起左侧

LCD12864为何个别汉字无法正常显示

  [复制链接]
跳转到指定楼层
楼主
ID:67796 发表于 2014-12-9 12:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一段别人写的数字转汉字的代码中看到这样一段“经调试发现液晶屏不认这一句”,起初以为是这段程序作者自己的液晶硬件上的一些问题导致,没想在自己的液晶上也出现这样问题。
此代码作者将汉字“三”编码拆两半输入问题解决。

  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.          
复制代码



有谁知道这是什么问题?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2014-12-9 13:02 | 只看该作者
解决方案在这里,12864 keil汉字补丁 :http://www.51hei.com/bbs/dpj-5399-1.html

评分

参与人数 1威望 +7 黑币 +7 收起 理由
exv + 7 + 7 问题解决,原来是地址fd被过滤的缘故~

查看全部评分

回复

使用道具 举报

板凳
ID:69946 发表于 2014-12-9 17:08 | 只看该作者
我们用的破解版编译软件,难免存在不足,你从网上下一个补丁,打个补丁就行了。
回复

使用道具 举报

地板
ID:67796 发表于 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文档后再打开文字就变了。

回复

使用道具 举报

5#
ID:7485 发表于 2014-12-9 19:25 | 只看该作者
本帖最后由 ahshmj 于 2014-12-9 19:26 编辑

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:70653 发表于 2014-12-17 22:12 | 只看该作者
终于找到解决办法了,谢谢谢谢
回复

使用道具 举报

7#
ID:70653 发表于 2014-12-18 20:58 | 只看该作者
补丁程序运行了,提示没有改变。还是显示不了“三”
回复

使用道具 举报

8#
ID:67992 发表于 2014-12-18 21:15 | 只看该作者
我WIN7,32位,Keil4下了补丁正常使用,原来不正常。
回复

使用道具 举报

9#
ID:78901 发表于 2015-6-26 20:17 | 只看该作者
升级keil

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:83349 发表于 2015-6-27 13:00 | 只看该作者
汉字补丁

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

11#
ID:85547 发表于 2015-7-13 17:50 | 只看该作者
汉字补丁吧

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

12#
ID:195884 发表于 2017-7-30 22:58 | 只看该作者
这个补丁很好用
回复

使用道具 举报

13#
ID:223214 发表于 2017-8-12 00:58 | 只看该作者
看看数组的代码。
回复

使用道具 举报

14#
ID:244281 发表于 2017-11-17 18:56 | 只看该作者
刚刚也遇到了这个问题,汉字“数”不能正常显示!!
有这个补丁也没解决

C51.exe Havn't  Change
回复

使用道具 举报

15#
ID:244281 发表于 2017-11-17 19:32 | 只看该作者
tyyhmtyyhm 发表于 2017-11-17 18:56
刚刚也遇到了这个问题,汉字“数”不能正常显示!!
有这个补丁也没解决

请问怎么解决呢,用补丁解决不了。版本965
回复

使用道具 举报

16#
ID:250542 发表于 2017-11-17 20:28 来自手机 | 只看该作者
学习了
回复

使用道具 举报

17#
ID:248123 发表于 2017-11-17 21:19 | 只看该作者
需要补丁的
回复

使用道具 举报

18#
ID:399668 发表于 2019-4-6 16:18 | 只看该作者
出现不能显示的汉字,有可能是ASCII码中以0xfd结尾了,被keil编译时忽略。 自己手动添加就好了。
例如:"正确"单独显示没问题,一起显示就乱码。  我们在他后尾自己添加\xfd
“正\xfd确\xfd” 则显示正确了。  
回复

使用道具 举报

19#
ID:506141 发表于 2019-4-7 11:35 | 只看该作者
打个补丁啊  我兄
回复

使用道具 举报

20#
ID:476644 发表于 2019-4-7 12:12 | 只看该作者
要补丁的
回复

使用道具 举报

21#
ID:280228 发表于 2022-3-24 17:51 | 只看该作者
不用打补丁的解决办法
百度"关于12864液晶屏汉字显示问题"即可得到答案
回复

使用道具 举报

22#
ID:1011864 发表于 2022-3-25 11:32 | 只看该作者
字库里面没有你要显示的字
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表