传感技术
直播中

余小汉

12年用户 44经验值
擅长:EMC/EMI设计 CRF/无线 控制/MCU
私信 关注
[问答]

为什么串口助手不能显示汉字三

本帖最后由 YXHAN 于 2018-2-28 14:21 编辑

调试一个时钟程序,先把结果通过串口助手显示出来,结果发现不能显示汉字星期三的“三”求解释
试过程序不变把三换成其它的字或数字都可以正常显示,为什么?
UART DISP.png

回帖(7)

h1654155956.5608

2018-2-28 14:20:29
引用: YXHAN 发表于 2018-3-1 10:26
不是串口助手的问题,之前也换了几个串口助手测试过一样的,是KEIL编译的问题

既然说到这个,KEIL C51编译器有BUG。解决方法:用16进制编译软件如HexEdit打开c51.exe, 搜索80FBFD改为80FBFF。
举报

王志平

2018-3-1 08:36:43
使用字模提取了吗???????
举报

余小汉

2018-3-1 09:03:01
引用: 王小瘦 发表于 2018-3-1 08:36
使用字模提取了吗???????

没有,直接输出的字符串
举报

h1654155956.5608

2018-3-1 09:35:15
换成其他串口调试工具试试。
举报

余小汉

2018-3-1 10:15:11
问题解决了,标记一下,也是来自己网络XIAO QI  
原因是KEIL C51 存在一个汉字BUG,keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤,
解决的办法是打补丁,或者不同的操作系统在打补丁也无效的情况下,可以在不能正常显示的汉字后面加“XFD“
我的是WIN7 64位打补丁无效,只能在每个不能正常显示的字后面加“XFD“
如下:数,正,过,三,不能正常显示,所以在后面加上“XFD“就能显示了
UartSendStr("飝数xFD正xFD过xFD下battery:rn");
UartSendStr("汉字三XFD怎么打不出来?rn");
UartSendStr("三xFD");  //keil bug 不能显示的汉字后加xFD
汉字显示ok.png
1 举报

余小汉

2018-3-1 10:26:38
引用: zhifubao 发表于 2018-3-1 09:35
换成其他串口调试工具试试。

不是串口助手的问题,之前也换了几个串口助手测试过一样的,是KEIL编译的问题
举报

h1654155956.5608

2018-3-1 13:26:17
“三”的GBK编码是C8FD,应该就是我说的问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分