• 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    七彩LED漸變程序源碼-51單片機

    作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月12日   【字體:
    /******************************* 
    程序名稱:七彩LED漸變程序 
    編寫者:ZH YU 
    MCU:51/2051 
    晶振:12MHz 
    /*********************************/ 
    #include <AT892051.H>
     
     
    sbit g1=P1^6;   //綠色 
    sbit r1=P1^7;   //紅 
    sbit b1=P1^5;   //蘭 
    sbit key1=P3^3;   
     
    /*********************************/ 
     unsigned char i;
     unsigned char mode;
    /*********************************/ 
    void delay(unsigned int k)
    {
    unsigned int i,j;
    for(i=0;i<k;i++){
    for(j=0;j<121;j++)
    {;}}
    }
    /*********************************/ 
    void interint1() interrupt 2 //using **
          //外部中斷1處理      
    {     
     EA=0;
     
     if(key1==0)
     {
     delay(20);
      key1=1;
     if(key1==0)
     {
     mode++;
     if(mode==4)mode=0;
     }
     while(key1==0);
     }
     
     key1=1;     
     EA=1;     
    }
    /*********************************/ 
    timer(unsigned char t) 
    {unsigned char b; 
       for(b=0;b<t;b++) 
       {; } 
     
    /*********************************/ 
    ledout(unsigned char g,r,b) 
    {unsigned char a; 
      for(a=0;a<10;a++) 
    {if(g!=0) 
        {g1=1;timer(g);g1=0;} 
      if(r!=0) 
        {r1=1;timer(r);r1=0;} 
      if(b!=0) 
        {b1=1;timer(b);b1=0;} 
      } 
    /*********************************/ 
     
    /*********************************/ 
    main() 
    {
     
    unsigned char g,r,b; 
    r1=0;
    g1=0;
    b1=0; 
    EA=1;
    EX1=1;
    delay(1);
    while(1)
    {
     
    if(mode==0)
    {
     {if(g!=0&&b==0) 
        {g--;r++;} 
       if(r!=0&&g==0) 
        {r--;b++;} 
       if(b!=0&&r==0) 
        {b--;g++;} 
       if(g+r+b!=100) 
        {g=100;r=0;b=0;} 
       ledout(g,r,b); 
       } 
       }
     
    if(mode==1)
    {
    i++;
    if(i==7)i=0;
    switch(i)
    {
    case 0 : r1=1;g1=0;b1=0;delay(100); r1=0;g1=0;b1=0; delay(100); break;
    case 1 : r1=0;g1=1;b1=0;delay(100);     r1=0;g1=0;b1=0; delay(100); break;
    case 2 : r1=0;g1=0;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
    case 3 : r1=1;g1=1;b1=0;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
    case 4 : r1=1;g1=0;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
    case 5 : r1=0;g1=1;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
    case 6 : r1=1;g1=1;b1=1;delay(100); r1=0;g1=0;b1=0;  delay(100); break;
    default : break;
    }
    }
     
     
    if(mode==2)
    {
    i++;
    if(i==7)i=0;
    switch(i)
    {
    case 0 : r1=1;g1=0;b1=0;delay(300); r1=0;g1=0;b1=0; delay(300); break;
    case 1 : r1=0;g1=1;b1=0;delay(300);     r1=0;g1=0;b1=0; delay(300); break;
    case 2 : r1=0;g1=0;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
    case 3 : r1=1;g1=1;b1=0;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
    case 4 : r1=1;g1=0;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
    case 5 : r1=0;g1=1;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
    case 6 : r1=1;g1=1;b1=1;delay(300); r1=0;g1=0;b1=0;  delay(300); break;
    default : break;
    }
    }
     
    if(mode==3)
    {
    i++;
    if(i==7)i=0;
    switch(i)
    {
    case 0 : r1=1;g1=0;b1=0;delay(300); break;
    case 1 : r1=0;g1=1;b1=0;delay(300); break;
    case 2 : r1=0;g1=0;b1=1;delay(300); break;
    case 3 : r1=1;g1=1;b1=0;delay(300); break;
    case 4 : r1=1;g1=0;b1=1;delay(300); break;
    case 5 : r1=0;g1=1;b1=1;delay(300); break;
    case 6 : r1=1;g1=1;b1=1;delay(300); break;
    default : break;
    }
    }
     
    }
    }
     
    關閉窗口

    相關文章

    亚洲一区二区制服在线|在绩专区欧美自拍日韩|青春娱乐网97超碰人人射|在线观看国产网址你懂的