单片机实验四 双向通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、仿真通信与实物还存在差距,两机需同时开机,保证波特率同步。