1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      中国领先的单片机及嵌入式资讯教程开发工具提供者!
      当前位置单片机教程网 >> MCU设计实例 >> 浏览文章

      原创作品LED流星雨灯51单片机程序代码产品分享

      作者:佚名   来源:本站原创   点击数:  更新时间2012年04月26日   字体
       最近公司生产了一款流星雨灯现把它分享给大家
       
      一图片分享
       

       二PCB文件分享

       
       

       三原理图分享

       
       

       

      四视频效果分享



         上面只做了5根灯管如果需要增加灯管的话只需稍微改动下 下面的程序即可.如果增长
      连线把灯管摆?#31245;位?#32773;方形效果也比较牛逼的.

         此款流星灯?#26412;?#21482;有1.5公分只可以做30公分50公分80公分1000公分等
      这个东东主要是做装饰用,技术支持:http://www.15888691.com/ 下面公开全部的?#21019;?#30721;.
      请大家多多指教.程序代码大家可以随意修?#27169;?#20294;不可用于商业用途.

      /*流星雨程序代码 作者胡琴   2011-12-12
        单片机型?#29275;STC11F04  IO口16个原理
        利用PWM来模似流星雨?#33322;?#20142;度等级分为8个
      通过改变每一组LED的亮度?#21019;?#21040;流星雨效果
      因为流星雨是前面亮后面越来越暗就像一条龙一样拖着尾巴过来
      完整的程序?#21019;?#30721;下载http://www.15888691.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位?#25345;?br />  TL0=(65536-500)%256;//给定时器低8位?#25345;?br />  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;
       }
       }
      }

       

      发表评论告诉好友收藏此文关闭窗口

      文章评论

      相关文章

      ຣ11ѡ5app

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>