单片机实验四 双向通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四:双向通信

一、实验要求

实验目的:了解MCS-51单片机串行口(UART)的结构、工作方式、了解串行通信的原理和数据交换过程,掌握单片机之间进行串行通信的编程方法。

实验内容:将甲乙两台MCS-51单片机串行口连接,即甲机的TXD与乙机的RXD相连,甲机的RXD与乙机的TXD相连,并实现双机共地。整个系统实现双向通信。具体是:

1、甲机的K1键可通过串行口分别控制乙机的LED1点亮、LED2点亮、LED1和LED2全亮或全灭。

2、乙机的K2按键可通过串行口向甲机发送数字,甲机将接收到的数字显示在P0段的LED数码管上。

二、实验原理

串行口工作方式2

MCS-51串行口工作方式2是9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位

串行口工作为方式2时,被定义为9位异步通信接口。其时序如图所示。

串行口工作方式2的波特率

当采用方式2时,波特率仅仅与晶振频率有关。

在方式0中,波特率为时钟频率的1/12,即f osc/12,固定不变。

在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为f osc/64;当SMOD=1时,波特率为f osc/32。

双机通信硬件电路

三、程序设计

1、甲机程序

ORG 0000H

AJMP MAINT

ORG 0003H

AJMP EX_INT0

MAINT: MOV SCON, #90H ;串口工作方式2,允许接收

MOV PCON, #80H ;波特率加倍

MOV R0, #00H

MOV SP, #40H

MOV DPTR, #TAB

SETB IT0

SETB EA

SETB EX0

SETB ES

HERE: SJMP HERE

ORG 0200H

EX_INT0:MOV A, R0

MOV SBUF, A

CHECK: JBC TI, GOON

SJMP CHECK

GOON: CLR TI

INC R0

WAIT: JBC RI, NEXT ;接收部分

SJMP W AIT

NEXT: MOV A,SBUF

MOV R1, A

MOVC A, @A+DPTR

MOV P1,A

CLR RI

RETI

TAB: DB 0C0H, 0F9H, 0A4H, 0B0H

END

2、乙机程序

ORG 0000H

AJMP RECS

RECS: MOV SCON, #90H

MOV PCON, #80H

WAIT: JBC RI, NEXT

SJMP W AIT

NEXT: MOV A, SBUF

MOV B, #04H

MOV P1, A

DIV AB

CLR RI

TRANS: MOV SBUF, B

CHECK: JBC TI, WANLE

SJMP CHECK

WANLE: LJMP RECS

END

设计思路:用R0的最后两位共有00,01,10,11四种状态控制LED1、LED2的亮灭,将R0从甲机传到乙机的P0口,最后两位控制LED灯。之后将乙机中的R0传回甲机,在甲机P1口显示数字。

四、程序验证

1、在Proteus中连接电路图如下:

0:全灭;

五、实验总结

1、甲机与乙机的波特率必须相同才能实现数据传输。使用工作方式2可以更精确的获得波特率。

2、仿真通信与实物还存在差距,两机需同时开机,保证波特率同步。

相关文档
最新文档