这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 2队-MSP430-彩色灯转换

共3条 1/1 1 跳转至

2队-MSP430-彩色灯转换

菜鸟
2019-07-12 18:12:45     打赏

MSP430G2553芯片为主芯片的单片机。自带仿真电路,支持USB线仿真。

板载了一个RGB控制的小灯。

        RGB色彩模式是工业模式的一种颜色标准,是通过对红色、蓝色、绿色三个颜色通道的变化以及它们相互之间的的叠加来得到各式各样的颜色,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包含视力所能包含的所有颜色,是目前运用最广泛的颜色系统之一。   ------来自百度百科

对于RGB,有兴趣的可以深入了解。


通过观察可以看到RGB小灯连接在P2.1、P2.3、P2.5口上面,控制不同的IO口对应电平高低即可改变小灯颜色。可以通过按键控制颜色转换等等。此程序直接改变颜色。

123_LI.jpg


#include "io430.h"

// ********************************************************************************************** //
//可以通用
#define CPU_F ((double) 1000000.0) //晶振频率
#define delay_ms(x) __delay_cycles( (long)(CPU_F*(double)x/1000.0) )  //ms级别延时函数
#define delay_us(x) __delay_cycles( (long)(CPU_F*(double)x/1000000.0) )//us级别延时函数
#define _NOP() __no_operation()  //空指令定义 ,包含头文件<intrinsics.h>
//基本定义
#define NUM 1000  //定义LED灯的闪烁反转时间。
#define red   0
#define green 1
#define blue  2
#define white 3
// ********************************************************************************************** //
//函数体声明
void GPIO_Init(void);
void CLOCK_IN_Init(void);
void COLOUR_Set(void);

unsigned char colour;  //颜色变化变量
// ********************************************************************************************** //
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;   //关闭内部看门狗
  
  unsigned int i;  //LED指示使用
  
  CLOCK_IN_Init();
  GPIO_Init();
  while(1)
  {
    delay_ms(1);  //普通延时
    i++;
    if(i>NUM)
    {
      P1OUT ^= BIT0; i=0;  //指示程序运行
      COLOUR_Set();        //显示颜色
      colour++;if(colour>4) {colour=0;}  //控制显示的颜色
    }
  }
}
// ********************************************************************************************** //
//IO口 初始化
void GPIO_Init()
{
  P1SEL = 0X00;  //普通IO口
  P1DIR |= BIT0;
  P1OUT &= ~BIT0; //关闭LED灯
  
  P2SEL = 0X00;
  P2DIR |= BIT1;
  P2OUT &= ~BIT1;  //默认为0
  P2DIR |= BIT3;
  P2OUT &= ~BIT3;  //默认为0
  P2DIR |= BIT5;
  P2OUT &= ~BIT5;  //默认为0
}
// ********************************************************************************************** //
//内部晶振使用
void CLOCK_IN_Init()
{
  DCOCTL = DCO0 + DCO1 + DCO2;  //DCO 选择最大频率
  BCSCTL1 |= XT2OFF;     //关闭XT2 ,不使用外部高速晶振
  BCSCTL1 = RSEL0 + RSEL1 + RSEL2;
}
// ********************************************************************************************** //
//
void COLOUR_Set()
{
  switch(colour)
  {
    case red  :   //显示红色
    
      P2OUT |= BIT1;
      P2OUT &= ~BIT3;
      P2OUT &= ~BIT5;
      break;
    case green:   //显示绿色
      
      P2OUT &= ~BIT1;
      P2OUT |= BIT3;
      P2OUT &= ~BIT5;
      break;
    case blue :   //显示蓝色
      
      P2OUT &= ~BIT1;
      P2OUT &= ~BIT3;
      P2OUT |= BIT5;
      break;
    case white:   //显示白色
      
      P2OUT |= BIT1;
      P2OUT |= BIT3;
      P2OUT |= BIT5;
      break;
     default:   //关闭显示
      
      P2OUT &= ~BIT1;
      P2OUT &= ~BIT3;
      P2OUT &= ~BIT5;
      break;
  }
}
视频不会上传。。。。





关键词: MSP430     小彩灯     RGB    

助工
2019-07-12 23:27:50     打赏
2楼

谢谢楼主的用心分享


菜鸟
2019-07-12 23:33:55     打赏
3楼

不错不错


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]