標(biāo)題: P8913三路恒流256級(jí)RGB彩燈驅(qū)動(dòng)使用資料(STM32F1為例) [打印本頁]

作者: csy-2015-06    時(shí)間: 2018-10-13 09:49
標(biāo)題: P8913三路恒流256級(jí)RGB彩燈驅(qū)動(dòng)使用資料(STM32F1為例)
P9813驅(qū)動(dòng)RGB燈珠
1          P9813簡介及特點(diǎn):
2          P8913常見接線圖
因?yàn)樗械念伾际怯扇M合而成,這個(gè)RGB彩燈就是讓我們給它紅綠藍(lán)三種不同比例就可以顯示出各種顏色。R:red (紅色) G:green(綠色)B:blude(藍(lán)色)。驅(qū)動(dòng)芯片負(fù)責(zé)把三種顏色的顏色系數(shù)給到燈珠,燈珠就會(huì)顯示彩色。三原色國際色卡自行百度。
3          驅(qū)動(dòng)時(shí)序圖及工作參數(shù)
由此可得,MCU需要發(fā)送的數(shù)據(jù)
32位0起始信號(hào):        0000 0000 0000 0000 0000 0000 0000 0000
第一點(diǎn)32位灰度數(shù)據(jù):   11B7’B6’ G7’G6’R7’R6’ xxxx xxxx xxxx xxxx xxxx xxxx
第二點(diǎn)32位灰度數(shù)據(jù):   11B7’B6’ G7’G6’R7’R6’ xxxx xxxx xxxx xxxx xxxx xxxx
                                          (紅色碼  綠色碼  藍(lán)色碼)

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

4          驅(qū)動(dòng)思路4.1    發(fā)送一位數(shù)據(jù):
DIN=0/1    //數(shù)據(jù)線準(zhǔn)備數(shù)據(jù)
CIN=0   
延時(shí)
CIN=1
延時(shí)       //時(shí)鐘線拉高后變低,數(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          實(shí)戰(zhàn)代碼5.1    整合3個(gè)三原色數(shù)據(jù)到一個(gè)變量。
u32 Color_Data(unsigned int r,unsigned int g,unsigned int b) //寫入三個(gè)八位的值,返回一個(gè)32位的數(shù)值
{                                       
              u32 temp=0;

              temp |=0x03<<30;         //0xc0--> 1100 0000     1010 1010
              temp |= ((~b)&0xc0)<<22;  //取藍(lán)色最高兩位取反,得到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進(jìn)制)
                            if(data&0x80000000)//準(zhǔn)備一位數(shù)據(jù)  
                            {
                                          RGB_DATA_H;
                            }
                            else
                            {
                                          RGB_DATA_L;                   //否則寫0
                            }
                            data<<=1;//每取出一個(gè)數(shù)據(jù),讓次高位變成最高位,遍歷整個(gè)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位低電平起始信號(hào)
              RGB_Send_Data(color_data); //發(fā)送第一個(gè)32位灰度數(shù)據(jù)
              RGB_Send_Data(color_data); //發(fā)送第二個(gè)32位灰度數(shù)據(jù)

}

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


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



作者: tianqi911    時(shí)間: 2019-1-10 17:02
正需要,參考學(xué)習(xí)。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1