单片机
捌瞧经i弃 科技研发
的R.TS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
(一)8051单片机的串行通讯程序如果让8051单片机从外部采集到的一组数据(40个).把数据存放RAM20H一3DH区域,并且将这个数据块传送给PC机,传送前由单片机先向PC机发送数据#55H(联络信号),在PC机接收到信号后,向单片机回送数据#0AAH(回应信号),经检验正确后,单片机再开始向PC机传送数据。
对串行口的操作可分为4步进行。先将串行口初始化,然后发送联络信号;继而接收联络信号,再发送数据。以下程序由汇编语言编写:
图1
oRG
0030H
+Sv
START:MOVSP,#60H
(二)串行接口介绍
可以将PC串行接口与经过转换的符合RS一232C电气标准的单片机串行接口连接即可实现二者之间的异步串行通信。单片机串行接口有一个全双工串行接口,采用丁11L逻辑电平,经过MAX232芯片可方便地转换成R5_232电气标准。
(三)MSCornna通讯控件简介事实上。VB6.0为可视化编程开发软件。开发程序简单易学,VB6提供了多种控件。其中MSCOMM.OCX是具有强大功能串行通信的控件,MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件。它为应用程序提供了通过串行接口收发数据的简便方法,以十分简便地作出良好的人机界面。MSCOMM控件支持以文本和二进制格式传输数据。由于下位机是单片机,处理二进制数据较为方便。具体的来说。它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,二是查询法。
1、事件驱动方式
通过事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下。在事件发生时需要得到通知,在编程过程中.可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
2、查询方式
另外,查询方式实质上还是事件驱动。但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后。可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。MSComm控件的主要属性和方法如下:
CommPott:设置并返回通讯端口号。Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen:设置并返回通讯端口的状态;也可以打开和关闭端口。
InputMode:设置或返回接收数据的类型。
InputLen:设置或返回一次从接收缓冲区中读取字节数。
InputBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
Input:从接收缓冲区返回和删除字符。Output:向传输缓冲区写一个字符串。OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
OutBufferCotmt:设置或返回发送缓冲区中等待计算机发送的字符数。
完毕
AJMPWAIT2READ:MOV号
CrNE
A,SBUF
MOV
TMOD,#20H;T1工作模
式2
MoVTHl.#72HMOV
110HZ
SETB
TLl,#72H
;波特率
TRl
MoVPCoN。#ooHMoVMOVXXl:MOV
MOV号
WAITl:TBCTI,WAIT2完毕
AJMPWAITlWtaT2:JBCRJ,READ
一
;SMOD=O
MOVSCON,#50H;串行方式1
IL0.#20HtL2,#40A.#55HSBUF。A
;数据个数.;发送联络信;等待发送
;等待接收
;接收联络信
A,撑0AAH,XXl;接收数
据不正确,重新开始LOOP:MOVA,@goMOV
SBU甲.A
Output:向发送缓冲区发送数据。该
属性设计时无效,运行时只读。
三、VB环境下通讯程序的设计其实.通讯以一个测控系统的上位机和下位机之间的通信为背景,给出单片机部分和VB环境下的通信程序实例,系统中单片机负责数据的采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232
WAIT:JBC
完毕
TI。LOOPl
AJMPW灿T
:等待发送
LooPl:INCK0
DJNZR2,LOOP
END
(二)计算机的串行通讯程序
加强程序设计是关键步骤。把从单片机读来的数据分别赋给数组。就能实时了
万方数据
2009.04(上)■固
C■-矗-C●-Ioell,●暑‘o矗omy