如何使用PSoC驱动LCD12864显示汉字/*tt*/
关于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里面,对汉字的解码不对
比如定义数组
https://www.cirmall.com/bbs/forum.php?mod=attachment&aid=MTkyOTN8MDdkZTU2OTB8MTM2NjM1NDU5OHw5NTAyfDY2ODM%***&noupdate=yes 2013-3-28 21:59 上传
下载附件 (14.77 KB)
定义的数组
但实际table4[]在内存里是:
https://www.cirmall.com/bbs/forum.php?mod=attachment&aid=MTkyOTR8MTNkZDEzYTd8MTM2NjM1NDU5OHw5NTAyfDY2ODM%***&noupdate=yes 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 "};
比如改成:
uchartable4[]={0x20,0x20,0x20,0x20,0xC0,0xED,0xB9,0xA4,0xD7,0xD4,0xBF,0xD8,0xD6,0xC6,0xD4,0xEC};
// 理 工 自 控 制 造
就可以显示出汉字了。
具体编码是根据GB2312简体中文编码表,来找到。
已作为附件上传
lz 这个办法可以试试·~~ tao475824827 发表于 2013-4-19 22:10 static/image/common/back.gif
不如用取模软件 按 作图的方式来 画
如果自带字库的话直接用还是很方便的,不过位子就不能随意了,要是想界面又是文字又是图案的话,这倒是不错的方法 ming1006 发表于 2013-4-19 18:45 static/image/common/back.gif
老实说,显示汉字还要自己查汉字编码很麻烦
不如用取模软件 按 作图的方式来 画 ming1006 发表于 2013-4-19 18:45 static/image/common/back.gif
老实说,显示汉字还要自己查汉字编码很麻烦
同意。。尤其是我这种要做好多屏幕汉字的。。确实挺麻烦 老实说,显示汉字还要自己查汉字编码很麻烦
页:
[1]