找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

LCD12864串行接法使用单片机串口乱码问题

查看数: 4216 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-2-6 00:12

正文摘要:

为啥给单片机发送包好+CI就会引发显示乱码,不管+CI前面后面是否有字符,都能引起显示乱码。 还有一种情况 单独CI一直发送也会一起乱码。其他字符均不会引起乱码,包括中文。只有单片机接收到+CI或者单独CI才会乱码 ...

回复

ID:383374 发表于 2019-2-8 18:37
yaoji123 发表于 2019-2-8 15:11
LCD12864串口通讯对接收数据有处理时间的,用单片机串口通讯给它传送数据要注意间隔时间,不能连续不断的抟 ...

这个我明白,现在的问题不在这。问题是+cI会引起我屏幕显示乱码。
你说我不可能每发送两三次,就重新初始化LCD吧。
当然也没这个必要,因为除了+CI外其他字符,包括中文也不会导致显示乱码,哪怕我5ms向单片机发送数据,也不会引起任何问题。



.
ID:432823 发表于 2019-2-8 15:11
LCD12864串口通讯对接收数据有处理时间的,用单片机串口通讯给它传送数据要注意间隔时间,不能连续不断的抟。最好做好应答机制。便于LCD2864处理数据。
ID:383374 发表于 2019-2-8 12:57
yzwzfyz 发表于 2019-2-7 01:44
把你的程序画成流程图看看,逻辑上有何不妥?
写程序的习惯不好,记住要领:
1、串行中断只接收数据,并存 ...

就是串口接收到+I就开始接收数据,遇到#就结束接收。如果是+开头与者I开头就存入缓冲区(数据帧头)。不是就不接收,如果遇到#(
数据帧尾)
就停止接收。
显示乱码,跟接收的esp返回值代码有关,跟我数据代码无关。还有数据丢失一次,跟跟覆盖没有关系,因为只要我发送第一次,第二次不管多久间隔都能接收到,你连续发送多次,也是会每两次接收到一次。
应该问题出在解析代码上,但是我也没有发现有啥不对。
ID:123289 发表于 2019-2-7 01:44
把你的程序画成流程图看看,逻辑上有何不妥?
写程序的习惯不好,记住要领:
1、串行中断只接收数据,并存入缓冲区,做个收到的标记就好。尽可能不要在中断中做其它任何事情。
2、数据处理,如显示等等地,在主程序中进行。
道理如下:串行数据是一个个串来的,一个数据到来后,你收到了,但处理它可能需要花一些时间,如显示中的硬件等待...,如果执行时间超过的一个字节的串行时间,则下一个串行数据就能丢失,因为这时你的串行中断还未退出,新的数据来了无法再次进入中断,如此就可以丢失后面的串行数据!所以中断服务程序要尽可能的用时短!
ID:383374 发表于 2019-2-6 01:54
这是我编写的串口接收代码。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表