java实现流水灯(附完整源码)
时间: 2023-11-09 15:06:47 浏览: 63
以下是Java实现流水灯的完整源码:
```java
public class LEDLight {
public static void main(String[] args) throws InterruptedException {
int delay = 1000; // 延迟时间,单位为毫秒
while (true) {
System.out.print("Red ");
Thread.sleep(delay);
System.out.print("Yellow ");
Thread.sleep(delay);
System.out.println("Green ");
Thread.sleep(delay);
}
}
}
```
该程序使用一个`while`循环来不断循环打印“Red”、“Yellow”和“Green”三种颜色,每个颜色之间停顿一段时间,以形成流水灯的效果。程序使用`Thread.sleep()`方法来实现延迟效果。在循环过程中,使用`System.out.print()`方法输出每个颜色,最后使用`System.out.println()`方法输出“Green”并换行。程序将一直运行,直到被手动停止。
相关问题
51单片机实现流水灯完整c语言代码
下面是一个基于51单片机的流水灯的完整C语言代码:
```c
#include <reg51.h>
#define LED P0 // 将P0端口定义为LED输出端口
sbit KEY1 = P1^0; // 定义按键1的输入端口
sbit KEY2 = P1^1; // 定义按键2的输入端口
sbit KEY3 = P1^2; // 定义按键3的输入端口
sbit KEY4 = P1^3; // 定义按键4的输入端口
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void main()
{
unsigned char flag = 0; // 定义标志位
LED = 0xfe; // 初始状态下,P0口输出11111110,即只有第一个LED亮
while(1) // 主循环
{
if(KEY1 == 0) // 按键1按下
{
delay(100); // 延时去抖动
if(KEY1 == 0) // 确认按键1按下
{
flag = 0; // 标志位清零
LED = 0xfe; // 初始状态下,P0口输出11111110,即只有第一个LED亮
}
}
if(KEY2 == 0) // 按键2按下
{
delay(100); // 延时去抖动
if(KEY2 == 0) // 确认按键2按下
{
flag = 1; // 标志位置1,表示正向流水灯
}
}
if(KEY3 == 0) // 按键3按下
{
delay(100); // 延时去抖动
if(KEY3 == 0) // 确认按键3按下
{
flag = 2; // 标志位置2,表示反向流水灯
}
}
if(KEY4 == 0) // 按键4按下
{
delay(100); // 延时去抖动
if(KEY4 == 0) // 确认按键4按下
{
flag = 3; // 标志位置3,表示所有LED同时亮
LED = 0xff; // 所有LED同时亮
}
}
switch(flag) // 根据标志位来判断流水灯的方向
{
case 0: // 初始状态下,只有第一个LED亮
break;
case 1: // 正向流水灯
LED = LED << 1; // 左移一位
if(LED == 0xff) // 如果所有LED都亮了,则从头开始
LED = 0xfe;
break;
case 2: // 反向流水灯
LED = LED >> 1; // 右移一位
if(LED == 0x7f) // 如果所有LED都亮了,则从头开始
LED = 0xfe;
break;
case 3: // 所有LED同时亮
break;
}
delay(500); // 延时一段时间,以控制LED灯的闪烁速度
}
}
```
该代码中使用了51单片机的GPIO口来控制LED的亮灭,并通过按键输入来控制流水灯的流动方向。其中,flag是一个标志位,用来记录当前流水灯的状态。根据不同的状态,通过左移、右移等操作来控制LED的亮灭情况。同时,为了控制LED灯的闪烁速度,还使用了一个延时函数。
stm32f4实现流水灯
STM32F4系列微控制器是基于ARM Cortex-M4内核的高性能嵌入式处理器,常用于各种工业控制和物联网应用中。要实现流水灯效果,你需要使用STM32F4的GPIO(General Purpose Input/Output)功能来控制LED灯,并利用定时器或中断系统来控制灯的闪烁。
以下是实现基本流水灯的步骤:
1. **硬件连接**:
- 将LED灯串联起来接到STM32的GPIO口,通常使用P0、P1、P2等GPIO作为输出。
- 为了方便控制,可以将LED灯分组,比如每8个LED为一组,每个组独立控制。
2. **初始化GPIO**:
- 设置GPIO口为推挽输出模式,确保能直接驱动LED。
- 分配定时器或DMA资源,用于周期性的改变LED状态。
3. **定时器设置**:
- 使用TIMx(如TIM2)配置定时器,设置周期(例如1秒)。
- 定义计数器,当计数达到某个值时,触发LED状态切换。
4. **状态切换**:
- 利用定时器中断或DMA完成LED状态的切换。在中断服务函数中,改变当前LED组的输出状态(亮或灭),并使下一个LED组进入点亮状态。
5. **循环更新**:
- 主程序进入无限循环,等待定时器中断,处理中断后继续执行下一次定时器周期。
6. **可选:流水灯动画**:
- 如果需要流水灯效果,可以通过改变点亮LED的速度或顺序,模拟流动的效果。
**相关问题--:**
1. STM32F4的哪些GPIO口适合连接LED灯?
2. 如何配置STM32的定时器来实现LED灯的延时操作?
3. 使用中断服务函数还是DMA来实现LED状态的切换更高效?
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pwi](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)