51单片机基于C语言I/O口模拟PWM输出实现呼吸灯功能

本文介绍了新手如何使用C语言在51单片机中通过定时器中断和IO口模拟PWM,实现呼吸灯功能。作者首先阐述了实现思路,然后给出了实现呼吸灯从暗到亮渐变的代码,并承诺后续更新循环呼吸灯功能。
摘要由CSDN通过智能技术生成

欢迎各位看官

你好!本人新手,初次尝试搞代码以及写博客,有写的不对的或者有更好的建议,可以在留言处评论,谢谢哦!

先解释一下自己的思路

本人把呼吸灯函数放在了定时器中断中,通过函数标志位是否被置1来控制呼吸灯功能是否打开,通过IO口模拟PWM方波来控制LED灯的亮度

case Type_Breathing_LED:
						PWM_Flag=1;
						break;

为了简单明了,直接在主函数的状态机中把呼吸灯功能标志位置1,即呼吸灯功能一直在实现。

上代码

#define	LED_Light 2	//固定LED灯的亮度
#define PWM_Cycle 100//PWM周期
#define Shine_Speed	100//改变占空比
bit PWM_Flag;//呼吸灯功能打开标志位
static unsigned char PWM_count,LED_count;//PWM_count和LED_count凑成PWM的周期,如果要改变占空比,则改变LED_count

	if(PWM_Flag==1)		
	{
   
		LED_count=LED_Light;	//当LED_count给定一个值,呼吸灯功能关闭,此语句用于固定灯的亮度;
								//若想实现呼吸灯,请把此语句屏蔽,如果想调节灯的亮度,可以在宏定义修改LED_Light的值,推荐值的数值范围为PWM_Cycle的1~1/20倍;
		PWM_count++;	//用于高低电平输出时间					
		if(PWM_count<LED_count)	
		{
   
			OFF_A
  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值