TA的每日心情 | 奋斗 2014-11-27 16:02 |
---|
签到天数: 66 天 连续签到: 1 天 [LV.6]常住居民II
|
关于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简体中文编码表,来找到。
已作为附件上传
|
|