zigbee呼吸灯 From zigbee菜鸟笔记(八)

一.呼吸灯概念

有问题发送邮件至468078841@qq.com
呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。其广泛应用于手机之上,并成为各大品牌新款手机的卖点之一,起到一个通知提醒的作用,在各个单片机均是使用定时器产生PWM信号来达到呼吸灯的效果。

二.呼吸灯原理

想要了解呼吸灯的原理,就必须要理解占空比的概念,占空比,是指在一个周期内,灯亮或者灭占一个周期的时间。

当灯在亮灭交替的时候,如果一亮一灭的时间周期较长,那我我们会看见灯在闪烁,如果灯亮灭的周长变化在人眼不可辨识的状态下并且亮灭占比一样都为百分之五十,那么我们会觉得LED灯光变暗我们叫这个为light0,如果还是同样的周期,灯亮的时间为百分之七十五比灭的时间为百分之二十五位light1,那么我们可以看到light1的亮度明显大于light0,如果我们将灭的光占比位百分之七十五,亮的占比为百分之二十,亮度为light2,那么依次亮度为 light1>light0>light2.

三.delay函数实现呼吸灯

#include <ioCC2530.h>
#define uint  unsigned int
#define uchar unsigned char 


#define D4 P1_0   //宏  定义引脚为端口 方便记忆
#define D2 P1_1  
#define D3 P1_2  


void Delay(unsigned int t);   
void LED_INIT(void);  //LED初始化函数	




void Delay(unsigned int ms)
{
  while(ms--);
}


void LED_INIT(void)   //LED初始化函数
{ 
  P1SEL &= ~0x07;    // P1SEL  &= ~(0000 0111)P1SEL  &= (1111 1000)
  P1DIR |= 0x07;
  P1 = 0x07;
}


void main (void)
{
  uint pwm_CYCLE=600,pwm_LOW=0;//定义周期
  LED_INIT();
  while (1)         
  {
    //1 是灭
    for(pwm_LOW=1;pwm_LOW<pwm_CYCLE;pwm_LOW++)
    {
      //PWM_LOW表示低
      //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
      D2=0;
      D3=0;
      D4=0;
      Delay(pwm_LOW);//亮的时间逐渐增加
      D2=1;
      D3=1;
      D4=1;
      Delay(pwm_CYCLE-pwm_LOW);//灭的时间逐渐减小
    }
    //整体 由灭到亮 
    
    for(pwm_LOW=pwm_CYCLE-1;pwm_LOW>0;pwm_LOW--)
    {
      
      D2=0;
      D3=0;
      D4=0;
      
      Delay(pwm_LOW);//逐渐变小 这个是亮的时间
      D2=1;
      D3=1;
      D4=1;
      
      Delay(pwm_CYCLE-pwm_LOW); //逐渐变大这个是暗的过程
      //由亮到灭
    }
    
  }
}


以前写过定时器的PWM因为代码给删了 现在手里没有设备,等开学再补上

zigbee菜鸟笔记(九)BasciRF简单无线点对点操作

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值