找回密码
 立即注册

QQ登录

只需一步,快速开始

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

keil汉字补丁0xfd已更新 解决keil 51单片机驱动12864液晶显示汉字出现乱码的问题

  [复制链接]
跳转到指定楼层
楼主

这是我在本论坛的51hei-5开发板上写的一个程序,想在12864上显示:一二三四五六七,可是总是出现这样的乱码,请各位大哥看看,谢谢了,十分感谢!!!


#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcd_rs=P3^5;    //数据命令选择口
sbit lcd_rw=P3^6;    //读写选择口
sbit lcd_en=P3^4;    //使能信号
sbit lcd_psb=P3^7;    //串/并选择端
sbit wela=P2^6;
sbit dula=P2^7;
sbit diola=P2^5;
uchar i;

uchar code time3[]={"一二三四五六七"};

void delay(uint z)         //延时函数
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void delay4us()       //短延时
{
 _nop_();
 _nop_();
 _nop_();
 _nop_();
}
/*              检查LCD忙状态               */
/*lcd_busy为1时为忙,为0时为闲,可写指令数据*/
void lcd_busy()
{

 uchar busy;
 do
 {
  lcd_en=0;
  lcd_rs=0;
  lcd_rw=1;
  delay4us();
  lcd_en=1;
  busy=P0;        //在使能端的上升沿读走数据
  delay4us();
  lcd_en=0;
 }
 while(busy&0x80);
}
/*写指令到12864:RS=L,RW=L,E=高脉冲*/
void write_command(uchar cmd)
{
 lcd_busy();
 lcd_rs=0;
 lcd_rw=0;
 lcd_en=0;
 P0=cmd;
 delay4us();
 lcd_en=1;
 delay4us();
 lcd_en=0;
}
/*写显示数据到12864:RS=H,RW=L,E=高脉冲*/
void write_data(uchar dat)
{
 lcd_busy();
 lcd_rs=1;
 lcd_rw=0;
 lcd_en=0;
 P0=dat;
 delay4us();
 lcd_en=1;
 delay4us();
 lcd_en=0;
}
/*设定显示位置*/
void lcd_position(uchar x,uchar y)
{

 if(x==0)
  write_command(0x80+y);
 else if (x==1)
     write_command(0x90+y);
    else if (x==2)
     write_command(0x88+y);
    else if (x==3)
     write_command(0x98+y); 
}
/*初始化12864*/
void lcd_init()
{

 dula=0;
 wela=0;
 diola=0;
 lcd_psb=1;      //并口方式
 delay(10);
 write_command(0x30);           //基本操作指令
 delay(5);

 write_command(0x0c);               //显示开光标关
 delay(5); 
 write_command(0x01);              //清除LCD显示内容
 delay(5);

}
void main()
{

 lcd_init();
 delay(10);
 
 lcd_position(0,0);
 i=0;
 while(time3[ i]!='\0')
 {
  write_data(time3[ i]);
  i++;
 }
 write_data(time3[ i]);
 while(1);
 
}


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

使用道具 举报

来自 2#
ID:115923 发表于 2021-10-19 16:07 | 只看该作者
http://www.51hei.com/bbs/dpj-130470-1.html
keil c51升级到v9.54后,原来的0XFD修复工具失效了,所有写了这个小工具。
0XFD问题是keil c51中一直存在的一个问题,表现为当C源代码中使用了汉字等非ASCII字符,而此字符的编码又恰好包含了大于或等于0xFD的字节时,这个字节将被编译器删除,从而最终程序代码的运行错误。
回复

使用道具 举报

板凳
ID:1 发表于 2010-7-22 04:45 | 只看该作者

如果我没有猜错你是用keil编译的吧

 

你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致只要包含有包含0xFD内码的汉字均不能正常显示,这是keil的一个臭名昭著的Bug, keil是德国的,对汉字的兼容不太好需要打这个补丁才能正常显示.

 

文件下载:http://www.51hei.com/ziliao/file/0xfd.rar

文件说明:keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤, 而导致程序出错.特别是在做液晶汉字显示时. 针对这个bug.编写了这个补丁. 请下载之后放到你的keil\c51\bin 目录里,运行这个程序点击start.就可以了.

