标题: WS2812B控制LED灯珠变化并带掉电保持 STC单片机数据驱动程序 [打印本页]

作者: adsab    时间: 2022-12-16 11:13
标题: WS2812B控制LED灯珠变化并带掉电保持 STC单片机数据驱动程序
功    能: 单片机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. }
复制代码



以上代码的Keil工程文件下载: 代码.7z (20.79 KB, 下载次数: 104)

作者: THFW    时间: 2022-12-22 12:16
没有渐变的代码
作者: wwh2382    时间: 2022-12-23 13:12
代码不全,定义的led数量都没有使用
作者: lizhiyuhappy    时间: 2023-12-15 08:02
代码大量不全,浪费下载黑币




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1