欢迎各位看官
你好!本人新手,初次尝试搞代码以及写博客,有写的不对的或者有更好的建议,可以在留言处评论,谢谢哦!
先解释一下自己的思路
本人把呼吸灯函数放在了定时器中断中,通过函数标志位是否被置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