51单片机串口通信的接收与发送(51单片机串口通信的接收与发送数码管同步)

51单片机串口通信概述

串口通信是指通过串行数据传输方式实现设备之间的通信。51单片机可以通过串口口通信实现与其他设备的数据交互,互通有无。串口通信是一种较简单、普遍、可靠的通讯方式,被广泛应用在各种设备中。其接收与发送是相对应的,需要在程序中分别设置。

51单片机串口通信接收

51单片机串口通信接收主要可分为两个步骤:

第一步是串口初始化,需要先选择通信波特率,如选择9600波特率,则需要设置波特率为0x33,具体代码如下:

```c++
void uart_Init() {
SCON = 0x50; //设置串口工作在模式1(波特率可变)下
TMOD |= 0x20; //设置定时器1为8位自动重装载计数器
TH1 = 0xFD; //设置串口通信波特率为9600波特率
TL1 = 0xFD;
ET1 = 0; //关闭定时器1中断
TR1 = 1; //启动定时器1
EA = 1; //开启总中断
ES = 1; //开启串口接收中断
}
```

第二步是设置中断函数,在接收到数据后,中断函数将数据读入缓存区中,代码如下:

51单片机串口通信的接收与发送(51单片机串口通信的接收与发送数码管同步)

```c++
void uart_int() interrupt 4 {
if (RI == 1) { //接收到数据
RI = 0;
buffer[write_point] = SBUF; //将数据存入缓存区中
write_point = (write_point + 1) % BUFFER_SIZE; //缓存区写指针的移动
}
}
```

以上程序描述了51单片机串口的接收过程,通过使用中断函数和缓存区,能够更好的处理来自其他设备的数据。

51单片机串口通信发送

51单片机串口通信发送主要分为以下两个步骤:

第一步是串口初始化,与接收不同的是,发送需要使能定时器1中断,同时配置相应的波特率,其中TH1和TL1的值等于65536减去(晶振频率/常数/波特率),如下代码:

```c++
void uart_Init() {
SCON = 0x50; //设置串口工作在模式1(波特率可变)下
TMOD |= 0x20; //设置定时器1为8位自动重装载计数器
TH1 = 0xFD; //设置串口通信波特率为9600波特率
TL1 = 0xFD;
ET1 = 1; //开启定时器1中断
TR1 = 1; //启动定时器1
EA = 1; //开启总中断
ES = 1; //开启串口接收中断
}
```

第二步是发送数据,可以使用串口发送寄存器SBUF来发送要发送的数据,如下代码:

```c++
void uart_send_byte(unsigned char byte) {
while (!TI) {} //等待当前数据发送完毕
TI = 0;
SBUF = byte; //发送数据
}
```

以上程序描述了51单片机串口的发送过程,通过设置定时器1中断,能够更好的处理要发送的数据。同时,我们也可以通过监测TI的值,来确保前一个数据传输完毕。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcu0qm.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(1)
上一篇 2023年4月26日 上午8:00
下一篇 2023年4月26日 上午8:00

猜你喜欢