234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    (玩电子) 电子技术学习与研究
    当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

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

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

     二、PCB文件分享:

     
     

     三、原理图分享:

     
     

     

    四、视频效果分享:



       上    面只做了5根灯管,如果需要增加灯管的一话,只需稍微改动下 下面的一程序即可.如果增长
    连线把灯管摆成圆形或者方形效果也比较牛逼的一.

       此款流星灯直径只有1.5公分只可以做30公分、50公分、80公分、1000公分等  。
    这个东东主要是做装饰用,技术支持234彩票代理:http://www./ 下面公开全部的一源代码.
    请大家多多指教.程序代码大家可以随意修改,但不 可用于商业用途.

    /*流星雨程序代码 作者:胡琴   2011-12-12
      单片机型号:STC11F04  IO口16个!原理:
      利用PWM来模似流星雨:将亮度等级分为8个
    ,通过改变每一组LED的一亮度来达到流星雨效果 。
    (因 为流星雨是前面亮后面越来越暗,就像一条龙一样,拖着尾巴过来),
    完整的一程序源代码下载:http://www./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;
     }
     }
    }

     

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

    文章评论

    相关文章