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

                      51單片機LED流星雨拖尾燈程序+視頻

                      作者:佚名   來源:本站原創   點擊數:x  更新時間:2013年10月14日   【字體:

                      流星雨就是幾個亮度不同的燈一起滾動,亮度依次更暗,像流星雨拖著尾巴。
                      控制全彩(三色)led也可以用同樣的概念編程。
                      用的是51的單片機pwm實現的拖尾效果


                      程序的解說以及視頻演示請打開http://www.z8768.com/bbs/dpj-22524-1.html 里面有詳細的說明.
                      程序源碼:
                      #include<reg52.h>
                      #define uint unsigned int
                      #define uchar unsigned char

                      uchar abit=16; //流到哪位
                      uchar atimer0_n;
                      uchar code abit8[9]={1,2,4,8,16,32,64,128,0};
                      uchar nn;
                      char a,b,c,d;

                      main()
                      { TMOD = 0x11; 
                       TL0 = 0x00;  //2.5ms
                       TH0 = 0xF7; 
                       TF0 = 0;  
                       TR0 = 1; 
                       EA=1;ET0=1;
                       while(1)
                       {
                        a=abit;
                        if(a>7||a<0)
                        a=8;
                        b=abit-1;
                        if(b>7||b<0)
                         b=8;
                        c=abit-2;
                        if(c>7||c<0)
                         c=8;
                         d=abit-3;
                        if(d>7||d<0)
                         d=8;
                       
                        
                       atimer0_n++;
                       if(atimer0_n==255)
                       atimer0_n=0;
                       if(atimer0_n<5)
                        P1=0xff-abit8[a];
                       if(atimer0_n<40)
                        P1=0xff-abit8[b];
                       if(atimer0_n<150)
                        P1=0xff-abit8[c]; 
                       if(atimer0_n<255)
                        P1=0xff-abit8[d]; 
                       }
                      }

                      atimer0 () interrupt 1

                       TL0 = 0x00;  //50ms
                       TH0 = 0x4C;
                       nn++;
                       if(nn==2)
                       {
                        nn=0;abit--;
                         if(abit==0)
                         abit=16;
                       }

                        
                      }

                      發表評論】【告訴好友】【收藏此文】【關閉窗口

                      文章評論

                      相關文章

                      富二代国产视频