找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2416|回复: 5
打印 上一主题 下一主题
收起左侧

36颗2812B灯珠做的流水循环转圈效果单片机源代码

[复制链接]
跳转到指定楼层
楼主
36颗2812B灯珠做的流水循环转圈效果源代码

所有资料51hei提供下载:
36颗WS2812B灯珠.rar (1018 Bytes, 下载次数: 44)


单片机源程序如下:
  1. /*************************************
  2. MCU:STC15W204S      晶振:22.1184MHZ
  3. *************************************/
  4. #include<reg52.h>
  5. #include<intrins.h>
  6. #define uchar unsigned char
  7. #define uint  unsigned int
  8. #define RGB_count  36                                   //IC数量
  9. #define RGB_speed  7                                   //灯珠亮灭速度,数值越小,速度越快
  10. uchar x;
  11. sbit DIN=P3^2;
  12. uchar buff[]={10,11,9,12,8,13,7,14,6,15,5,16,4,17,3,18,2,19,1,20,0};
  13. void time0()interrupt 1
  14. {
  15.        
  16.         TH0 = (65536-50000)/256;
  17.     TL0 = (65536-50000)%256;
  18.         x++;
  19.         if(x==110)
  20.         x=0;
  21. //        P10=~P10;
  22. //        P11=~P11;
  23. //        P12=~P12;
  24. }
  25. /*************0码*******************/
  26. void DIN_bit_0() {
  27.         uchar i;
  28.         DIN=1;
  29.         for(i=1;i>0;i--);
  30.         DIN=0;        //1+3+4*7
  31.         for(i=4;i>0;i--);
  32. }

  33. /*************1码*******************/
  34. void DIN_bit_1() {
  35.         uchar i;
  36.         DIN=1;       //1+3+4*7+1
  37.         for(i=4;i>0;i--);
  38.         DIN=0;
  39.         for(i=1;i>0;i--);
  40. }

  41. /*************reset码*******************/
  42. void reset() {
  43.         uchar a,b;
  44.         DIN=0;
  45.     for(b=78;b>0;b--)
  46.         for(a=2;a>0;a--);
  47.     _nop_();  //if Keil,require use intrins.h
  48. }

  49. /*************数据传输******************/
  50. void send_dat(uchar dat) { //高位先传
  51. uchar i;
  52. for(i=8;i>0;i--) {
  53.         if(dat & 0x80)
  54.         DIN_bit_1();
  55.         else
  56.         DIN_bit_0();
  57.         dat <<=1;
  58. }
  59. }
  60. void send_rgb(uchar g,uchar r,uchar b)
  61. {
  62.         send_dat(g);
  63.         send_dat(r);
  64.         send_dat(b);
  65. }
  66. /***************延时******************/
  67. void delay(uchar t) {
  68.         unsigned long j;
  69.         while(t--)
  70.                 for(j=0;j<1000;j++);
  71. }

  72. void main() {
  73.         uchar i,n,num,t;
  74.         //AUXR = AUXR|0x80;  // T0, 1T Mode
  75. //        InitTimer0();
  76.        
  77.         while(1)  
  78.                 {  
  79.                
  80.                 //*************红R跑马灯增加*******************
  81.                 for(i=0;i<=RGB_count;i++) {
  82.                         for(num=0;num<i;num++) {
  83.                                 send_dat(0);
  84.                                 send_dat(255);
  85.                                 send_dat(0);
  86.                         }
  87.                         reset();
  88.                         for(t=RGB_speed;t>0;t--)
  89.                                 delay(1);
  90.                 }
  91.                
  92.                
  93.                 //*************绿G跑马灯增加*******************
  94.                 for(i=0;i<=RGB_count;i++) {
  95.                         for(num=0;num<i;num++) {
  96.                                 send_dat(255);
  97.                                 send_dat(0);
  98.                                 send_dat(0);
  99.                         }
  100.                         reset();
  101.                         for(t=RGB_speed;t>0;t--)
  102.                                 delay(1);
  103.                 }
  104.                
  105.                
  106.                 //*************蓝B跑马灯增加*******************
  107.                 for(i=0;i<=RGB_count;i++) {
  108.                         for(num=0;num<i;num++) {
  109.                                 send_dat(0);
  110.                                 send_dat(0);
  111.                                 send_dat(255);
  112.                         }
  113.                         reset();
  114.                         for(t=RGB_speed;t>0;t--)
  115.                                 delay(1);
  116.                 }
  117.                
  118.                 //*************白RGB跑马灯增加*******************
  119.                 for(i=0;i<=RGB_count;i++) {
  120.                         for(num=0;num<i;num++) {
  121.                                 send_dat(120);
  122.                                 send_dat(120);
  123.                                 send_dat(120);
  124.                         }
  125.                         reset();
  126.                         for(t=RGB_speed;t>0;t--)
  127.                                 delay(1);
  128.                 }


  129.                 //*************黄RG跑马灯增加*******************
  130.                 for(i=0;i<=RGB_count;i++) {
  131.                         for(num=0;num<i;num++) {
  132.                                 send_dat(155);
  133.                                 send_dat(155);
  134.                                 send_dat(0);
  135.                         }
  136.                         reset();
  137.                         for(t=RGB_speed;t>0;t--)
  138.                                 delay(1);
  139.                 }


  140.                 //*************紫RB跑马灯增加*******************
  141.                 for(i=0;i<=RGB_count;i++) {
  142.                         for(num=0;num<i;num++) {
  143.                                 send_dat(0);
  144.                                 send_dat(155);
  145.                                 send_dat(155);
  146.                         }
  147.                         reset();
  148. ……………………

  149. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:251357 发表于 2017-11-29 10:31 来自手机 | 只看该作者
我下载下来看看,研究研究
回复

使用道具 举报

板凳
ID:271166 发表于 2018-2-5 08:42 | 只看该作者
我下载下来看看,研究研究
回复

使用道具 举报

地板
ID:439460 发表于 2019-1-4 13:57 来自手机 | 只看该作者
15w204s是不是最多只能驱动36颗灯珠啊
回复

使用道具 举报

5#
ID:419125 发表于 2019-3-21 08:25 | 只看该作者
多谢分享哈
回复

使用道具 举报

6#
ID:419125 发表于 2019-3-21 09:04 | 只看该作者
楼主 程序好像有问题,刚开始是好的,一分钟左右只有8个LED会跑了,程序我改了24个LED, P3-3口
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表