MSP4302553呼吸灯(附代码)

导读:本篇文章讲解 MSP4302553呼吸灯(附代码),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

【MSP430呼吸灯】

msp4302553实现呼吸灯,在一个周期内,灯的亮度从暗到明再到暗,此即一个周期。以下为ccs代码:

#include "msp430g2553.h"
// *************************************************************
// 延时函数,延时n*ms
// *************************************************************
void delay_nms(unsigned int n)
  {
    unsigned int j;
    for (j=0;j<n;j++)
    {
      //delay_1ms();
      _delay_cycles(400);
    }
  }

// *************************************************************
// 主程序
// *************************************************************
void main(void)
{
  unsigned const PWMPeriod = 1500; //设置PWMPeriod参数
  volatile unsigned int i;        //变量
  WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗
  BCSCTL1= CALBC1_1MHZ;        //1M内部时钟,其他也可以
  DCOCTL = CALDCO_1MHZ;
  P1DIR |=BIT6;              // 设置 P1.6为输出
  P1SEL |=BIT6;              // 设置 P1.6为TA0.1输出
  TACCR0 = PWMPeriod;           // 设置PWM 周期
  TACCTL1 = OUTMOD_7;           // 设置PWM 输出模式为:7 - PWM复位/置位模式,
                              // 即输出电平在TAR的值等于CCR1时复位为0,当TAR的值等于CCR0时置位为1,改变CCR1,从而产生PWM。其实模式2也可以
   TACTL =  TASSEL_2 +MC_1;    // 设置TIMERA的时钟源为SMCLK, 计数模式为up,到CCR0再自动从0开始计数
  while(1)
  {
   CCR1=0;//确保开始是暗的
    //渐亮过程:不断设置CCR1的值,使翻转的时间变长,改变PWM的占空比

    for(i=0;i<PWMPeriod;i++)     {
      CCR1=i;
      delay_nms(4-(i/500));  //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
                          //在暗的时候延长delay时间,可增强效果
     }
    //渐暗过程:不断设置CCR1的值,使翻转的时间变短,改变PWM的占空比
    for(i=PWMPeriod;i>0;i-=1)
    {
      CCR1=i;
      delay_nms(4-(i/500));           //占空比变化的延时,调整延迟时间可改变呼吸灯变暗的速度
                                    //在暗的时候延长delay时间,可增强效果
    }
     CCR1=0;  //确保灯暗
//     delay_nms(600); //暗0.6S增强效果
  }
}

msp4302553实现呼吸灯

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73750.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!