4990|16

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【紧急求助】PC 与 C51串行通信问题 [复制链接]

PC机与多个C51进行通信时,在51中怎么样判断数据是否发送给自己的呢?
如何将数据精确到发送到指定的51单片机上呢?

有效立即给分,绝不 食言而肥

最新回复

我基本明白了 谢谢【lbing7(向青润老大学习!!!)】大哥! 结贴   详情 回复 发表于 2007-5-11 11:43
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
232总线上,加地址识别哈!!

一个结构包
|头|地址|数据长度|数据|校验|尾|
其中数据可以换成命令啥的

由于是总线式的双工通信,你发的时候,所有的单片机都收到,但只有与自己地址匹配的单片机对作动作,其它的片子就丢掉这个包就可以了

这个就能达到
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
最简单的方法是 把传口转成RS485总线这样在软件上就不用改动太打.如果是要把PC串口和MAX232一类的芯片接到一起的话 电平上会出现问题 接收和发送会出问题.
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
我们现场的232线上,我们挂了十多个设备都不成问题...
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
刚刚给的那个是一个基本的思路

标准的协议有:MODBUS

可以用这个协议,基本上这个协议的思路就是刚刚我说的

呵呵
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢 【lbing7(向青润老大学习!!)】 老哥!

=========================


其实这些我基本都明白了!
关键是那个地址码我太懂是什么意思?
能给我解释一下吗?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
在每块单片机里设置一个地址,上位机发数据包给单片机,单片机先解包,把发来的地址跟自己的相比较(异或即可),是自己的就处理,不是的就丢弃。
pc发给单片机的包头,和单片机发给pc的包头不同,以区分开来
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
在每块单片机里设置一个地址,上位机发数据包给单片机,单片机先解包,把发来的地址跟自己的相比较(异或即可),是自己的就处理,不是的就丢弃。
pc发给单片机的包头,和单片机发给pc的包头不同,以区分开来

============================================
为单片机设置的地址是自己定义的吗?
是不是每个单片机都必须手动为它设置地址?                 《不好意思,刚转到这些,有很多不懂,见谅》
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
地址码

其实它是一个抽象了的概念,本质上它就是一个网络中唯一的数值.用来作ID标识确认目标机器.
给个小伪码吧

struct P{
    head;
    ID;
    len;
    *buf;
    end;
}
PC端就按这个组一个数据发过来
在单片机端就这样识别

接收到一个数据然后:
P pMcu
if (pMcu.ID == myID)
{
    //给我的包
    ...做相应的处理
}
else
{
    //清空数据
}
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
lbing7(向青润老大学习!!!)
=====================================
老大,我现在唯一不明白的是这个地址码是本身就有,还是我们自己定义的
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
为单片机设置的地址是自己定义的吗?

这个地址可以在编译期编译进去
如:
const unsigned char myID = 7;//七号小机,当然也可以用数组,用更长的变量,都可以

也可以通过读出片外的ID器件:
如,一些小的ID卡,或是由专门的设置写入到EEPROM或其它的ROM里面的,更有甚者可以给几个开关量用读取IO的形式得到ID...

还可以弄点串口协议,由自行设计的下号器写入单片机里...

 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

12
 
一个PC的串行口连多少个设备比较合适?
我们老板打算连100多个,吓了我一跳!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
我做过的连十多个没问题,不知道100多个能不能连上

我头上没有在,如果一会他回来给你问一下有没有类似于HUB这样的设备,我没用过我不知道

不过应该有...

你先找找哈
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

14
 
RS232并联肯定出问题,因为RS232标准不允许多个节点互联,而且RS232非平衡传输就决定了抗干扰性能很差,并联能通那是因为RS232标准具备很强的容错性能。

多节点网络绝大多数是用RS485总线方式通讯,连接到100个节点,只能用CAN总线。
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

15
 
我也被纠正了...

232不可能挂100多个

上485吧...
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
说是485还可能得加中继...
有专门的设备直接用
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

17
 
我基本明白了
谢谢【lbing7(向青润老大学习!!!)】大哥!

结贴
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表