基于51单片机实现呼吸灯

呼吸灯就是使发光二极管先渐渐变亮再渐渐变暗,如此循环就像呼吸一样。
在这里插入图片描述

占空比是指周期性信号中高电平信号的持续时间与周期的比例,占空比是指脉冲信号中高电平信号的占据时间与一个完整周期时间的比值,占空比通常以百分比的形式表示,被广泛应用于控制电路和电源电路中。

比如周期是20ms,交替10ms亮10ms灭,我们看到的亮度还是50%(即占空比为10/20=50%)

下面展示 实验代码


#include <REGX51.H>  // 引入51单片机头文件
#define uchar unsigned char  // 定义无符号字符型变量
#define uint unsigned int  // 定义无符号整型变量
void Delay(unsigned int t)  // 延时函数	
{	
unsigned int count =1*t;  // 根据传入的参数t计算延时的次数	
while(count--);  // 循环执行count次,实现延时	
}void main()  // 主函数	
{	unsigned char Time;  // 定义一个无符号字符型变量Time	
while(1)  // 无限循环	
{	
for(Time=0;Time<200;Time++)  // 循环200次,每次Time自增1
	{			
	P2=0X00;  // 将P2口的值设置为0x00,即全部关闭LED灯			
	Delay(Time);  // 调用延时函数,延时的时间为Time			
	P2=0Xff;  // 将P2口的值设置为0xff,即全部打开LED灯			
	Delay(200-Time);  // 调用延时函数,延时的时间为200-Time		
	}		
	for(Time=200;Time>0;Time--)  //环200次,每次Time自减1		
	{						
	P2=0X00;  // 将P2口的值设置为0x00,即全部关闭LED灯				
	Delay(Time);  // 调用延时函数,延时的时间为Time				
	P2=0Xff;  // 将P2口的值设置为0xff,即全部打开LED灯				
	Delay(200-Time);  // 调用延时函数,延时的时间为200-Time		
	}	
  }	
}	

在这里插入图片描述
在这个程序中,LED 灯的亮度变化是通过控制每次循环中的延时时间来实现的。在第一个 for 循环中,延时时间从0逐渐增加到200,然后在第二个 for 循环中又逐渐减小回到0。这样的变化过程给人一种灯光逐渐变亮再逐渐变暗的效果,类似于呼吸的过程。
虽然这个程序没有真正意义上的使用 PWM(脉冲宽度调制)技术来精确控制 LED 的亮度,但通过简单地控制延时时间和全灯开关,也实现了一种类似于呼吸灯的效果。这种简化版的呼吸灯思想在资源有限、对精度要求不高的场合仍然具有一定的实用性。
在这里插入图片描述

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值