msp430g2553 LED 实例操作

in 单片机 with 1 comment

利用灌电流法和数组查表法

实现

  1. 先奇数亮再偶数亮,循环5次,时间间隔250ms;
  2. 一个灯上下(从1到8再8到1)循环2次,时间间隔150ms;
  3. 两个灯分别从两边往中间流动,再从中间往两边流动,循环3次,时间间隔300ms;
  4. 8个灯全部闪烁4次,时间间隔600ms;
  5. 最后,关闭发光管。上述过程实现三遍之后,程序停止。
unsigned char
Led_Date2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char
Led_Date1[]={0xaa,0x55};
unsigned char
Led_Date3[]={0x7e,0xbd,0xdb,0xe7};
unsigned char
Led_Date4[]={0x00,0xff};
main(void)
{
 unsigned int i,j,k;
 WDTCTL=WDTPW + WDTHOLD;
 P1DIR=0XFF;
 P1OUT=0XFF;

     for(k=0;k<3;k++)
     {
             for(i=0;i<5;i++)
             for(j=0;j<2;j++)
     {
             P1OUT=Led_Date1[j];
             _delay_cycles(250000);

     }
             for(i=0;i<2;i++)
             {
                 for(j=0;j<8;j++)
                 {
             P1OUT=Led_Date2[j];
             _delay_cycles(150000);
                 }

             for(j=0;j<8;j++)
             {
             P1OUT=Led_Date2[7-j];
             _delay_cycles(150000);
             }
             }

             for(i=0;i<3;i++)
             {
                 for(j=0;j<4;j++)
             {
                 P1OUT=Led_Date3[j];
                _delay_cycles(300000);
             }
                 for(j=0;j<4;j++)
                 {
                P1OUT=Led_Date3[3-j];
                _delay_cycles(300000);
                 }
                 }

             for(i=0;i<4;i++)
                 for(j=0;j<2;j++)
                 {
                     P1OUT=Led_Date4[j];
                     _delay_cycles(600000);

                 }
              P1OUT=0XFF;
     }
}

led.jpg

Responses
  1. Victor

    厉害呀

    Reply