找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7000|回復: 1
打印 上一主題 下一主題
收起左側(cè)

P8913三路恒流256級RGB彩燈驅(qū)動使用資料(STM32F1為例)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:237239 發(fā)表于 2018-10-13 09:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
P9813驅(qū)動RGB燈珠
1          P9813簡介及特點:
2          P8913常見接線圖
因為所有的顏色都是由三原色組合而成,這個RGB彩燈就是讓我們給它紅綠藍三種不同比例就可以顯示出各種顏色。R:red (紅色) G:green(綠色)B:blude(藍色)。驅(qū)動芯片負責把三種顏色的顏色系數(shù)給到燈珠,燈珠就會顯示彩色。三原色國際色卡自行百度。
3          驅(qū)動時序圖及工作參數(shù)
  • 前32 位“0”為起始幀,在Cin 上升沿時打入,并且時序DIN要先于CIN;
                  ② 標志位為兩個“1”;
                   校驗數(shù)據(jù)“B7’”與“B6’”為藍色灰度數(shù)據(jù)的“B7”與“B6”的反碼;
                  ④ 灰度級數(shù)據(jù)要高位先入,并且是藍綠紅順序。
由此可得,MCU需要發(fā)送的數(shù)據(jù)
32位0起始信號:        0000 0000 0000 0000 0000 0000 0000 0000
第一點32位灰度數(shù)據(jù):   11B7’B6’ G7’G6’R7’R6’ xxxx xxxx xxxx xxxx xxxx xxxx
第二點32位灰度數(shù)據(jù):   11B7’B6’ G7’G6’R7’R6’ xxxx xxxx xxxx xxxx xxxx xxxx
                                          (紅色碼  綠色碼  藍色碼)

可見需要延時操作,單片機執(zhí)行匯編代碼需要時間,所以延時不用太久1us就行。
此外,單片機要發(fā)送的數(shù)據(jù)為

4          驅(qū)動思路4.1    發(fā)送一位數(shù)據(jù):
DIN=0/1    //數(shù)據(jù)線準備數(shù)據(jù)
CIN=0   
延時
CIN=1
延時       //時鐘線拉高后變低,數(shù)據(jù)傳輸?shù)叫酒瑑?nèi)

4.2    發(fā)送32位數(shù)據(jù)
發(fā)送32位數(shù)據(jù)
For(i=0;i<32;i++)
{
發(fā)送一位數(shù)據(jù):
}
5          實戰(zhàn)代碼5.1    整合3個三原色數(shù)據(jù)到一個變量。
u32 Color_Data(unsigned int r,unsigned int g,unsigned int b) //寫入三個八位的值,返回一個32位的數(shù)值
{                                       
              u32 temp=0;

              temp |=0x03<<30;         //0xc0--> 1100 0000     1010 1010
              temp |= ((~b)&0xc0)<<22;  //取藍色最高兩位取反,得到B7’ B6’
              temp |= ((~g)&0xc0) <<20; //取綠色最高兩位取反,得到G7’G6’
              temp |= ((~r)&0xc0) <<18;   //取綠色最高兩位取反,得到R7’R6’
              temp |= b<<16;
              temp |= g<<8;
              temp |= r<<0;

              return temp;
}


5.2    MCU發(fā)送數(shù)據(jù)到芯片
void RGB_Send_Data(u32 data)
{
              unsigned int i;
              for(i=0;i<32;i++)
              {
//取data的最高位,如果是1就寫1(注意按位操作是寫16進制)
                            if(data&0x80000000)//準備一位數(shù)據(jù)  
                            {
                                          RGB_DATA_H;
                            }
                            else
                            {
                                          RGB_DATA_L;                   //否則寫0
                            }
                            data<<=1;//每取出一個數(shù)據(jù),讓次高位變成最高位,遍歷整個32位的data值
                            RGB_CLK_L;
                            Delay_us(1);
                            RGB_CLK_H;
                            Delay_us(1);
                            /*以上四步操作令CLK產(chǎn)生上升沿*/
              }
}

5.3    最終的控制函數(shù)
void RGB_Color_Control(unsigned int r,unsigned int g,unsigned int b)
{
              u32 color_data;
              color_data= Color_Data(r,g,b) ;

              RGB_Send_Data(0);//先發(fā)送32位低電平起始信號
              RGB_Send_Data(color_data); //發(fā)送第一個32位灰度數(shù)據(jù)
              RGB_Send_Data(color_data); //發(fā)送第二個32位灰度數(shù)據(jù)

}

5.4    IO口初始化略(推挽輸出)


全部資料51hei下載地址:
P8913驅(qū)動RGB彩燈(stm32F1為例).zip (1.07 MB, 下載次數(shù): 72)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:275111 發(fā)表于 2019-1-10 17:02 | 只看該作者
正需要,參考學習。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表