流水灯c语言代码51单片机流水灯代码
时间: 2023-11-11 20:03:54 浏览: 41
以下是51单片机流水灯的C语言代码:
```c
#include <reg51.h>
void delay(unsigned int xms) // 延时函数
{
unsigned int i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
unsigned char i;
while (1)
{
for (i = 0x01; i <= 0x80; i <<= 1) // 循环左移
{
P1 = i; // 输出到P1口
delay(500); // 延时500ms
}
}
}
```
相关问题
51单片机流水灯c语言代码
以下是51单片机流水灯的两种C语言代码实现:
1. 通过左移右移操作符实现流水灯效果
```c
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led = P2^0; // 定义P2.0口为led
void delay(uint xms) // 延时函数
{
uint i, j;
for(i=xms; i>0; i--)
for(j=110; j>0; j--);
}
void main()
{
uchar i;
while(1)
{
led = 0xff; // 全灭
for(i=0; i<8; i++)
{
led = _crol_(led, 1); // 左移一位
delay(500); // 延时500ms
}
}
}
```
2. 通过for循环实现流水灯效果
```c
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led = P2^0; // 定义P2.0口为led
void delay(uint xms) // 延时函数
{
uint i, j;
for(i=xms; i>0; i--)
for(j=110; j>0; j--);
}
void main()
{
uchar arr[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 定义数组
uchar i, j;
while(1)
{
for(i=0; i<9; i++)
{
P2 = arr[i]; // 依次赋值
delay(500); // 延时500ms
}
}
}
```
c51单片机流水灯c语言代码
以下是c51单片机流水灯的c语言代码:
```c
#include<reg51.h>
#define LED_PORT P0 // 定义 LED 灯所在的端口
void delay(unsigned int); // 延时函数
void main(void)
{
unsigned int i;
while(1)
{
for(i=0;i<8;i++) // 循环点亮 8 盏 LED 灯
{
LED_PORT = ~(1<<i); // 按位取反,点亮 LED 灯
delay(500); // 等待一段时间
}
}
}
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
{
for(j=0;j<125;j++);
}
}
```
代码解析:
1. `LED_PORT P0` 定义了 LED 灯所在的端口为 P0 端口。
2. `delay()` 函数为延时函数,用于控制 LED 灯的闪烁速度。
3. 在 `main()` 函数中,使用 for 循环控制 8 盏 LED 灯的流水灯效果。循环中,通过 `LED_PORT = ~(1<<i)` 将第 i 盏 LED 灯点亮,再通过 `delay(500)` 函数等待一段时间,就实现了 LED 灯的流水灯效果。