inbyte = buf '输入到接收的字节数组中 buf2 = \
s1 = \
For i = LBound(inbyte) To UBound(inbyte) '将收到的数据以字符形式显示 buf2 = buf2 & Hex(inbyte(i)) & \ s1 = s1 & Chr(inbyte(i))
Next
Text2.Text = s1 '在接收文本框中显示数据 Text1.SelStart = 0 '选中输入文本框中所有字符 Text1.SelLength = Len(Text1.Text) Text1.SetFocus
End Sub
Private Sub Form_Load()
Show
MSComm1.PortOpen = True '打开串口
Text1.SetFocus '将光标移到输入文本框中 End Sub
2.单片机通信程序
采用单片机主频为6M,串口工作于方式1,波特率选为1200bps(注意与上位PC机波特率一定相同),由表5-4查得定时器T1工作于方式2,初值为F3H。源程序如下:
ORG 0000H
MOV SP,#60H
MOV SCON,#50H ;串口设为方式1 MOV TMOD,#20H ;定时器1设为模式2 MOV TL1,#0F3H ;置定时器初值 MOV TH1,#0F3H
SETB TR1 ;启动T1 CLR ET1
CLR ES
WAIT1: JBC RI,REVE ;接收字符数据(为所发字符ASCII码) SJMP WAIT1
REVE: MOV A,SBUF SEND1: CLR TI
MOV SBUF,A ;将收到字符回送PC WAIT2: JBC TI,SEND2 SJMP WAIT2
SEND2: AJMP WAIT1 ;等待接收下一字符
END
运行单片机程序与PC机程序。在“发送字符”文本框中键入任一字符,点击通信按钮,若在“接收字符”文本框中显示该字符,则表示通信成功,见图5-11。
由于篇幅所限,本程序仅为演示参考程序,并无实际意义。读者可在此基础上加入一些握手信号和校验码以便成为应用程序,并思考如何实现多字符的通信。
图5-11 PC机与单片机通信
三、单片机多机通信
MCS-51具有多机通信功能,所谓多机通信是指一台主机和多台从机之间的通信,构成主从式多机分布通信系统。主机发送的信息可以传输到各个从机,各从机只能向主机发送信息,从机间不能进行相互通信。图5-12为多机通信联接示意图。
图5-12 单片机多机通信系统
8051TXDRXD主 机TXDRXDTXDRXDTXDRXD80511#从 机80512#从 机80513#从 机多机通信的实现,主要是依靠主、从机之间正确设置与判断SM2和发送或接收的第9位
数据(TB8或RB8)来完成的。多机通信过程如下:
(1)使所有从机的SM2置1,处于只接收地址帧的状态。 (2)主机发送一帧地址信息,与所需从机联络。主机应置RB8为1,表示发送的是地址。 (3)各从机接