rgb灯循环7种颜色的呼吸灯程序用51单片机写
时间: 2023-09-17 11:13:35 浏览: 93
下面是一个简单的51单片机程序,可以实现RGB灯循环7种颜色的呼吸灯效果:
```
#include <reg51.h> // 引入51单片机头文件
sbit led_R = P2^0; // 定义红色LED引脚为P2^0
sbit led_G = P2^1; // 定义绿色LED引脚为P2^1
sbit led_B = P2^2; // 定义蓝色LED引脚为P2^2
void delay(int t) // 延迟函数
{
int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void main()
{
while(1) // 循环执行
{
int i, j;
// 红色呼吸灯
for(i = 0; i <= 255; i++)
{
led_R = 1; // 点亮红色LED
for(j = 0; j < i; j++)
delay(1);
led_R = 0; // 熄灭红色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 绿色呼吸灯
for(i = 0; i <= 255; i++)
{
led_G = 1; // 点亮绿色LED
for(j = 0; j < i; j++)
delay(1);
led_G = 0; // 熄灭绿色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 蓝色呼吸灯
for(i = 0; i <= 255; i++)
{
led_B = 1; // 点亮蓝色LED
for(j = 0; j < i; j++)
delay(1);
led_B = 0; // 熄灭蓝色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 黄色呼吸灯
for(i = 0; i <= 255; i++)
{
led_R = 1; // 点亮红色LED
led_G = 1; // 点亮绿色LED
for(j = 0; j < i; j++)
delay(1);
led_R = 0; // 熄灭红色LED
led_G = 0; // 熄灭绿色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 紫色呼吸灯
for(i = 0; i <= 255; i++)
{
led_R = 1; // 点亮红色LED
led_B = 1; // 点亮蓝色LED
for(j = 0; j < i; j++)
delay(1);
led_R = 0; // 熄灭红色LED
led_B = 0; // 熄灭蓝色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 青色呼吸灯
for(i = 0; i <= 255; i++)
{
led_G = 1; // 点亮绿色LED
led_B = 1; // 点亮蓝色LED
for(j = 0; j < i; j++)
delay(1);
led_G = 0; // 熄灭绿色LED
led_B = 0; // 熄灭蓝色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
// 白色呼吸灯
for(i = 0; i <= 255; i++)
{
led_R = 1; // 点亮红色LED
led_G = 1; // 点亮绿色LED
led_B = 1; // 点亮蓝色LED
for(j = 0; j < i; j++)
delay(1);
led_R = 0; // 熄灭红色LED
led_G = 0; // 熄灭绿色LED
led_B = 0; // 熄灭蓝色LED
for(j = 0; j < 255-i; j++)
delay(1);
}
}
}
```
上述程序中,我们使用了 `sbit` 定义了三个LED的引脚,然后通过循环来控制LED的亮度和熄灭时间来实现呼吸灯效果。在每个颜色的呼吸灯循环结束后,就会进入下一个颜色的呼吸灯循环,以此循环7种颜色的呼吸灯效果。
阅读全文