51单片机 按键控制呼吸灯
时间: 2023-09-18 22:13:27 浏览: 446
以下是用51单片机按键控制呼吸灯的代码:
```
#include <reg51.h>
// 定义IO口
sbit LED = P0^0;
sbit KEY = P3^2;
// 定义呼吸灯的亮度
int duty = 0;
// 延时函数
void delay(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=0; j<125; j++);
}
}
// 呼吸灯控制函数
void breathingLED()
{
int i;
// 呼吸灯的亮度从0逐渐增加到255
for(i=0; i<255; i++)
{
// 控制亮度的占空比
if(i<duty)
{
LED = 1;
}
else
{
LED = 0;
}
delay(5);
}
// 呼吸灯的亮度从255逐渐减小到0
for(i=255; i>=0; i--)
{
// 控制亮度的占空比
if(i<duty)
{
LED = 1;
}
else
{
LED = 0;
}
delay(5);
}
}
// 主函数
void main()
{
while(1)
{
// 检测按键是否按下
if(KEY == 0)
{
// 延时一段时间
delay(100);
// 检测按键是否松开
if(KEY == 0)
{
// 呼吸灯的亮度每次增加10
duty += 10;
if(duty > 255)
{
duty = 0;
}
}
// 等待按键松开
while(KEY == 0);
}
// 控制呼吸灯
breathingLED();
}
}
```
这个程序使用P0口控制LED灯,在P3.2口检测按键是否按下。当按键按下时,呼吸灯的亮度将每次增加10,直到最大亮度255,然后回到最小亮度0。程序使用了一个breathingLED()函数来控制呼吸灯的亮度。在函数中,使用for循环逐渐增加亮度,然后逐渐减小亮度,实现呼吸灯的效果。
阅读全文