[文档下载] 原创作品LED流星雨灯(51单片机程序代码)产品分享

[复制链接]
 楼主| 舒斯特尔 发表于 2015-11-8 20:51 | 显示全部楼层 |阅读模式
一、图片分享:



二、PCB文件分享:



三、原理图分享:




 楼主| 舒斯特尔 发表于 2015-11-8 20:51 | 显示全部楼层
上面只做了5根灯管,如果需要增加灯管的话,只需稍微改动下 下面的程序即可.如果增长
连线把灯管摆成圆形或者方形效果也比较牛X的.

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

/*流星雨程序代码
  单片机型号:STC11F04  IO口16个!原理:
  利用PWM来模似流星雨:将亮度等级分为8个
,通过改变每一组LED的亮度来达到流星雨效果。
(因为流星雨是前面亮后面越来越暗,就像一条龙一样,拖着尾巴过来),
 楼主| 舒斯特尔 发表于 2015-11-8 20:52 | 显示全部楼层
  1. #include<reg52.h>//MCU头文件
  2. #define uchar unsigned char//字浮型宏定义
  3. #define uint unsigned int//整型宏定义
  4. #define shudu 3 //LED渐变速度调整
  5. uchar yin0 =31;//LED变化等级调整
  6. uchar yin1 =63;//LED变化等级调整
  7. uchar yin2 =95;//LED变化等级调整
  8. uchar yin3 =127;//LED变化等级调整
  9. uchar yin4 =159;//LED变化等级调整
  10. uchar yin5 =191;//LED变化等级调整
  11. uchar yin6 =223;//LED变化等级调整
  12. uchar yin7 =255;//LED变化等级调整
  13. sbit led0=P3^5;//16个IO口
  14. sbit led1=P3^6;
  15. sbit led2=P3^0;
  16. sbit led3=P3^1;
  17. sbit led4=P3^2;
  18. sbit led5=P3^3;
  19. sbit led6=P3^4;
  20. sbit led7=P3^7;
  21. sbit led8=P1^0;
  22. sbit led9=P1^1;
  23. sbit led10=P1^2;
  24. sbit led11=P1^7;
  25. sbit led12=P1^6;
  26. sbit led13=P1^5;
  27. sbit led14=P1^4;
  28. sbit led15=P1^3;
  29. uchar d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15;//各IO口变量
  30. /***************************************************/
  31. /**********************延时子程序*******************/
  32. /***************************************************/
  33. void delay(uint z)
  34. {
  35. uint x,y;//局部变量定义
  36. for(x=0;x<5;x++)//延时外循环
  37. for(y=0;y<z;y++);//延时内循环
  38. }
  39. /**********************************************/
  40. /**********PWM控制红绿兰3种灯亮灭时间**********/
  41. /**********************************************/
  42. 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个局部变量,些部分为带参数函数
  43. {
  44. if(d0!=0)
  45. {
  46. led0=0;
  47. delay(d0);                  
  48. led0=1;//1
  49. }
  50. if(d1!=0)
  51. {
  52. led1=0;
  53. delay(d1);                  
  54. led1=1;//1
  55. }
  56. if(d2!=0)
  57. {
  58. led2=0;
  59. delay(d2); //2                  
  60. led2=1;
  61. }
  62. if(d3!=0)
  63. {
  64. led3=0;
  65. delay(d3);                  
  66. led3=1;//3
  67. }
  68. if(d4!=0)
  69. {
  70. led4=0;
  71. delay(d4);                  
  72. led4=1;//4
  73. }
  74. if(d5!=0)
  75. {
  76. led5=0;
  77. delay(d5);                  
  78. led5=1;//5
  79. }
  80. if(d6!=0)
  81. {
  82. led6=0;
  83. delay(d6);                  
  84. led6=1;//6
  85. }
  86. if(d7!=0)
  87. {
  88. led7=0;
  89. delay(d7);                  
  90. led7=1;//7
  91. }
  92. if(d8!=0)
  93. {
  94. led8=0;
  95. delay(d8);                  
  96. led8=1;//8
  97. }
  98. if(d9!=0)
  99. {
  100. led9=0;
  101. delay(d9);                  
  102. led9=1;//9
  103. }
  104. if(d10!=0)
  105. {
  106. led10=0;
  107. delay(d10); //10                  
  108. led10=1;
  109. }
  110. if(d11!=0)
  111. {
  112. led11=0;
  113. delay(d11);                  
  114. led11=1;//11
  115. }
  116. if(d12!=0)
  117. {
  118. led12=0;
  119. delay(d12);                  
  120. led12=1;//12
  121. }
  122. if(d13!=0)
  123. {
  124. led13=0;
  125. delay(d13); //13                  
  126. led13=1;
  127. }
  128. if(d14!=0)//14
  129. {
  130. led14=0;
  131. delay(d14);                  
  132. led14=1;
  133. }
  134. if(d15!=0)//15
  135. {
  136. led15=0;
  137. delay(d15);                  
  138. led15=1;
  139. }
  140. }

  141. /***********************************************/
  142. /********************主程序*********************/
  143. /***********************************************/
  144. void main()
  145. {
  146. TMOD=0x01;
  147. EA=1;
  148. ET0=1;
  149. TR0=1;
  150. TH0=(65536-56)/256;
  151. TL0=(65536-56)%256;
  152. while(1)//程序主循环
  153. {
  154.   RGBpwm(d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15);//调用RGBpwm子程序
  155. }
  156. }
  157. /*************************************************/
  158. /*中断服务子程序(控制LED红绿兰亮灭时间占空比例)*/
  159. /*************************************************/
  160. void zhong() interrupt 1//中断向量位为1
  161. {
  162. uint num;//定时器计数变量
  163. uint ji;//亮度等级控制变量
  164. TH0=(65536-500)/256;//给定时器高8位赋值
  165. TL0=(65536-500)%256;//给定时器低8位赋值
  166. num++;//将定时计数变自动增加1
  167. if(num==shudu)//如果速度变量等于定时计数器变量就执行下面大括号语句
  168. {
  169.   num=0;//将计数器清0
  170.   ji++;//将亮度等级控制变量加1
  171.   if((ji>0)&&(ji<10))//移位移动 流水.....
  172.   {
  173. d0=yin7;
  174. d1=0;
  175. d2=0;
  176. d3=0;
  177. d4=0;
  178. d5=0;
  179. d6=0;
  180. d7=0;
  181. d8=0;
  182. d9=0;
  183. d10=0;
  184. d11=0;
  185. d12=0;
  186. d13=0;
  187. d14=0;
  188. d15=0;
  189.   }
  190.   if((ji>10)&&(ji<20))//23456789
  191.   {
  192. d0=yin6;
  193. d1=yin7;
  194. d2=0;
  195. d3=0;
  196. d4=0;
  197. d5=0;
  198. d6=0;
  199. d7=0;
  200. d8=0;
  201. d9=0;
  202. d10=0;
  203. d11=0;
  204. d12=0;
  205. d13=0;
  206. d14=0;
  207. d15=0;
  208.   }
  209. if((ji>20)&&(ji<30))//345678910
  210.   {
  211. d0=yin5;
  212. d1=yin6;
  213. d2=yin7;
  214. d3=0;
  215. d4=0;
  216. d5=0;
  217. d6=0;
  218. d7=0;
  219. d8=0;
  220. d9=0;
  221. d10=0;
  222. d11=0;
  223. d12=0;
  224. d13=0;
  225. d14=0;
  226. d15=0;
  227.   }
  228. if((ji>30)&&(ji<40))//4567891011
  229.   {
  230. d0=yin4;
  231. d1=yin5;
  232. d2=yin6;
  233. d3=yin7;
  234. d4=0;
  235. d5=0;
  236. d6=0;
  237. d7=0;
  238. d8=0;
  239. d9=0;
  240. d10=0;
  241. d11=0;
  242. d12=0;
  243. d13=0;
  244. d14=0;
  245. d15=0;
  246.   }


  247.   if((ji>40)&&(ji<50))//12345678
  248.   {
  249. d0=yin3;
  250. d1=yin4;
  251. d2=yin5;
  252. d3=yin6;
  253. d4=yin7;
  254. d5=0;
  255. d6=0;
  256. d7=0;
  257. d8=0;
  258. d9=0;
  259. d10=0;
  260. d11=0;
  261. d12=0;
  262. d13=0;
  263. d14=0;
  264. d15=0;
  265.   }
  266.   if((ji>50)&&(ji<60))//23456789
  267.   {
  268. d0=yin2;
  269. d1=yin3;
  270. d2=yin4;
  271. d3=yin5;
  272. d4=yin6;
  273. d5=yin7;
  274. d6=0;
  275. d7=0;
  276. d8=0;
  277. d9=0;
  278. d10=0;
  279. d11=0;
  280. d12=0;
  281. d13=0;
  282. d14=0;
  283. d15=0;
  284.   }
  285. if((ji>60)&&(ji<70))//345678910
  286.   {
  287. d0=yin1;
  288. d1=yin2;
  289. d2=yin3;
  290. d3=yin4;
  291. d4=yin5;
  292. d5=yin6;
  293. d6=yin7;
  294. d7=0;
  295. d8=0;
  296. d9=0;
  297. d10=0;
  298. d11=0;
  299. d12=0;
  300. d13=0;
  301. d14=0;
  302. d15=0;
  303.   }
  304. if((ji>70)&&(ji<80))//4567891011
  305.   {
  306. d0=yin0;
  307. d1=yin1;
  308. d2=yin2;
  309. d3=yin3;
  310. d4=yin4;
  311. d5=yin5;
  312. d6=yin6;
  313. d7=yin7;
  314. d8=0;
  315. d9=0;
  316. d10=0;
  317. d11=0;
  318. d12=0;
  319. d13=0;
  320. d14=0;
  321. d15=0;
  322.   }
 楼主| 舒斯特尔 发表于 2015-11-8 20:53 | 显示全部楼层
  1. if((ji>80)&&(ji<90))//12345678
  2.   {
  3. d0=0;
  4. d1=yin0;
  5. d2=yin1;
  6. d3=yin2;
  7. d4=yin3;
  8. d5=yin4;
  9. d6=yin5;
  10. d7=yin6;
  11. d8=yin7;
  12. d9=0;
  13. d10=0;
  14. d11=0;
  15. d12=0;
  16. d13=0;
  17. d14=0;
  18. d15=0;
  19.   }

  20. if((ji>90)&&(ji<100))//345678910
  21.   {
  22. d2=yin0;
  23. d3=yin1;
  24. d4=yin2;
  25. d5=yin3;
  26. d6=yin4;
  27. d7=yin5;
  28. d8=yin6;
  29. d9=yin7;
  30. d0=0;
  31. d1=0;
  32. d10=0;
  33. d11=0;
  34. d12=0;
  35. d13=0;
  36. d14=0;
  37. d15=0;
  38.   }
  39. if((ji>100)&&(ji<110))//345678910
  40.   {
  41. d3=yin0;
  42. d4=yin1;
  43. d5=yin2;
  44. d6=yin3;
  45. d7=yin4;
  46. d8=yin5;
  47. d9=yin6;
  48. d10=yin7;
  49. d0=0;
  50. d1=0;
  51. d2=0;
  52. d11=0;
  53. d12=0;
  54. d13=0;
  55. d14=0;
  56. d15=0;
  57.   }
  58. if((ji>110)&&(ji<120))//4567891011
  59.   {
  60. d4=yin0;
  61. d5=yin1;
  62. d6=yin2;
  63. d7=yin3;
  64. d8=yin4;
  65. d9=yin5;
  66. d10=yin6;
  67. d11=yin7;
  68. d1=0;
  69. d2=0;
  70. d3=0;
  71. d12=0;
  72. d0=0;
  73. d13=0;
  74. d14=0;
  75. d15=0;
  76.   }
  77. if((ji>120)&&(ji<130))//56789101112
  78.   {
  79. d5=yin0;
  80. d6=yin1;
  81. d7=yin2;
  82. d8=yin3;
  83. d9=yin4;
  84. d10=yin5;
  85. d11=yin6;
  86. d12=yin7;
  87. d0=0;
  88. d1=0;
  89. d2=0;
  90. d3=0;
  91. d4=0;
  92. d13=0;
  93. d14=0;
  94. d15=0;
  95.   }
  96. if((ji>130)&&(ji<140))//678910111213
  97.   {
  98. d6=yin0;
  99. d7=yin1;
  100. d8=yin2;
  101. d9=yin3;
  102. d10=yin4;
  103. d11=yin5;
  104. d12=yin6;
  105. d13=yin7;
  106. d0=0;
  107. d1=0;
  108. d2=0;
  109. d3=0;
  110. d4=0;
  111. d5=0;
  112. d14=0;
  113. d15=0;
  114.   }
  115. if((ji>140)&&(ji<150))//
  116.   {
  117. d7=yin0;
  118. d8=yin1;
  119. d9=yin2;
  120. d10=yin3;
  121. d11=yin4;
  122. d12=yin5;
  123. d13=yin6;
  124. d14=yin7;
  125. d0=0;
  126. d1=0;
  127. d2=0;
  128. d3=0;
  129. d4=0;
  130. d5=0;
  131. d6=0;
  132. d15=0;
  133.   }
  134. if((ji>150)&&(ji<160))//
  135.   {
  136. d8=yin0;
  137. d9=yin1;
  138. d10=yin2;
  139. d11=yin3;
  140. d12=yin4;
  141. d13=yin5;
  142. d14=yin6;
  143. d15=yin7;

  144. d0=0;
  145. d1=0;
  146. d2=0;
  147. d3=0;
  148. d4=0;
  149. d5=0;
  150. d6=0;
  151. d7=0;
  152.   }
  153.   if((ji>160)&&(ji<450))//让所有LED都灭掉 等待下一次流星......
  154.   {
  155. d0=0;
  156. d1=0;
  157. d2=0;
  158. d3=0;
  159. d4=0;
  160. d5=0;
  161. d6=0;
  162. d7=0;
  163. d8=0;
  164. d9=0;
  165. d10=0;
  166. d11=0;
  167. d12=0;
  168. d13=0;
  169. d14=0;
  170. d15=0;
  171.   }
  172.   if(ji>450)
  173. {
  174. TR0=0;
  175. ji=0;
  176. TR0=1;
  177. }
  178. }
  179. }
侣行天下 发表于 2015-11-10 20:39 | 显示全部楼层
这个东西做好之后放在什么地方呢
643757107 发表于 2015-11-10 22:32 | 显示全部楼层
如果需要增加灯管的话,只需稍微改动下 下面的程序即可.如果增长
连线把灯管摆成圆形或者方形效果也比较牛X的.
这就是牛X的摇摇棒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

277

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部