rgb灯循环7种颜色的呼吸灯程序用51单片机写
时间: 2023-09-18 20:13:01 浏览: 247
下面是一个简单的基于51单片机的RGB呼吸灯程序,实现了7种颜色的循环:
```c
#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit ledR=P0^0;
sbit ledG=P0^1;
sbit ledB=P0^2;
void delay(uint t) //延迟函数,单位为ms
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<124;j++);
}
void rgb_breath() //RGB呼吸灯函数
{
uchar i;
uint j;
for(i=0;i<7;i++) //循环7种颜色
{
for(j=0;j<=5000;j++) //增加亮度
{
ledR=i*36;
delay(1);
}
for(j=0;j<=5000;j++) //减小亮度
{
ledR=252-i*36;
delay(1);
}
for(j=0;j<=5000;j++) //增加亮度
{
ledG=i*36;
delay(1);
}
for(j=0;j<=5000;j++) //减小亮度
{
ledG=252-i*36;
delay(1);
}
for(j=0;j<=5000;j++) //增加亮度
{
ledB=i*36;
delay(1);
}
for(j=0;j<=5000;j++) //减小亮度
{
ledB=252-i*36;
delay(1);
}
}
}
void main()
{
while(1)
{
rgb_breath(); //调用RGB呼吸灯函数
}
}
```
需要注意的是,这里使用的是P0口控制LED灯的亮度,因此需要使用PWM信号调节亮度。本程序中使用了简单的延时函数实现PWM信号,因此亮度调节可能不够精细,可以根据实际需求进行改进。
阅读全文