标题: SK9822智能外控表面贴装SMD型LED控制协议STM32源码,调节RGB来控制LED颜色 [打印本页]

作者: hi-Slowly    时间: 2018-8-25 12:10
标题: SK9822智能外控表面贴装SMD型LED控制协议STM32源码,调节RGB来控制LED颜色

这是基于stm32的SK9822智能外控表面贴装SMD型LED控制协议,可以通过调节RGB来控制LED的颜色


单片机源程序如下:

  1. <font color="rgb(102, 102, 102)"><font face="&quot;"><font style="font-size: 12px"><font color="rgb(102, 102, 102)"><font face="&quot;">#include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"

  4. #define SCL    PBout(12) //SCL
  5. #define SDA    PBout(11) //SDA
  6. #define Led_num 144//led数量
  7. #define Led_Maxnum 144

  8. const u8 ALed_bright=23; //0-31

  9. //const u32 Led_F;
  10. const u32 ALed_B=0;
  11. const u32 ALed_G=125;
  12. const u32 ALed_R=256;

  13. typedef struct
  14. {
  15. u8 Led_bright; //0-31

  16. u32 Led_F;
  17. u32 Led_B;
  18. u32 Led_G;
  19. u32 Led_R;
  20. }LED;
  21. LED led[Led_num];
  22. LED ledOver={0,0xE0<<5,0,0,0};


  23. void LED_Init(void);
  24. void LED_WriteOneWord(u32 DataToWrite);
  25. u32 Led_Date(LED led);

  26. void LedHavingDate(LED *led){
  27. int i;
  28.         
  29.         LED *p;
  30.         p=led;
  31.         for(i=0;i<1;i++){
  32.         
  33.                 p->Led_bright=ALed_bright;
  34.                 p->Led_F=((0xE0<<5)+p->Led_bright);
  35.                 p->Led_B=ALed_B;
  36.                 p->Led_G=ALed_G;
  37.                 p->Led_R=ALed_R;
  38.                 p++;
  39.                
  40.                
  41.         }
  42. }



  43. int main(void)
  44. {                int i=0;
  45.         delay_init();                     //延时函数初始化         
  46.         LED_Init();
  47.         LedHavingDate(led);
  48.         while(1){
  49.                 (led[0].Led_bright)++;
  50.                 for(i=0;i<=Led_num;i++)
  51.                 {
  52.                         if(i==0)//开始帧
  53.                                 LED_WriteOneWord((u32)0x00000000);
  54.                                 else
  55.                                 LED_WriteOneWord((u32)Led_Date(led[0]));

  56.                 }
  57.                 for(i=Led_num;i<Led_Maxnum;i++){
  58.                         LED_WriteOneWord((u32)Led_Date(ledOver));
  59.                         
  60.                 }
  61.                 delay_ms(1);
  62.                
  63.                 LED_WriteOneWord((u32)0xFFFFFFFF);
  64.                 //delay_ms(1000);
  65.            if(led[0].Led_bright>=30)led[0].Led_bright=23;
  66.         }
  67.         
  68.         
  69. }



  70. void LED_Init(void)
  71. {                                             
  72.         GPIO_InitTypeDef GPIO_InitStructure;
  73.         
  74.         RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB, ENABLE );        
  75.            
  76.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
  77.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
  78.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  79.         GPIO_Init(GPIOB, &GPIO_InitStructure);


  80. }






  81. void LED_WriteOneWord(u32 txd)
  82. {
  83.                               
  84.         u8 t;   
  85.    
  86.     SCL=0;
  87.     for(t=0;t<32;t++)
  88.     {              
  89.         SDA=(txd&0x80000000)>>31;
  90.         txd<<=1;           
  91.                 delay_us(1);   
  92.                 SCL=1;
  93.                 delay_us(1);
  94.                 SCL=0;        
  95.                 delay_us(1);
  96.     }                                                   
  97.          
  98. }

  99. u32 Led_Date(LED led){

  100.         u32 date=0;
  101.         
  102.         date=(led.Led_F<<24)|(led.Led_B<<16)|(led.Led_G<<8)|(led.Led_R);
  103.         return date;
  104.         
  105. }


  106. </font></font></font></font></font>
复制代码

所有资料51hei提供下载:

SK9822智能外控表面贴装SMD型LED.rar (290.1 KB, 下载次数: 40)






作者: Daisy19    时间: 2020-3-10 15:27
SK9822 LED规格书

SK9822 LED Datasheet.pdf

421.3 KB, 下载次数: 13, 下载积分: 黑币 -5


作者: hungyu72    时间: 2025-2-28 22:34
非常感謝分享!




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