回复

使用道具 举报

地板
ID:12667 发表于 2010-7-22 07:58 | 只看该作者
谢谢,十分感谢,弄好了,祝你幸福平安!!!
回复

使用道具 举报

5#
ID:67992 发表于 2014-12-11 11:18 | 只看该作者
第一次发现,受教了,下载补救。
回复

使用道具 举报

6#
ID:69240 发表于 2015-5-3 14:39 | 只看该作者
keil4这问题也是一样的解决办法吗,管理员身份运行不成功怎么办

QQ截图20150503143831.jpg (64.06 KB, 下载次数: 456)

QQ截图20150503143831.jpg
回复

使用道具 举报

7#
ID:79358 发表于 2015-5-21 20:42 | 只看该作者
ok,我的问题也得到了解决。三克油
回复

使用道具 举报

8#
ID:86592 发表于 2015-7-23 11:28 | 只看该作者
补丁我用的怎么不成功呢
回复

使用道具 举报

9#
ID:86592 发表于 2015-7-23 16:40 | 只看该作者
admin 发表于 2010-7-22 04:45
如果我没有猜错你是用keil 2编译的吧
&nbsp;
你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致 ...

你好,我怎么下载补丁,测试不可以呢?直接用十六进制区吗也不行?请问我的问题,有可能是出在哪?
回复

使用道具 举报

10#
ID:87968 发表于 2015-8-9 10:31 | 只看该作者
尝试成功,谢谢了。
回复

使用道具 举报

11#
ID:91378 发表于 2015-10-16 19:41 | 只看该作者
多谢,我的问题也解决了!
回复

使用道具 举报

12#
ID:105876 发表于 2016-2-19 22:28 | 只看该作者
admin 发表于 2010-7-22 04:45
如果我没有猜错你是用keil编译的吧
&nbsp;
你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致只 ...

感谢不吝赐教,谢谢了前辈!
回复

使用道具 举报

13#
ID:94440 发表于 2016-4-21 22:54 | 只看该作者
谢谢了~~~~~~~~~~~~
回复

使用道具 举报

14#
ID:79573 发表于 2016-5-4 11:16 | 只看该作者
大神好厉害,这个问题真厉害
回复

使用道具 举报

15#
ID:120861 发表于 2016-5-15 00:32 来自手机 | 只看该作者
怎么我下载了补丁还是显示乱码?求大神们指教
回复

使用道具 举报

16#
ID:120861 发表于 2016-5-15 00:42 来自手机 | 只看该作者
admin 发表于 2010-7-22 04:45
如果我没有猜错你是用keil编译的吧
&nbsp;
你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致只 ...

为什么我下了补丁仍然显示乱码,求大神指教
回复

使用道具 举报

17#
ID:195884 发表于 2017-7-30 22:53 | 只看该作者
这个方法很好用。多谢!
回复

使用道具 举报

18#
ID:171060 发表于 2017-8-13 09:35 | 只看该作者
admin 发表于 2010-7-22 04:45
如果我没有猜错你是用keil编译的吧
&nbsp;
你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致只 ...

感谢分享
回复

使用道具 举报

19#
ID:236024 发表于 2017-9-27 12:43 | 只看该作者
keil汉字补丁能否给我份
回复

使用道具 举报

20#
ID:236024 发表于 2017-9-27 12:44 | 只看该作者
keil汉字补丁能否给我份
回复

使用道具 举报

21#
ID:323650 发表于 2018-5-20 20:13 | 只看该作者
sglf0201 发表于 2015-5-3 14:39
keil4这问题也是一样的解决办法吗,管理员身份运行不成功怎么办

我也这样  请问怎么解决的呀
回复

使用道具 举报

22#
ID:192294 发表于 2018-5-26 09:52 | 只看该作者
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

keilfdfix2.JPG (53.83 KB, 下载次数: 207)

keilfdfix2.JPG

keil_v5_fixed1.jpg (144.25 KB, 下载次数: 172)

keil_v5_fixed1.jpg

keilfdfix3.JPG (120.68 KB, 下载次数: 144)

