电脑如何通过串口发送汉字给单片机?
本人想用电脑发送汉字然后显示在12864上,但试了N次都是乱码,如果用单片机给电脑发送汉字就没问题,哪位能简单的说说如何用发送汉字到单片机上??...
本人想用电脑发送汉字然后显示在12864上,但试了N次都是乱码,如果用单片机给电脑发送汉字就没问题,哪位能简单的说说如何用发送汉字到单片机上??
展开
3个回答
2013-06-08
展开全部
我估计问题出在中断上~~~电脑传给单片机用的应该是uart吧,是通过中断机制完成的。
首先你所用的缓存不能是char型,应该用static char,防止编译器把你这个变量给优化了。
其次你一定要给12864屏与串口传输的逻辑关系弄好,要知道在单片机刷屏时跳中断是很容易出现乱码的。最好是在上位/超级终端/串口调试助手 发送完数据后带一个数据结尾,单片机收到结尾标识符时暂时关闭所有中断在刷屏。
还有你发送的汉字编码应该是gbk编码(windows貌似默认,主要是一般12864支持的汉字是这个编码的。)
最后要是都不好使,估计你用了不带汉字编码库的12864(当然,一般能显示汉字就不会~~~~)
首先你所用的缓存不能是char型,应该用static char,防止编译器把你这个变量给优化了。
其次你一定要给12864屏与串口传输的逻辑关系弄好,要知道在单片机刷屏时跳中断是很容易出现乱码的。最好是在上位/超级终端/串口调试助手 发送完数据后带一个数据结尾,单片机收到结尾标识符时暂时关闭所有中断在刷屏。
还有你发送的汉字编码应该是gbk编码(windows貌似默认,主要是一般12864支持的汉字是这个编码的。)
最后要是都不好使,估计你用了不带汉字编码库的12864(当然,一般能显示汉字就不会~~~~)
推荐于2017-07-31
展开全部
一个汉字是两个字节,直接给DPTR,或uint整型变量付汉字的话只会取出这个汉字ASCII码的一半(高8位还是低8位忘记了)DPTR或变量的低8位付上,高8位为ffh,所以单片机要判断接收的汉字只能通过取表判断,如果想给DPTR付上正确的汉字ASCII码可以用二进制码的形式:db XX,'字' XX是指令MOV DPTR,#的机器码,也是个16进制数,在程序一开始打上MOV DPTR,#0000H,编译一下,在看一下返汇编,0000前面的数就是了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!
1、添加串口空间
2、编程完成串口初始化
3、发送有效数据
4、单片机接收并分析数据
1、添加串口空间
2、编程完成串口初始化
3、发送有效数据
4、单片机接收并分析数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询