51单片机串口控制led灯程序
时间: 2023-07-31 15:04:04 浏览: 147
好的,下面是51单片机串口控制LED灯的程序示例:
```
#include <reg51.h>
sbit LED = P1^0;
void InitUART() {
TMOD = 0x20; // 设置定时器1为模式2,8位自动重载计数器
TH1 = 0xFD; // 设置波特率为9600
SCON = 0x50; // 设置串口为工作在模式1
TR1 = 1; // 启动定时器1
}
void SendByte(unsigned char dat) {
SBUF = dat; // 将数据写入串口发送缓冲区
while(!TI); // 等待发送完成
TI = 0; // 清零发送完成标志位
}
void main() {
unsigned char ch;
InitUART();
while(1) {
if(RI) { // 判断是否有数据接收
ch = SBUF; // 读取接收到的数据
RI = 0; // 清零接收标志位
if(ch == '1') {
LED = 1; // 点亮LED
SendByte('L'); // 发送数据确认
}
else if(ch == '0') {
LED = 0; // 熄灭LED
SendByte('H'); // 发送数据确认
}
}
}
}
```
该程序实现了通过串口接收控制命令来控制LED的亮灭,当接收到字符‘1’时,点亮LED;当接收到字符‘0’时,熄灭LED。程序中使用了定时器1来实现波特率的设置,同时使用了中断标志位RI和TI来判断是否有数据接收和发送完成。