新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PC机与单片机多机实时通信的设计与实现

PC机与单片机多机实时通信的设计与实现

作者:时间:2012-02-06来源:网络收藏

VB可以发送文本数据和二进制数据。发送二进制数据时,必须传递一个包含字节数组的 Variant到 Output 属性。接收二进制数据时,Input属性通过一个Variant返回一二进制数据的数组。为便于命令的表达,本系统采用二进制格式的数据。

为更深入了解该控件,这里对接收数据缓冲区进行了分析,该控件开辟的接收数据缓冲区类似一个队列,Windows95低层驱动程序负责将接收到的数据填入队列尾部,同时修改尾指针,当OnComm事件发生后用Input读取InputLen长度个字节后,将队列头指针后移InputLen位。可以把这个缓冲区开得大一点,这样即使暂时来不及处理也不会丢失数据。接收数据缓冲区数据结构示意图如图3所示。

3 多机通信的实现

89C51单片机的串行口工作方式3可实现多机通信。接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能情况:接收到第9位数据为1时,数据才装入SBUF,并置RI=1向CPU发出中断请求;如果接收到第9位数据为0,则不产生中断标志,信息将抛弃。若SM2=0,则接收到的第9位数据不论是0还是1都产生RI=1中断标志,接收到的数据装入SBUF中。根据这个功能,可实现多个 89C51应用系统的串行通信。

机定时中断服务程序框图

多机通信过程安排如下:使所有从机的SM2位置1,处于只接收地址帧的状态;主机发送一帧地址信息,其中包含8位地址,第9位为地址、数据标志位,第9位置1表示发送的是地址;从机接收到地址帧后 ,各自将所接收的地址与本从机的地址相比较,对于地址相符的从机,使SM2清0以接收主机随后发来的信息,对于地址不相符的从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直至发送新的地址帧;主机发送控制指令与数据,给被寻址的从机数据帧的第9位置0,表示发送的是数据。

单片机程序采用PLM51语言设计,主单片机定时中断服务程序框图如图4所示。主单片机串行口接收和发送中段服务程序框图如图5所示。主单片机串行口接收中断服务程序如图6所示。从单片机串行口接收和发送中段服务程序框图如图7所示。主单片机在主程序中以查询方式将各从机送来的数据从内存中读出后顺序发送给上位PC机。程序清单略。


从实际使用来看,本系统具有较高的性价比,且稳定可靠,稍加改进即可用于自动化测量和实时控制系统的数据通信。

参考文献

1 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航天航空大学出版社,1990.1

2 陈功富,韩贤东.计算机网设计与实现.北京:人民邮电出版社,1994.10


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