51单片机输出8个两秒为一个周期频率的呼吸灯,C代码
时间: 2024-02-06 12:10:12 浏览: 27
```c
#include <reg51.h>
// 定义LED灯的IO口
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
void main()
{
while(1)
{
for(int i=0;i<255;i++) // 呼吸灯自增
{
LED1 = i>127 ? 1 : 0;
LED2 = i>191 ? 1 : 0;
LED3 = i>223 ? 1 : 0;
LED4 = i>239 ? 1 : 0;
LED5 = i>247 ? 1 : 0;
LED6 = i>251 ? 1 : 0;
LED7 = i>253 ? 1 : 0;
LED8 = i>254 ? 1 : 0;
delay(20); // 延时20ms
}
for(int i=255;i>=0;i--) // 呼吸灯自减
{
LED1 = i>127 ? 1 : 0;
LED2 = i>191 ? 1 : 0;
LED3 = i>223 ? 1 : 0;
LED4 = i>239 ? 1 : 0;
LED5 = i>247 ? 1 : 0;
LED6 = i>251 ? 1 : 0;
LED7 = i>253 ? 1 : 0;
LED8 = i>254 ? 1 : 0;
delay(20); // 延时20ms
}
}
}
```
该代码使用了 8 个 IO 口控制 8 个 LED 灯,通过改变呼吸灯的自增和自减来实现灯光的渐变效果。周期为 2 秒,每个周期内分为自增和自减两段,每一段都需要延时 20ms,这样每个呼吸灯循环的周期就是 2s。