找回密码
 立即注册

QQ登录

只需一步,快速开始

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

SK9822智能外控表面贴装SMD型LED控制协议STM32源码,调节RGB来控制LED颜色

[复制链接]
跳转到指定楼层
楼主
ID:389034 发表于 2018-8-25 12:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

这是基于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)





评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:695658 发表于 2020-3-10 15:27 | 只看该作者
SK9822 LED规格书

SK9822 LED Datasheet.pdf

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

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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