单片机串行通信技术

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)各从机接

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)