找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4819|回复: 15
打印 上一主题 下一主题
收起左侧

请教一个关于51单片机串口发送字符串的问题

  [复制链接]
跳转到指定楼层
楼主
ID:382067 发表于 2018-9-1 22:17 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用51发送字符串时,比如说“12a”,有时候会正确收到,可有时候会收到“2a1”等诸如此类的,不知道大家有没有遇到过这样的问题,难不成是程序存在漏洞?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:392493 发表于 2018-9-2 00:20 | 只看该作者
你有可能没有限制这个字符串的长度,或者字符串后面没有字符串结束,这样使用51单片机发送数据的时候就会出现数据移位的问题,我之前用51和15通信的时候就出现这个问题。

评分

参与人数 2黑币 +50 收起 理由
yousunny + 10 赞一个!
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:382067 发表于 2018-9-2 07:40 来自手机 | 只看该作者
CT任你 发表于 2018-9-2 00:20
你有可能没有限制这个字符串的长度,或者字符串后面没有字符串结束,这样使用51单片机发送数据的时候就会出 ...

可以麻烦你帮忙给个程序吗
回复

使用道具 举报

地板
ID:303383 发表于 2018-9-2 10:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
ID:392580 发表于 2018-9-2 12:31 | 只看该作者
程序没有问题的话,多半是波特率设置不对~

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:392604 发表于 2018-9-2 15:40 | 只看该作者
是给另外一个单片机发送吗,那可能另外一个单片机的接收写的有问题,或者看一下你的字符串是怎么判断结束的

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:382067 发表于 2018-9-2 16:15 来自手机 | 只看该作者
6744 发表于 2018-9-2 12:31
程序没有问题的话,多半是波特率设置不对~

波特率没有问题
回复

使用道具 举报

8#
ID:382067 发表于 2018-9-2 16:17 来自手机 | 只看该作者
392177410 发表于 2018-9-2 15:40
是给另外一个单片机发送吗,那可能另外一个单片机的接收写的有问题,或者看一下你的字符串是怎么判断结束的

我是用labview的visa串口控件接收的,我用了截取字符串,后来也用了匹配模式,有时候就会出现错位现象,就好像单片机很慢似的,但我换用arduino就没事了,有些不太明白。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:392162 发表于 2018-9-2 17:21 | 只看该作者
yang阳 发表于 2018-9-2 16:15
波特率没有问题

这种能收到字符,但是顺序不对的,多半不是波特率问题,波特率错误的话,收到的字符是乱的

这种字符正确,顺序不对的,多半是软件问题,是发送缓冲区的控制出了问题,检查下发送缓冲区的发送指针

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:382067 发表于 2018-9-2 22:46 来自手机 | 只看该作者
lg2911 发表于 2018-9-2 17:21
这种能收到字符,但是顺序不对的,多半不是波特率问题,波特率错误的话,收到的字符是乱的

这种字符正 ...

好的 谢谢
回复

使用道具 举报

11#
ID:339903 发表于 2018-9-3 09:37 来自手机 | 只看该作者
51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI 置 1。 无论 RI 或 TI 出现了 1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。 在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

12#
ID:390775 发表于 2018-9-3 11:32 | 只看该作者
如果你是  单字符发送 你可以加下延时
如果是  字符数组发送 你可以在发送之前打印一下   看看自己发送的是否正确
然后 调试自己代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

13#
ID:130231 发表于 2018-9-3 14:28 | 只看该作者
发送这边加引导码与结束码就可以了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

14#
ID:392604 发表于 2018-9-3 14:43 | 只看该作者
yang阳 发表于 2018-9-2 16:17
我是用labview的visa串口控件接收的,我用了截取字符串,后来也用了匹配模式,有时候就会出现错位现象, ...

labview的话每次接收完后要记得清空串口缓冲区

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

15#
ID:382067 发表于 2018-9-3 15:48 | 只看该作者
392177410 发表于 2018-9-3 14:43
labview的话每次接收完后要记得清空串口缓冲区

好的 我试试 谢谢
回复

使用道具 举报

16#
ID:276175 发表于 2018-9-3 16:27 | 只看该作者
加个延时试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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