MSP430G2553测试程序(呼吸灯)

发布者:好的哎最新更新时间:2015-08-17 来源: eefocus关键字:MSP430G2553  测试程序  呼吸灯 手机看文章 扫描二维码
随时随地手机看文章
//******************************************************************************

//修改者http://jiwm.blog.163.com  
//MSP430G2553 呼吸灯演示程序 - 使用Timer_A,Up Mode, DCO SMCLK
//
//  介绍: 该程序利用TIMER A 的 UP模式 在P1.6脚产生PWM输出
//  将CCR0设置为1500来定义PWM的周期,利用循环不断改变CCR1的值,
//  实现利用改变PWM的占空比来改变LED亮度.
//  ACLK = na, SMCLK = MCLK = TACLK = default DCO
//
//               MSP430G2553
//            -----------------
//        /||              XIN|-
//         | |                 |
//         --|RST          XOUT|-
//           |                 |
//           |         P1.6/TA1|--> CCR1 - PWM
//
//  使用 MSP430 LaunchPad , MSP430G2553芯片
//  在IAR Embedded Workbench for MSP430 5.40下编译测试通过
//******************************************************************************

#include "msp430g2553.h"


// *************************************************************
// 延时函数,对于1M主频,约延时1ms
// *************************************************************
void delay_1ms(void)
  {
    unsigned int k;
    for (k=0;k<195;k++);
  }

// *************************************************************
// 延时函数,延时n*ms
// *************************************************************
void delay_nms(unsigned int n)
  {
    unsigned int j;
    for (j=0;j
    {
      delay_1ms();
    }
  }

// *************************************************************
// 主程序
// *************************************************************
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的占空比
    //由于只有1个定时器,编程有些你困难,故仍引入delay函数
   
    for(i=0;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增强效果
  }
}

关键字:MSP430G2553  测试程序  呼吸灯 引用地址:MSP430G2553测试程序(呼吸灯)

上一篇:MSP430G2553测试程序(状态机检测按键)
下一篇:MSP430G2553测试程序(温度检测)

推荐阅读最新更新时间:2024-03-16 14:28

MSP430G2553 输出ACLK和SMCLK
#include io430.h int main( void ) { int i; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= P0 + P4; //设置P1.0 1.4为输出 P1SEL |= P0 + P4; //设置P1.0输出ACLK,P1.4输出SMCLK while(1); return 0; }
[单片机]
MSP430G2553软件实现IIC
程序框图 单片机IIC控制流程框图 代码实现 IIC实现代码(前面的宏定义适用于MSP430) #define uchar unsigned char #define uint unsigned int //=====================================延时函数================================= #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((
[单片机]
<font color='red'>MSP430G2553</font>软件实现IIC
总结的MSP430G2553点亮1602例程
作为小白,总结了一些例程,希望对新手有用 main.c主程序 unsigned char *s1= welcome! ;这句话显示有警告,不知道是什么问题,不过也可以执行。 void main(void) { uchar i; WDTCTL=WDT_ADLY_250; LcdReset(); Dispstr(04,0,s1); LocateXY(0,9); LcdWriteCommand(0x07,1); //0x07表示n=1,s=1整屏左移。 for(i=12;i 0;i--) { LcdWriteData(0x20); IFG1 &=~ WDTIFG; while(!(IFG1 & WDTIFG)); IFG1 &
[单片机]
51单片机PWM-呼吸灯源程序
/****************************************************************** * @file : main.c * @xu ran * @date : 2014年5月23日20:55:19 - 2014年5月23日22:32:12 * @version : V2.0 * @brief : PWM脉冲宽度调制技术 实现呼吸灯 **************************************************************** * @attention * 实验平台 : 51hei开发板 * 单片机 :
[单片机]
MSP430G2553 WDT的看门狗模式例子
#include io430.h int main( void ) { int i; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0; P1OUT &= ~BIT0; //暗 for(i=0;i 16000;i++); P1OUT |= BIT0; //亮 WDTCTL = WDT_ARST_1000; //启动看门狗为1000ms定时 while(1) { for(i=0;i 1000;i++); //主函数任务
[单片机]
基于s3c2410开发板的UART测试程序
如下程序实现的是开发板从PC端口接受一个字符,并把该字符加1后发送会PC端口。(在本开发板测试成功)对于不同的主频要设置好UBRDIV0的值,在技术文档中有这个值的计算公式。 #define ULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control #define UCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control #define UFCON0 (*(volatile unsigned *)0x50000008) //UART 0 FIFO control #define UMCON0
[单片机]
MSP430G2553(一)IO外部中断说明
这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。 在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。 所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义 在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮 1.按键的中断配置 要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性, P1DIR &= ~BIT3;//设置P1.
[单片机]
51单片机PWM-呼吸灯程序
程序是在51hei单片机开发板上面做的,灯接在P0^0上,程序可以通用,到你自己的开发板或者是自己搭的电路也行. /** ****************************************************************************** *file : main.c *author : xr *date : 2014年4月15日17:38:07 - 2014年4月15日 18:47:29 *version : V1.2.3 *brief : PWM应用-控制小灯的亮度-实现传说中的呼吸灯效果 单片机STC89C52RC MCU 晶振 11.0592MHZ ****************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved