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

                      原創作品LED流星雨燈(51單片機程序代碼)產品分享!

                      作者:佚名   來源:本站原創   點擊數:x  更新時間:2012年04月26日   【字體:
                       最近公司生產了一款流星雨燈!現把它分享給大家!
                       
                      一、圖片分享:
                       

                       二、PCB文件分享:

                       
                       

                       三、原理圖分享:

                       
                       

                       

                      四、視頻效果分享:



                         上面只做了5根燈管,如果需要增加燈管的話,只需稍微改動下 下面的程序即可.如果增長
                      連線把燈管擺成圓形或者方形效果也比較牛逼的.

                         此款流星燈直徑只有1.5公分只可以做30公分、50公分、80公分、1000公分等 。
                      這個東東主要是做裝飾用,技術支持:http://www.z8768.com/ 下面公開全部的源代碼.
                      請大家多多指教.程序代碼大家可以隨意修改,但不可用于商業用途.

                      /*流星雨程序代碼 作者:胡琴   2011-12-12
                        單片機型號:STC11F04  IO口16個!原理:
                        利用PWM來模似流星雨:將亮度等級分為8個
                      ,通過改變每一組LED的亮度來達到流星雨效果。
                      (因為流星雨是前面亮后面越來越暗,就像一條龍一樣,拖著尾巴過來),
                      完整的程序源代碼下載:http://www.z8768.com/f/ledss.rar
                      */
                      #include<reg52.h>//MCU頭文件
                      #define uchar unsigned char//字浮型宏定義
                      #define uint unsigned int//整型宏定義
                      #define shudu 3 //LED漸變速度調整
                      uchar yin0 =31;//LED變化等級調整
                      uchar yin1 =63;//LED變化等級調整
                      uchar yin2 =95;//LED變化等級調整
                      uchar yin3 =127;//LED變化等級調整
                      uchar yin4 =159;//LED變化等級調整
                      uchar yin5 =191;//LED變化等級調整
                      uchar yin6 =223;//LED變化等級調整
                      uchar yin7 =255;//LED變化等級調整
                      sbit led0=P3^5;//16個IO口
                      sbit led1=P3^6;
                      sbit led2=P3^0;
                      sbit led3=P3^1;
                      sbit led4=P3^2;
                      sbit led5=P3^3;
                      sbit led6=P3^4;
                      sbit led7=P3^7;
                      sbit led8=P1^0;
                      sbit led9=P1^1;
                      sbit led10=P1^2;
                      sbit led11=P1^7;
                      sbit led12=P1^6;
                      sbit led13=P1^5;
                      sbit led14=P1^4;
                      sbit led15=P1^3;
                      uchar d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15;//各IO口變量

                      /***************************************************/
                      /**********************延時子程序*******************/
                      /***************************************************/
                      void delay(uint z)
                      {
                       uint x,y;//局部變量定義
                       for(x=0;x<5;x++)//延時外循環
                       for(y=0;y<z;y++);//延時內循環
                      }
                      /**********************************************/
                      /**********PWM控制紅綠蘭3種燈亮滅時間**********/
                      /**********************************************/
                      void RGBpwm(uchar d0,uchar d1,uchar d2,uchar d3,uchar d4,uchar d5,uchar d6,uchar d7,uchar d8,uchar d9,uchar d10,uchar d11,uchar d12,uchar d13,uchar d14,uchar d15)//3個局部變量,些部分為帶參數函數
                      {
                       if(d0!=0)
                       {
                       led0=0;
                       delay(d0);                   
                       led0=1;//1
                       }
                       if(d1!=0)
                       {
                       led1=0;
                       delay(d1);                   
                       led1=1;//1
                       }
                       if(d2!=0)
                       {
                       led2=0;
                       delay(d2); //2                  
                       led2=1;
                       }
                       if(d3!=0)
                       {
                       led3=0;
                       delay(d3);                   
                       led3=1;//3
                       }
                       if(d4!=0)
                       {
                       led4=0;
                       delay(d4);                   
                       led4=1;//4
                       }
                       if(d5!=0)
                       {
                       led5=0;
                       delay(d5);                   
                       led5=1;//5
                       }
                       if(d6!=0)
                       {
                       led6=0;
                       delay(d6);                   
                       led6=1;//6
                       }
                       if(d7!=0)
                       {
                       led7=0;
                       delay(d7);                   
                       led7=1;//7
                       }
                       if(d8!=0)
                       {
                       led8=0;
                       delay(d8);                   
                       led8=1;//8
                       }
                       if(d9!=0)
                       {
                       led9=0;
                       delay(d9);                   
                       led9=1;//9
                       }
                       if(d10!=0)
                       {
                       led10=0;
                       delay(d10); //10                  
                       led10=1;
                       }
                       if(d11!=0)
                       {
                       led11=0;
                       delay(d11);                   
                       led11=1;//11
                       }
                       if(d12!=0)
                       {
                       led12=0;
                       delay(d12);                   
                       led12=1;//12
                       }
                       if(d13!=0)
                       {
                       led13=0;
                       delay(d13); //13                  
                       led13=1;
                       }
                       if(d14!=0)//14
                       {
                       led14=0;
                       delay(d14);                   
                       led14=1;
                       }
                       if(d15!=0)//15
                       {
                       led15=0;
                       delay(d15);                   
                       led15=1;
                       }
                      }
                       
                      /***********************************************/
                      /********************主程序*********************/
                      /***********************************************/
                      void main()
                      {
                       TMOD=0x01;
                       EA=1;
                       ET0=1;
                       TR0=1;
                       TH0=(65536-56)/256;
                       TL0=(65536-56)%256;
                       while(1)//程序主循環
                       {
                        RGBpwm(d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15);//調用RGBpwm子程序
                       }
                      }
                      /*************************************************/
                      /*中斷服務子程序(控制LED紅綠蘭亮滅時間占空比例)*/
                      /*************************************************/
                      void zhong() interrupt 1//中斷向量位為1
                      {
                       uint num;//定時器計數變量
                       uint ji;//亮度等級控制變量
                       TH0=(65536-500)/256;//給定時器高8位賦值
                       TL0=(65536-500)%256;//給定時器低8位賦值
                       num++;//將定時計數變自動增加1
                       if(num==shudu)//如果速度變量等于定時計數器變量就執行下面大括號語句
                       {
                        num=0;//將計數器清0
                        ji++;//將亮度等級控制變量加1
                        if((ji>0)&&(ji<10))//移位移動 流水.....
                        {
                       d0=yin7;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                        if((ji>10)&&(ji<20))//23456789
                        {
                       d0=yin6;
                       d1=yin7;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>20)&&(ji<30))//345678910
                        {
                       d0=yin5;
                       d1=yin6;
                       d2=yin7;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>30)&&(ji<40))//4567891011
                        {
                       d0=yin4;
                       d1=yin5;
                       d2=yin6;
                       d3=yin7;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       
                       
                        if((ji>40)&&(ji<50))//12345678
                        {
                       d0=yin3;
                       d1=yin4;
                       d2=yin5;
                       d3=yin6;
                       d4=yin7;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                        if((ji>50)&&(ji<60))//23456789
                        {
                       d0=yin2;
                       d1=yin3;
                       d2=yin4;
                       d3=yin5;
                       d4=yin6;
                       d5=yin7;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>60)&&(ji<70))//345678910
                        {
                       d0=yin1;
                       d1=yin2;
                       d2=yin3;
                       d3=yin4;
                       d4=yin5;
                       d5=yin6;
                       d6=yin7;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>70)&&(ji<80))//4567891011
                        {
                       d0=yin0;
                       d1=yin1;
                       d2=yin2;
                       d3=yin3;
                       d4=yin4;
                       d5=yin5;
                       d6=yin6;
                       d7=yin7;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       
                       

                        if((ji>80)&&(ji<90))//12345678
                        {
                       d0=0;
                       d1=yin0;
                       d2=yin1;
                       d3=yin2;
                       d4=yin3;
                       d5=yin4;
                       d6=yin5;
                       d7=yin6;
                       d8=yin7;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       
                      if((ji>90)&&(ji<100))//345678910
                        {
                       d2=yin0;
                       d3=yin1;
                       d4=yin2;
                       d5=yin3;
                       d6=yin4;
                       d7=yin5;
                       d8=yin6;
                       d9=yin7;
                       d0=0;
                       d1=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>100)&&(ji<110))//345678910
                        {
                       d3=yin0;
                       d4=yin1;
                       d5=yin2;
                       d6=yin3;
                       d7=yin4;
                       d8=yin5;
                       d9=yin6;
                       d10=yin7;
                       d0=0;
                       d1=0;
                       d2=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>110)&&(ji<120))//4567891011
                        {
                       d4=yin0;
                       d5=yin1;
                       d6=yin2;
                       d7=yin3;
                       d8=yin4;
                       d9=yin5;
                       d10=yin6;
                       d11=yin7;
                       d1=0;
                       d2=0;
                       d3=0;
                       d12=0;
                       d0=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>120)&&(ji<130))//56789101112
                        {
                       d5=yin0;
                       d6=yin1;
                       d7=yin2;
                       d8=yin3;
                       d9=yin4;
                       d10=yin5;
                       d11=yin6;
                       d12=yin7;
                       d0=0;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>130)&&(ji<140))//678910111213
                        {
                       d6=yin0;
                       d7=yin1;
                       d8=yin2;
                       d9=yin3;
                       d10=yin4;
                       d11=yin5;
                       d12=yin6;
                       d13=yin7;
                       d0=0;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d14=0;
                       d15=0;
                        }
                       if((ji>140)&&(ji<150))//
                        {
                       d7=yin0;
                       d8=yin1;
                       d9=yin2;
                       d10=yin3;
                       d11=yin4;
                       d12=yin5;
                       d13=yin6;
                       d14=yin7;
                       d0=0;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d15=0;
                        }
                       if((ji>150)&&(ji<160))//
                        {
                       d8=yin0;
                       d9=yin1;
                       d10=yin2;
                       d11=yin3;
                       d12=yin4;
                       d13=yin5;
                       d14=yin6;
                       d15=yin7;
                       
                       d0=0;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                        }
                        if((ji>160)&&(ji<450))//讓所有LED都滅掉 等待下一次流星......
                        {
                       d0=0;
                       d1=0;
                       d2=0;
                       d3=0;
                       d4=0;
                       d5=0;
                       d6=0;
                       d7=0;
                       d8=0;
                       d9=0;
                       d10=0;
                       d11=0;
                       d12=0;
                       d13=0;
                       d14=0;
                       d15=0;
                        }
                        if(ji>450)
                       {
                       TR0=0;
                       ji=0;
                       TR0=1;
                       }
                       }
                      }

                       

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

                      文章評論

                      相關文章

                      富二代国产视频