请用C语言编写程序,在C51单片机上实现以下功能,在一个程序中完成以下功能中的三种花色,亮灯跑马灯,暗灯跑马灯,亮灯乒乓灯,暗灯跑马灯(包括上移下移),一隔一点亮,二隔二点亮,四个灯交替点亮。
时间: 2023-10-10 21:14:01 浏览: 100
以下是使用 C 语言编写的程序,可以在 C51 单片机上实现上述功能。假设使用 P0 端口控制灯的亮灭。
```c
#include <reg52.h> // 引入 8051 头文件
#define LED1 P0_0
#define LED2 P0_1
#define LED3 P0_2
void delay(unsigned int t) { // 自定义延时函数
unsigned int i;
while(t--) {
for(i = 0; i < 125; i++);
}
}
void main() {
while(1) {
// 亮灯跑马灯
LED1 = 1;
delay(100);
LED1 = 0;
LED2 = 1;
delay(100);
LED2 = 0;
LED3 = 1;
delay(100);
LED3 = 0;
// 暗灯跑马灯
LED1 = 0;
delay(100);
LED2 = 1;
LED1 = 1;
delay(100);
LED3 = 1;
LED2 = 0;
delay(100);
LED1 = 0;
LED3 = 0;
delay(100);
// 亮灯乒乓灯
LED1 = 1;
delay(200);
LED2 = 1;
delay(200);
LED1 = 0;
delay(200);
LED2 = 0;
delay(200);
// 暗灯跑马灯(上移下移)
LED1 = 0;
delay(100);
LED3 = 0;
LED2 = 1;
delay(100);
LED1 = 1;
LED2 = 0;
delay(100);
LED2 = 1;
LED3 = 0;
delay(100);
// 一隔一点亮
LED1 = 1;
delay(100);
LED1 = 0;
delay(100);
LED2 = 1;
delay(100);
LED2 = 0;
delay(100);
LED3 = 1;
delay(100);
LED3 = 0;
delay(100);
// 二隔二点亮
LED1 = 1;
delay(200);
LED1 = 0;
delay(200);
LED2 = 1;
delay(200);
LED2 = 0;
delay(200);
LED3 = 1;
delay(200);
LED3 = 0;
delay(200);
// 四个灯交替点亮
LED1 = 1;
LED2 = 0;
LED3 = 0;
delay(100);
LED1 = 0;
LED2 = 1;
LED3 = 0;
delay(100);
LED1 = 0;
LED2 = 0;
LED3 = 1;
delay(100);
LED1 = 1;
LED2 = 1;
LED3 = 0;
delay(100);
LED1 = 1;
LED2 = 0;
LED3 = 1;
delay(100);
LED1 = 0;
LED2 = 1;
LED3 = 1;
delay(100);
LED1 = 1;
LED2 = 1;
LED3 = 1;
delay(100);
}
}
```
阅读全文