本帖最后由 chew_elecfans 于 2023-8-22 15:04 编辑
` 本帖最后由 chew_elecfans 于 2017-9-24 14:16 编辑
proteus 中没有带汉字库的 12864液晶模块这里提供一个基于 ST7920控制芯片的 12864LCD模型。
见资料文件夹的ST7920仿真模型v1.0
以及如何绘制位图如何将位图转换成显示数据及其相关软件。
并演示了如何用12864显示整屏汉字单个汉字显示图片反白显示某一行。使用软件Proteus7.8 Keil4
这个模块有个问题它不支持ASCII码显示ASCII码即闪退。
此模块只能在proteus 7.7 以上版本运行。
Keil 0xfd BUG 补丁
问题
有些汉字比如三数正除等无法正常显示是ST7920 的12864 字库有问题吗
回答
如果我没有猜错你是用keil编译的吧
你这种情况很有可能是没有打汉字内码0xfd问题的补丁导致只要包含有0xFD内码的汉字均不能正常显示, keil对汉字的兼容不太好需要打这个补丁才能正常显示.
文件下载http://www.51hei.com/ziliao/file/0xfd.rar
文件说明keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤, 而导致程序出错.特别是在做液晶汉字显示时. 针对这个bug.编写了这个补丁. 请下载之后放到你的keilc51in 目录里,运行这个程序点击start.就可以了.
还有一种官方给出的解决方式
关于Keil软件中0xFD问题的说明
众所周知Keil软件的8051和80251编译器的所有版本都有一个叫做0xFD的问题主要表现在字符串中不能含有带0xFD编码的汉字否则Keil软件在编译时会跳过0xFD而出现乱码。 关于这个问题Keil官方的回应是0xfd、0xfe、0xff这3个字符编码被Keil编译器内部使用所以代码中若包含有0xfd的字符串时0xfd会被编译器自动跳过。 Keil官方提供的解决方法在带有0xfd编码的汉字后增加一个0xfd即可。例如 printf("数学"); //Keil编译后打印会显示乱码 printf("数\xfd学"); //显示正常 这里的“\xfd”是标准C代码中的转义字符“\x”表示其后的1~2个字符为16进制数。“\xfd”表示将16进制数0xfd插入到字符串中。 由于“数”的汉字编码是0xCAFDKeil在编译时会将FD跳过而只将CA编译到目标文件中后面通过转义字符手动再补一个0xfd到目标文件中就形成完整的0xCAFD从而可正常显示。 关于0xFD的补丁网上有很多基本只对旧版本的Keil软件有效。打补丁的方法均是在可执行文件中查找关键代码[80 FB FD]并修改为[80 FB FF]这种修改方法查找的关键代码过于简单很容易修改到其它无关的地方导致编译出来的目标文件运行时出现莫名其妙的问题。所以代码中的字符串有包含如下的汉字时建议使用Keil官方提供的解决方法进行解决。
GB2312中包含0xfd编码的汉字如下 褒饼昌除待谍洱俘庚过糊积箭烬君魁 例笼慢谬凝琵讫驱三升数她听妄锡淆 旋妖引育札正铸 佚冽邶埤荦蔟摭啐 帻猃恺泯潺妪纨琮椠辇挲臊忑睚铨稞 瘕颀螨簖酏觚鳊鼾
另外Keil项目路径名的字符中也不能含有带0xFD编码的汉字否则Keil软件会无法正确编译此项目。
proteus 7.8 下载
链接https://pan.baidu.com/s/1kTFvD9CwN_Ac-_-TgE7KqA?pwd=nh2n 提取码nh2n
如何添加12864液晶模块
https://bbs.elecfans.com/jishu_213285_1_1.html
补充内容 (2018-7-13 17:10):
如何添加12864液晶模块
Library --->Compile to Library 在弹出的对话框中选择OK
Library --->Library Manager 在右边的对话框中找到 LCD12864A
只留下这项其它的删除之后点Close按钮这样12864模块就添加完成了
或者参考
https://bbs.elecfans.com/jishu_213285_1_1.html`
|