51单片机串行通信甲机4个按钮,乙机8个二极管灯,甲机按钮1控制乙机8个灯全部点亮,甲机按钮2控制乙机8个灯流水点亮,甲机按钮3控制乙机8个灯4个亮4个灭,甲机按钮4控制乙机8个灯全部停止
时间: 2023-10-01 15:07:30 浏览: 163
这是一个较为简单的串口通信控制程序,需要使用到串口通信的相关知识和51单片机的IO口控制。下面是一个简单的代码实现,仅供参考:
甲机代码:
```c
#include <reg51.h> // 51单片机头文件
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 125; j++);
}
void main()
{
SCON = 0x50; // 串口工作方式1
TMOD = 0x20; // 定时器1工作方式2
TH1 = 0xfd; // 波特率为9600
TL1 = 0xfd;
TR1 = 1; // 启动定时器1
ES = 1; // 允许串口中断
EA = 1; // 开启总中断
while(1); // 循环等待
}
void ser() interrupt 4 using 1 // 串口中断服务函数
{
unsigned char c = SBUF; // 读取串口数据
switch (c)
{
case '1': // 控制乙机8个灯全部点亮
P2 = 0xff;
break;
case '2': // 控制乙机8个灯流水点亮
while (1)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
P2 = ~(1 << i);
delay(500);
}
}
break;
case '3': // 控制乙机8个灯4个亮4个灭
P2 = 0xf0;
break;
case '4': // 控制乙机8个灯全部停止
P2 = 0x00;
break;
default: // 其他情况不做处理
break;
}
}
```
乙机代码:
```c
#include <reg51.h> // 51单片机头文件
void main()
{
P2 = 0x00; // 初始化P2口为低电平
while(1); // 循环等待
}
```
上述代码仅供参考,具体实现可以根据实际需求进行调整。在使用时需要注意电路的连接和串口通信的设置。
阅读全文