2赞

5回答

0收藏

[原创] 如何使用PSoC驱动LCD12864显示汉字/*tt*/

英飞凌 英飞凌 6222 人阅读 | 5 人回复 | 2013-04-19


关于PSoC写12864底层驱动的方法,在kk的前面两篇帖子里讲的非常详细了
串行https://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=6683&page=1#pid61514pid61514
并行https://www.cirmall.com/bbs/thread-6603-1-1.html
写的很详细,鼓掌~撒花~@kk5290122  


但是这两种驱动都没有办法显示汉字,如果在字符串中加入了汉字,则会显示出乱码。
究其原因,不在于驱动程序写的不对。


感觉原因在PSoC Creator里面,对汉字的解码不对
比如定义数组
2013-3-28 21:59 上传
下载附件 (14.77 KB)
定义的数组



但实际table4[]在内存里是:
2013-3-28 21:59 上传
下载附件 (11.13 KB)
内存



一个汉字占掉了3个字符位置。。这明显解码不对
(因为在GCC编译环境下拓展字符必须以UNICODE32存储)



官方说可以尝试以下方法:
#include <wchar.h>
....
wchar_t test_1[] = L"我是"; //用wchar_t 申明 汉字变量 在存储, 这样每个汉字都会转成32位 (可以用(uint16) 来强制取低16位来用)

具体没试,大家可以一试。

不过我一哥们发现了一个很简便的方法。 @guodongws
因为程序仅仅是解码不对,只需要我们在写数组的时候直接把 正确的汉字编码写上即可

比如kk的串行程序中
uchar code table4[]={"PSOC3 LCD12864"};
uchar code table5[]={"Serial Driver"};
uchar code table6[]={"kk5290122 write"};
uchar code table7[]={"in 2013-01-13 "};

比如改成:
uchar  table4[]={0x20,0x20,0x20,0x20,0xC0,0xED,0xB9,0xA4,0xD7,0xD4,0xBF,0xD8,0xD6,0xC6,0xD4,0xEC};
                                                      //               理              工              自               控               制                造
就可以显示出汉字了。

具体编码是根据GB2312简体中文编码表,来找到。

已作为附件上传

GB2312简体中文编码表.doc

90 KB, 下载次数: 22

汉字编码

分享到:
回复

使用道具 举报

回答|共 5 个

倒序浏览

沙发

ming1006

发表于 2013-4-19 18:45:17 | 只看该作者

老实说,显示汉字还要自己查汉字编码很麻烦
板凳

tao475824827

发表于 2013-4-19 22:09:14 | 只看该作者

ming1006 发表于 2013-4-19 18:45
老实说,显示汉字还要自己查汉字编码很麻烦

同意。。尤其是我这种要做好多屏幕汉字的。。确实挺麻烦
地板

tao475824827

发表于 2013-4-19 22:10:28 | 只看该作者

ming1006 发表于 2013-4-19 18:45
老实说,显示汉字还要自己查汉字编码很麻烦

不如用取模软件 按 作图的方式来 画
5#

ming1006

发表于 2013-4-19 23:56:15 | 只看该作者

tao475824827 发表于 2013-4-19 22:10
不如用取模软件 按 作图的方式来 画

如果自带字库的话直接用还是很方便的,不过位子就不能随意了,要是想界面又是文字又是图案的话,这倒是不错的方法
6#

锋仔_up

发表于 2013-11-6 16:32:26 | 只看该作者

lz 这个办法可以试试·~~  
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条