- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PC机与单片机多机实时通信的设计与实现.doc
PC机与单片机多机实时通信的设计与实现
默认分类 2007-10-13 20:22:50 阅读126 评论0 字号:大中小
【摘要】介绍了一种在Windows平台下PC机与多台单片机利用RS-485和RS-232C串行口实现实时通信的方法,并对该系统的软硬件设计方法进行了具体论述。
?? 关键词: Visual Basic 串行通信控件 RS-485 RS-232C
?? 在多媒体语音教学系统中,主计算机与各学生机之间需要进行双向指令传送。由于串行通信具有高效、可靠、价格便宜等优点,故本系统采用了串行通信的方法。Windows95是非实时操作系统,对此本系统设计了以单片机为核心的智能接口单元,负责完成与64台从机的实时通信。整个通信系统由一台PC机和一台负责通信及相关分组配对功能的智能接口单元和64台以单片机为核心的学生单元组成。本系统的单片机采用89C51。智能接口单元通过串行接口芯片8251及电平转换器MAX202与主机通信,通过单片机自带串口用RS-485接口芯片MAX487与从单片机之间进行通信。智能接口单元与6台从单片机之间为总线式网络结构,采用RS-485接口标准。这是半双工的串行通信接口标准,由于采用平衡驱动差分接收电路,具有抗干扰能力强的特点,适用于远距离、高速率下的多机通信。拓扑结构示意图如图1所示。硬件接口示意图见图2。
?????????????????????????????
1 通信协议的约定
??? ?在通信过程中,PC机将指令打包后发给智能接口单元(以下简称主单片机)。主单片机收到完整一包后将包解开,按对每个从机的指令分别发送,同时将各从机发给PC机的指令送给PC机。由于64个从机和主单片机使用同一串口通信线,为避免发生冲突,主单片机处于主动状态,按一定的定时间隔与每一台从机顺序通信。主单片机在与每一台从机通信过程中先发送地址,从机收到地址后若与自己的地址一致,则继续接收主单片机发来的一个字节的命令码,从机收到命令后,将自己的一个字节的命令发送到主单片机。主单片机完成与64个从机的通信需要64个定时间隔,只要定时间隔足够短,主单片机与从机基本上可以实现实时通信。在整个通信过程中,主单片机起着通信枢纽的作用。
??????????????????????????????
2 Windows95下实现串行通信的方法
??? ?Visual Basic 6.0提供了功能强大的MSCOMM.VBX通信控件,它提供了通过串口发送和接收数据的通信能力,不但包括了全部WindowsAPI中关于串行通信的16个函数所完成的功能,而且开拓了更多的方便用户设计的对象属性来满足不同用户不同业务的需求。该通信控件可以采用事件驱动和查询方式来处理和解决通信软件的开发和设计。其中事件驱动是较常用的方式。该控件使用OnComm事件来实现对通信中出现的相关事件以及检测和处理通信错误等方面的问题的处理。例如,根据RThreshold 属性设置值,当接收缓冲区内接收到相应字节的字符时,引发OnComm事件,在事件处理程序中接收数据。
?? Private Sub Form—Load()? 完成对串口控件的初始化
?? MSComm1.CommPort = 1 选用COM1串行口
?? MSComm1.Settings= 9600,N,8,19600波特率,无奇偶校验,8位数据,一位停止位。
?? MSComm1.InputLen= 0 当输入占用时,告诉控件读入整个缓冲区。
?? MSComm1.InBufferSize=1024 设置接收缓冲的字节长度
?? MSComm1.InBufferCount=0 清除接收缓冲区数据
?? MSComm1.OutBufferCount=0 清除发送缓冲区数据
?? MSComm1.RThreshold= 3? 接收缓冲区接收到3个字符后引发OnComm事件。
?? MSComm1.InputMode= comInputModeBinary 接收二进制格式的数据
?? MSComm1.PortOpen= True 打开端口。
?? End Sub
?? Private Sub MSComm1—OnComm()? 处理OnComm事件
?? Dim Buf As Variant
?? Dim Data() As Byte
?? Select Case MSComm1.CommEvent
?? Case comEventRxOver 接收缓冲区溢出。
?? MsgBox 接收缓冲区溢出
?? Case comEventTxFull 传输缓冲区已满。
?? MsgBox 传输缓冲区已满
?? Case comEvReceive??? 收到 RThr
您可能关注的文档
最近下载
- 虾米曲线一体化防堵清堵振动煤斗改造方案2017.10.doc
- 电梯维修指引手册(日立MCA、HGP).pdf
- 牛津译林版八年级下册英语期末复习:全册Unit 1-Unit 8语法知识点提纲(实用,必备!).docx VIP
- 2025届高考散文专题之理解词义、句义.pptx
- 标准参照测验的设计与编制案例.ppt
- 《十万个为什么》-读书分享课件.pptx VIP
- 虾米曲线防堵清堵煤斗运行维护手册.pdf
- 最新人教版小学四年级数学下册期中考试题及答案(三套).pptx VIP
- 04水平四 七年级 武术18课时大单元计划+《健身长拳》.doc VIP
- 统编版语文六年级下册【全册】单元知识点复习课件.pptx VIP
文档评论(0)