当前位置:实例文章 » 其他实例» [文章]单片机第一季:零基础10——串口通信和RS485

单片机第一季:零基础10——串口通信和RS485

发布人:shili8 发布时间:2024-12-27 17:58 阅读次数:0

**单片机第一季:零基础10——串口通信和RS485**

在前面的文章中,我们已经学习了如何使用单片机进行基本的输入输出操作,如LED灯的闪烁、按键的读取等。然而,在实际的工程应用中,单片机往往需要与外部设备或其他单片机进行通信,以实现更复杂的功能。在本篇文章中,我们将学习如何使用串口通信和RS485协议来实现单片机之间的数据传输。

**什么是串口通信**

串口通信是一种通过电缆连接两个或多个设备,使用一对引脚(TXD和RXD)进行数据传输的通信方式。串口通信通常用于低速率的数据传输,如控制器面积网(CAN)、工业以太网(IEC61158-2)等。

**什么是RS485**

RS485是一种半双工的串行通信协议,使用两对引脚(TXD和RXD)进行数据传输。RS485协议支持多台设备之间的通信,并且可以实现较高的传输速率。

**单片机上的串口通信**

在单片机上,我们通常使用UART(通用异步收发器)模块来实现串口通信。UART模块提供了TXD和RXD引脚,用于数据的发送和接收。

下面是一个简单的例子,使用ATmega328P单片机上的UART模块进行串口通信:

c#include <avr/io.h>
#include <util/delay.h>

int main() {
 // 配置UART模块 UBRRH = (uint8_t)((uint16_t)9600 >>8);
 UBRRL = (uint8_t)((uint16_t)9600);
 UCSRC = (1 << URSEL) | (1 << USBS); //8位数据,双倍速率 UCSRB = (1 << TXEN) | (1 << RXEN);

 while(1) {
 // 发送数据 UDR = 'A';
 _delay_ms(1000);
 // 接收数据 while (!(UCSRA & (1 << RXC)));
 char received_char = UDR;
 if(received_char == 'B') {
 // 如果接收到'B',则发送'A'
 UDR = 'A';
 }
 }

 return0;
}


在这个例子中,我们配置了UART模块的波特率为9600bps,并且使用双倍速率。我们发送一个字符'A',然后等待1000ms后再接收一个字符。如果接收到的字符是'B',则发送一个字符'A'。

**RS485通信**

RS485通信是一种半双工的串行通信协议,使用两对引脚(TXD和RXD)进行数据传输。下面是一个简单的例子,使用ATmega328P单片机上的UART模块实现RS485通信:

c#include <avr/io.h>
#include <util/delay.h>

int main() {
 // 配置UART模块 UBRRH = (uint8_t)((uint16_t)9600 >>8);
 UBRRL = (uint8_t)((uint16_t)9600);
 UCSRC = (1 << URSEL) | (1 << USBS); //8位数据,双倍速率 UCSRB = (1 << TXEN) | (1 << RXEN);

 // 配置RS485引脚 DDRD |= (1 << PD2); // TXD引脚为输出 PORTD &= ~(1 << PD2); // TXD引脚拉低 while(1) {
 // 发送数据 UDR = 'A';
 _delay_ms(1000);
 // 接收数据 while (!(UCSRA & (1 << RXC)));
 char received_char = UDR;
 if(received_char == 'B') {
 // 如果接收到'B',则发送'A'
 UDR = 'A';
 }
 }

 return0;
}


在这个例子中,我们配置了UART模块的波特率为9600bps,并且使用双倍速率。我们发送一个字符'A',然后等待1000ms后再接收一个字符。如果接收到的字符是'B',则发送一个字符'A'。

**总结**

在本篇文章中,我们学习了如何使用串口通信和RS485协议来实现单片机之间的数据传输。我们配置了UART模块的波特率为9600bps,并且使用双倍速率。我们发送一个字符'A',然后等待1000ms后再接收一个字符。如果接收到的字符是'B',则发送一个字符'A'。

**参考**

* ATmega328P单片机数据手册* UART模块配置指南* RS485通信协议规范

相关标签:嵌入式硬件单片机
其他信息

其他资源

Top