51单片机串口发送字符串
时间: 2023-09-09 08:13:05 浏览: 206
下面是51单片机串口发送字符串的示例代码:
```c
#include <reg51.h>
#include <stdio.h>
#include <string.h>
#define FOSC 11059200L // 定义晶振频率
#define BAUD 9600 // 定义波特率
#define TIMER_PRESCALER 12 // 定义串口定时器的预分频系数
void init_uart();
void uart_send(char *str);
void main()
{
init_uart(); // 初始化串口
while(1)
{
uart_send("Hello, world!\r\n"); // 发送字符串
delay(5000); // 延时5秒
}
}
void init_uart()
{
TMOD &= 0x0F; // 清除定时器1的控制位
TMOD |= 0x20; // 选择定时器1为8位自动重载模式
TH1 = 256 - FOSC / BAUD / TIMER_PRESCALER; // 设置串口定时器重载值
TL1 = TH1; // 初始化定时器1的初值
TR1 = 1; // 启动定时器1
PCON = 0x00; // 波特率不加倍
SCON = 0x50; // 串口工作在模式1:8位数据,可变波特率
ES = 1; // 使能串口中断
EA = 1; // 打开总中断开关
}
void uart_send(char *str)
{
while(*str != '\0')
{
SBUF = *str; // 把字符写入串口缓冲区
while(!TI); // 等待发送完成
TI = 0; // 清空发送完成标志位
str++; // 指向下一个字符
}
}
```
需要注意的是,串口发送字符串需要等待每个字符发送完成,才能发送下一个字符。所以在代码中需要使用一个while循环来等待发送完成。
阅读全文