实验十九 RS-485差分串行通信实验 一、实验目的
在一个RS-232通信实验的基础上,利用单片机的TXD、RXD口,学习RS-485差分串行接口的使用。
二、实验要求
深刻理解MAX485(75176芯片的作用,学会在单片机的串行口上使用RS-485(参见图19-1。
+6V +2V 0V -2V -6V
图19-1 RS-485传输方式 三、实验仪器和设备 1、计算机一台
2、D P-51P R O单片机综合仿真试验仪二台
3、120Ω电阻二只 四、实验内容
参考上一个RS-232通信实验,编写一段程序,利用单片机的串行口发送0x55。再编写一段程序,接收RS-485上传输的数据。
五、实验方法和步骤
1、使用导线连接两台DP-51PRO单片机综合仿真试验仪D6区的J6接口(分别A与A相连,B与B相连。另外在D6区的R74上插上120Ω电阻,短接JP5。如图19-2所示。
J6
图19-2 RS-485串行口电路图
2、使用导线连接D6区J40接口的RE、DE到A2区J58的T0、T1,连接 D6区J40接口的RO、DI到A2区J58的RXD、TXD(RO~RXD、DI~TXD。 3、将D1区的J52接口和A2区的J62接口一一对应相连。
4、编写一段程序,利用单片机的串行口发送0x55.波特率为9600bps。(该程序不能在DP-51PRO上进行仿真,所以只能下载。
5、编写一段程序,利用单片机的串行口接收RS-485上传输数据。波特率为9600bps。(该程序不能在DP-51PRO上进行仿真,所以只能下载。
6、两个程序分别在两台机上运行,观察接收的数据和D1区8个LED灯的状态。
六、实验预习要求
认真阅读D6区RS-485实验区内容和MAX485或75176芯片的数据手册,理解硬件结构;还可以先把程序编好,然后在Keil C51环境下进行软件仿真。
D6区上面是一片RS-485收发芯片,可以在上面进行RS-485收发控制的相关实验。电路如图19-2所示。
如图19-2所示,J40为控制信号输入输出端,J6为RS-485通信接口,JP5为电源控制(使用前先短接,做完实验再断开。另外R74是终端匹配电阻(120Ω的插座。
七、实验参考程序 发送程序: ORG 0000H LJMP Main ORG 00F0H Main:
MOV SP,#60H ;给堆栈指针赋初值 MOV TMOD,#20H ;设置T1为方式2 MOV TH1,#0FDH ;设置波特率为9600bps
MOV TL1,#0FDH
MOV SCON,#50H ;设置串口位方式1 MOV PCON,#00H
SETB TR1 ;定时器1开始计数 SETB P3.4 SETB P3.5 SEND:
MOV SBUF,#55H ;开始发送 JNB TI,$ CLR TI AJMP SEND End 接收程序: ORG 0000H LJMP Main ORG 00F0H Main:
MOV SP,#60H ;给堆栈指针赋初值 MOV TMOD,#20H ;设置T1为方式2
MOV TH1,#0FDH ;设置波特率为9600 MOV TL1,#0FDH
MOV SCON,#50H ;设置串口位方式1 MOV PCON,#00H
SETB TR1 ;定时器1开始计数 CLR P3.4 CLR P3.5 REC: JNB RI,$
MOV A,SBUF ;接收数据 CLR RI
CPL A ;对接收数据取反 MOV P1,A ;显示接收到的数据 AJMP REC End
八、实验思考题
1、RS-485通信如何实现既接收又发送?
2、如果在各RS-485节点进行通信过程中,正在发送的节点死机了,会发生什么情况?