本文主要介绍了led流星雨灯的制作原理,包括成品图片,电路原理图以及所用的51单片机的程序代码。
一、图片分享:
二、pcb文件分享:
三、原理图分享:
上面只做了5根灯管,如果需要增加灯管的话,只需稍微改动下 下面的程序即可。如果增长
连线把灯管摆成圆形或者方形效果也比较牛逼的。
此款流星灯直径只有1.5公分只可以做30公分、50公分、80公分、1000公分等 。
程序代码大家可以随意修改,但不可用于商业用途。
/*流星雨程序代码
单片机型号:stc11f04 io口16个!原理:
利用pwm来模似流星雨:将亮度等级分为8个
,通过改变每一组led的亮度来达到流星雨效果。
(因为流星雨是前面亮后面越来越暗,就像一条龙一样,拖着尾巴过来),
完整的程序源代码下载:http://www.51hei.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;
}
}
}
什么是WebSocket协议?
数控机床机器人的组成
NetApp EF570全闪存阵列的配置和评测方法资料概述
瘫痪或偏瘫患者将可站起来 国产商用化外骨骼机器人在沪正式发布
led电视如何选购
LED流星雨灯的制作(51单片机程序代码)
基于Arm平台的研华EPC-R4680工控机 实现快速储物柜智能解决方案
光电池的工作原理及其特性
贾跃亭与乐视能否踩住刹车 融创入股后依然状况不断
飞兆半导体2013MWC展示最新触觉反馈芯片
预计到2023年全球IOT无人机出货量将达130万台
干式变压器与油浸变压器的优缺点分析
磷酸铁锂锂离子电池有哪些特点?
三相异步电动机的制动
成功实现相距50公里光纤的存储器间的量子纠缠
谷歌新专利曝光:通过眼动追踪摄像头追踪面部表情,增加AR/VR沉浸感
中国具有自主知识产权网络处理器芯片问世
氧分呗浅析机器人未来发展趋势
Silicon推出“即插即用”单芯片RH传感器
数控机床是干什么的