常用串口通信-2(RS485)

本文详细介绍了RS485在串口通信中的作用,如其半双工特性、电平转换、以及如何通过MAX485芯片实现单片机与PC的连接。重点讲解了通信过程中的控制信号(DIR)、中断处理和程序编写,展示了单字节发送及多字节处理的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用串口通信-2(RS485)

1.RS485

RS485是RS422A的变型,区别是RS485可用于半双工通信。两线通信,最多可使用32对查分驱动器/接收器。抗干扰性好,传输距离远(1200米),传输速率达1Mbps。更多介绍请看上一篇常用串口通信-1

2.单片机与PC通信

单片机通过MAX485芯片实现RS485/TTL电平转换
PC通过RS-232C/RS485转换器

PC(上位机) 单片机(下位机) 发送 接收 PC(上位机) 单片机(下位机)

单片机MAX485引脚:DIR、TXD、RXD
DIR用来控制收发,为高电平时发送,低电平接收

2.1通信过程

  1. PC端串口通信助手发送数据
  2. 单片机DIR设置0,在接收状态
  3. 单片机SBUF接收PC过来的数据进行存储
  4. 清除中断标志位
  5. 延时1毫秒
  6. 单片机DIR设置1,在发送状态
  7. 单片机从SBUF发送返回到PC
  8. 单片机DIR设置0,恢复到接收状态

3.程序编写

单片机P3.0 / P3.1引脚作为TXD / RXD串口,P1.0引脚作为DIR控制接收还是发送。

sbit  RS485DIR = P1^0;//定义P1.0引脚
void delay(u16 i){
	while(i--);
}
//串口初始化函数
void UsartInint(){
	TMOD=0x20;  //0010 0000
	TH1=0XF3;   //1111 0011
	TL1=0XF3;   //1111 0011
	PCON=0X80;  //1000 0000
	TR1=1; 		//打开TCON的T1定时器
	SCON=0X50;  //0101 0000
	ES=1; 		//打开串口中断
	EA=1;		//打开总中断
	RS485DIR  = 0//初始低电平接收状态
}

解释以上代码:
与前一篇内容同理,做相应的设置,在这里增加一个DIR引脚的设置,RS485DIR = 0;//初始低电平接收状态

//串口中断函数
void Usart() interrupt 4
{
	u8 receiveData;
	receiveData=SBUF;
	RI=0;
	
	delay(100);	   //增加代码
	RS485DIR  = 1//增加代码
	
	SBUF=receiveData;
	while (!TI);
	TI=0;

	RS485DIR  = 0//增加代码
}

解释以上代码:
与前一篇内容同理,在这里增加一个DIR引脚的高低电平来控制收发状态。

4.通信效果

PC端串口通信助手发送数据,单片机收到后就会返回这些数据。
在这里插入图片描述
这是单字节发送,需要多字节发送就要在中断函数中做数据处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安可瑞Ankory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值