這是基于stm32的SK9822智能外控表面貼裝SMD型LED控制協議,可以通過調節RGB來控制LED的顏色
單片機源程序如下: - <font color="rgb(102, 102, 102)"><font face="""><font style="font-size: 12px"><font color="rgb(102, 102, 102)"><font face=""">#include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #define SCL PBout(12) //SCL
- #define SDA PBout(11) //SDA
- #define Led_num 144//led數量
- #define Led_Maxnum 144
- const u8 ALed_bright=23; //0-31
- //const u32 Led_F;
- const u32 ALed_B=0;
- const u32 ALed_G=125;
- const u32 ALed_R=256;
- typedef struct
- {
- u8 Led_bright; //0-31
- u32 Led_F;
- u32 Led_B;
- u32 Led_G;
- u32 Led_R;
- }LED;
- LED led[Led_num];
- LED ledOver={0,0xE0<<5,0,0,0};
- void LED_Init(void);
- void LED_WriteOneWord(u32 DataToWrite);
- u32 Led_Date(LED led);
- void LedHavingDate(LED *led){
- int i;
-
- LED *p;
- p=led;
- for(i=0;i<1;i++){
-
- p->Led_bright=ALed_bright;
- p->Led_F=((0xE0<<5)+p->Led_bright);
- p->Led_B=ALed_B;
- p->Led_G=ALed_G;
- p->Led_R=ALed_R;
- p++;
-
-
- }
- }
- int main(void)
- { int i=0;
- delay_init(); //延時函數初始化
- LED_Init();
- LedHavingDate(led);
- while(1){
- (led[0].Led_bright)++;
- for(i=0;i<=Led_num;i++)
- {
- if(i==0)//開始幀
- LED_WriteOneWord((u32)0x00000000);
- else
- LED_WriteOneWord((u32)Led_Date(led[0]));
- }
- for(i=Led_num;i<Led_Maxnum;i++){
- LED_WriteOneWord((u32)Led_Date(ledOver));
-
- }
- delay_ms(1);
-
- LED_WriteOneWord((u32)0xFFFFFFFF);
- //delay_ms(1000);
- if(led[0].Led_bright>=30)led[0].Led_bright=23;
- }
-
-
- }
-
-
- void LED_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- void LED_WriteOneWord(u32 txd)
- {
-
- u8 t;
-
- SCL=0;
- for(t=0;t<32;t++)
- {
- SDA=(txd&0x80000000)>>31;
- txd<<=1;
- delay_us(1);
- SCL=1;
- delay_us(1);
- SCL=0;
- delay_us(1);
- }
-
- }
- u32 Led_Date(LED led){
- u32 date=0;
-
- date=(led.Led_F<<24)|(led.Led_B<<16)|(led.Led_G<<8)|(led.Led_R);
- return date;
-
- }
- </font></font></font></font></font>
復制代碼
所有資料51hei提供下載:
SK9822智能外控表面貼裝SMD型LED.rar
(290.1 KB, 下載次數: 40)
2018-8-25 17:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|