51单片把串口接收到的字符串存进数组里
时间: 2024-10-17 15:05:09 浏览: 41
51单片机想要通过串口接收字符串并存储到数组中,通常需要遵循以下步骤:
1. **初始化硬件**:首先,你需要配置串口通信,包括设置波特率、数据位、停止位和校验位等。例如,假设你使用的是USART(通用异步收发传输)模块。
2. **创建缓冲区**:为了存储接收到的数据,需要创建一个字符数组,比如`char str[20]`,这里的20通常是一个估算值,取决于预计接收的最大字符串长度。
3. **循环接收**:
- 当串口中检测到起始符(如'\r'或'\n')时,表示一个完整的字符串接收完毕。
- 使用`while(USART_ReadChar() != '\r')`这样的循环,不断读取新的字符,直到遇到换行符或者其他终止条件。
- 将每个接收到的字符添加到数组中,记得处理空格或者溢出的情况。
4. **字符串拼接**:在循环结束后,`str`数组中已经包含了接收到的字符串。如果需要的话,你可以用C语言的`strcpy()`函数将其复制到其他字符串变量中。
5. **处理数据**:完成接收后,可以根据需求对存储的字符串进行进一步的操作,如解析、显示或者保存。
```c
#include <reg52.h> // 假设这是51单片机头文件
char str[20];
int i = 0;
void serialRxISR() interrupt 1 // 假设这是串口接收中断服务程序
{
if (USART_GetChar()) // 如果有新字符就处理
{
str[i++] = USART_ReadChar(); // 存储到数组
if (i == sizeof(str)) // 防止溢出
i--;
}
if (str[i] == '\r') // 检查是否接收到完整字符串
{
str[i] = '\0'; // 添加字符串结束符
// 这里可以执行字符串操作,如打印或处理
// ...
}
}
```
阅读全文