keilfdfix3.JPG

VirusTotalA.jpg (193.81 KB, 下载次数: 147)

VirusTotalA.jpg

KeilFDfix_新FD补丁(冠铭同学版)b7.rar

96.6 KB, 下载次数: 358, 下载积分: 黑币 -5

回复

使用道具 举报

23#
ID:150905 发表于 2018-8-18 18:34 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

好用。。。。。。
回复

使用道具 举报

24#
ID:69408 发表于 2018-8-30 15:00 来自手机 | 只看该作者
DSCX05 发表于 2018-8-18 18:34
好用。。。。。。

下载试试看行不行?我有一个液晶屏显示“过”字不行,按照管方解决办法加\xFD都没有能解决正常显示,后在“过”字后加\x00才正常显示的,后又有一个“山”字不能正常显示,字后加什么都不行了,用了修复补丁也不行,只修复了“过”字显示的问题,“山”字的显示始终不行哎!今天在下载这个补丁试试看吧!
回复

使用道具 举报

25#
ID:69408 发表于 2018-8-31 13:39 来自手机 | 只看该作者
昨天下载测试了,我的keil3问题还是解决不了,今天下载了一个keil4
回复

使用道具 举报

26#
ID:126254 发表于 2018-10-6 12:54 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

感谢你的无私,我今天也碰到乱码了
回复

使用道具 举报

27#
ID:66862 发表于 2018-12-25 22:44 | 只看该作者
最近在学习12864遇到部分汉字显示乱码,导致后面所有汉字乱码。

"飞流直下三千尺,"  “正弦波”(“三”“正”字显示乱码。)弄了好久都解决不了,现在终于在这里找到了解决方法。谢谢楼主与各位网友!
回复

使用道具 举报

28#
ID:215122 发表于 2019-1-16 12:39 | 只看该作者
在哪呢
回复

使用道具 举报

29#
ID:33145 发表于 2019-1-16 16:35 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!
回复

使用道具 举报

30#
ID:33145 发表于 2019-1-16 16:36 | 只看该作者
我的页无法打补丁啊爱爱爱
回复

使用道具 举报

31#
ID:515093 发表于 2019-4-17 23:28 来自手机 | 只看该作者
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!
回复

使用道具 举报

32#
ID:509823 发表于 2019-4-24 21:54 | 只看该作者
学习KEIL C51 0XFD补丁
回复

使用道具 举报

33#
ID:493518 发表于 2019-5-19 04:45 来自手机 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

多谢多谢
回复

使用道具 举报

34#
ID:561435 发表于 2019-6-13 16:46 来自手机 | 只看该作者
还是可以,很棒
回复

使用道具 举报

35#
ID:614553 发表于 2019-9-29 22:33 | 只看该作者
感谢你的无私,我今天也碰到乱码了
回复

使用道具 举报

36#
ID:698718 发表于 2020-2-27 09:43 | 只看该作者
感谢感谢,我也碰三显示不出来的问题了,昨晚弄了一个晚上,打了补丁当场好了。
回复

使用道具 举报

37#
ID:405098 发表于 2020-3-4 00:28 | 只看该作者
感谢大佬,虽然我来晚了10年。这个真的是听君一席话,胜读十年书。
回复

使用道具 举报

38#
ID:260379 发表于 2020-3-15 18:27 | 只看该作者
admin 发表于 2010-7-22 04:45
如果我没有猜错你是用keil编译的吧
&nbsp;
你这种情况很有可能是,没有打汉字内码0xfd问题的补丁,导致只 ...

我整了一下午了,我就没想到是编译器的问题,淦,感谢感谢
回复

使用道具 举报

39#
ID:759525 发表于 2020-5-27 21:20 | 只看该作者
十分感谢,新KEIL C51 0XFD补丁很好用,旧版在我这里没有用,新版的可以。
回复

使用道具 举报

40#
ID:585455 发表于 2020-10-5 13:25 | 只看该作者
謝謝你,剛剛執行了,秀出成功的信息。
回复

使用道具 举报

41#
ID:719678 发表于 2020-10-25 14:03 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

测试可用,早发现这个补丁就好了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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