找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1523|回复: 3
收起左侧

WS2812B控制LED灯珠变化并带掉电保持 STC单片机数据驱动程序

  [复制链接]
ID:610936 发表于 2022-12-16 11:13 | 显示全部楼层 |阅读模式
功    能: 单片机STC15F104E和WS2811控制LED灯珠变化并带有掉电保持的功
           能(内部EEPROM)。三个按键作用:Mode为模式选择,每按一次会
                   转换为另一种样式显示,并保持此样式一直循环,当按下Sel键时所
                   有的样式循环显示,Speed为速度调节(共八级速度)。显示样式有
                   :整体七彩跳变,七彩渐变,流水,流星,单点变化,后向前流水。
单片机源程序如下:
  1. #include<IAP15F105W.h>
  2. #include<intrins.h>                                          
  3. typedef unsigned char uchar;
  4. typedef unsigned int  uint;


  5. #define CMD_IDLE      0                //Stand-By
  6. #define CMD_READ      1                //Byte-Read
  7. #define CMD_PROGRAM   2                //Byte-Program
  8. #define CMD_ERASE     3                //Sector-Erase
  9. /*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
  10. #define ENABLE_IAP      0x82             //if SYSCLK<20MHz

  11. #define IAP_ADDRESS  0x1200                            //EEPROM开始地址

  12. #define NUMBER        500                              //级联个数

  13. sbit  DAI =P3^4;                                    //信号端口


  14. uint   speed=10;                                    //速度                        
  15. uchar  T1_Flag,DMX512_Data_Byte;


  16. uchar T_R[5]={50,0,0,50,0};
  17. uchar T_G[5]={0,50,0,50,0};
  18. uchar T_B[5]={0,0,50,50,0};

  19. //函数申明

  20. //void send_24bits(uchar dat1,uchar dat2,uchar dat3);
  21. //void rst();
  22. void delay1();
  23. void time0_init();      

  24. void send_2821_star();
  25. void send_2821_byte(uchar cod8);
  26. void send_2821_24bits(uchar dat1,uchar dat2,uchar dat3);
  27. void send_2821_end();
  28. void Send_Data(uchar dat);

  29. /******************************************
  30. 函 数 名:void delay(uint z)

  31. 功    能:延时函数
  32. ******************************************/
  33. void Delay(uint x)
  34. {
  35.         uint y;
  36.         for(;x>0;x--)
  37.         {
  38.                 for(y=0;y<6000;y++);
  39.         }
  40. }

  41. /******************************************
  42. 函数名:        void Delay4us()  
  43.         void Delay88us()

  44. 功  能:向2821发送数据电平位延时
  45. ********************************************/
  46. void Delay4us()                //@33.1776MHz
  47. {
  48.         unsigned char i;

  49.         _nop_();
  50.         _nop_();
  51.         _nop_();
  52.         i = 23;//29//24//23//22
  53.         while (--i);
  54. }
  55. void Delay_4us()                //@33.1776MHz
  56. {
  57.         unsigned char i;

  58.         _nop_();
  59.         _nop_();
  60.         _nop_();
  61.         i = 28;//29//24//23//22
  62.         while (--i);
  63. }
  64. void Delay88us()                //@33.1776MHz
  65. {
  66.         unsigned char i,j;

  67.         _nop_();
  68.         _nop_();
  69.         i = 3;
  70.         j = 211;
  71.         do
  72.         {
  73.                 while (--j);
  74.         } while (--i);
  75. }
复制代码

rgb.png
51hei.png
以上代码的Keil工程文件下载: 代码.7z (20.79 KB, 下载次数: 95)

评分

参与人数 2黑币 +65 收起 理由
zlgmo + 15 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1057598 发表于 2022-12-22 12:16 | 显示全部楼层
没有渐变的代码
回复

使用道具 举报

ID:748788 发表于 2022-12-23 13:12 | 显示全部楼层
代码不全,定义的led数量都没有使用
回复

使用道具 举报

ID:1104154 发表于 2023-12-15 08:02 | 显示全部楼层
代码大量不全,浪费下载黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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