用数组的方法写一个流水灯程序
时间: 2023-09-14 10:07:11 浏览: 322
好的,以下是使用数组的方法写的一个流水灯程序:
```c
#include <reg51.h>
void main()
{
unsigned char led[16] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
// 16个LED灯对应的二进制数值
unsigned int i, j;
while (1)
{
for (i = 0; i < 16; i++)
{
P1 = led[i]; // 控制16个LED灯循环亮起
for (j = 0; j < 50000; j++);
}
}
}
```
上述程序中,我们使用了一个长度为16的数组 `led`,存储了16个LED灯对应的二进制数值。然后在程序中循环遍历这个数组,依次控制16个LED灯循环亮起。程序中的延时时间可以根据需要进行调整。
实际运行效果与前面的程序是相同的,只是把每个LED灯的二进制数值存储到了数组中,方便程序的编写和维护。
相关问题
用C语言写一个流水灯程序
好的,下面是一个简单的流水灯程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int i, j;
// 设置流水灯的数量
int num = 8;
// 设置流水灯的循环次数
int count = 10;
// 定义流水灯数组
int lights[num];
// 初始化流水灯数组
for (i = 0; i < num; i++) {
lights[i] = 0;
}
// 循环count次
for (i = 0; i < count; i++) {
// 打印当前流水灯状态
for (j = 0; j < num; j++) {
if (lights[j] == 0) {
printf(".");
} else {
printf("*");
}
}
printf("\n");
// 移动流水灯
for (j = num - 1; j > 0; j--) {
lights[j] = lights[j - 1];
}
lights[0] = 1;
// 等待一段时间
usleep(500000);
}
return 0;
}
```
这个程序使用了一个整型数组来存储流水灯的状态,然后循环打印流水灯的状态,移动流水灯,并且等待一段时间。你可以在程序中修改流水灯的数量和循环次数来实现不同的效果。
你好能用c写一个流水灯程序吗
### 回答1:
当然可以,以下是一个简单的流水灯程序的C代码:
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define LED_PIN_1 0
#define LED_PIN_2 1
#define LED_PIN_3 2
int main(void) {
wiringPiSetup();
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
while (1) {
digitalWrite(LED_PIN_1, HIGH);
delay(500);
digitalWrite(LED_PIN_1, LOW);
digitalWrite(LED_PIN_2, HIGH);
delay(500);
digitalWrite(LED_PIN_2, LOW);
digitalWrite(LED_PIN_3, HIGH);
delay(500);
digitalWrite(LED_PIN_3, LOW);
}
return 0;
}
### 回答2:
当然可以用C语言来编写一个流水灯程序。流水灯是一种常见的LED灯光效果,通过不断地依次点亮和熄灭LED灯,形成一个类似水流般的效果。
以下是一个用C语言编写的简单流水灯程序示例:
```
#include <stdio.h>
#include <wiringPi.h>
// 定义使用的GPIO引脚
#define LED_PIN_1 0
#define LED_PIN_2 1
#define LED_PIN_3 2
int main(void) {
// 初始化wiringPi库
if (wiringPiSetup() == -1) {
printf("wiringPi初始化失败!\n");
return 1;
}
// 设置引脚为输出模式
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
// 无限循环控制流水灯效果
while (1) {
digitalWrite(LED_PIN_1, HIGH); // 点亮LED1
digitalWrite(LED_PIN_2, LOW); // 熄灭LED2
digitalWrite(LED_PIN_3, LOW); // 熄灭LED3
delay(500); // 延时500毫秒
digitalWrite(LED_PIN_1, LOW); // 熄灭LED1
digitalWrite(LED_PIN_2, HIGH); // 点亮LED2
digitalWrite(LED_PIN_3, LOW); // 熄灭LED3
delay(500); // 延时500毫秒
digitalWrite(LED_PIN_1, LOW); // 熄灭LED1
digitalWrite(LED_PIN_2, LOW); // 熄灭LED2
digitalWrite(LED_PIN_3, HIGH); // 点亮LED3
delay(500); // 延时500毫秒
}
return 0;
}
```
上述代码首先初始化了wiringPi库,然后设置了三个GPIO引脚为输出模式,接下来就是一个无限循环,不断地依次点亮和熄灭LED灯,形成流水灯的效果。每个LED灯点亮500毫秒后延时500毫秒再熄灭,如此循环往复。
注意,这是一个简单的示例程序,具体的引脚和延时时间可以根据实际需求进行调整。
### 回答3:
当然可以!以下是一个用C语言编写的流水灯程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define NUM_OF_LEDS 8
void delay(int milliseconds) {
Sleep(milliseconds);
}
int main() {
int leds[NUM_OF_LEDS] = {0}; // 初始化所有LED灯都为关
while (1) {
// 点亮流水灯
for (int i = 0; i < NUM_OF_LEDS; i++) {
leds[i] = 1; // 将第i个LED灯设置为开
for (int j = 0; j < NUM_OF_LEDS; j++) {
printf("%d", leds[j]); // 输出当前状态下LED灯的亮灭情况,1代表亮,0代表灭
}
printf("\n");
delay(100); // 延迟100毫秒
leds[i] = 0; // 将第i个LED灯设置为关,继续下一个循环
}
}
return 0;
}
```
在上述示例中,我们首先定义了一个名为`leds`的整型数组来表示8个LED灯的状态,0代表关,1代表开。在主函数的无限循环中,利用两个嵌套的循环来实现流水灯的效果。外层的循环表示流水灯的移动,内层的循环用来循环输出LED灯的状态。通过不断改变LED灯的状态,结合延迟函数来控制流水灯的变化速度,最终实现流水灯的效果。
注意:在上述示例中,我们使用了`windows.h`头文件中的`Sleep`函数来实现延迟功能,因此该程序在Windows平台上运行。如果你在其他平台上编译运行,可以根据需要选择合适的延迟函数进行替换。