12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include "sk9822.h"
- //写一个字节数据函数
- void SK9822_Write_Byte(unsigned char Data)
- {
- unsigned char i=0;
- for(i=0;i<8;i++)
- {
- //SDI=(Data&0x80)>>7;
- if(Data&0x80)
- {
- SK9822_SDI_PIN_H();
- }else
- {
- SK9822_SDI_PIN_L();
- }
- Data<<=1;
- delay_us(1);
- SK9822_SCK_PIN_H();
- delay_us(1);
- SK9822_SCK_PIN_L();
- delay_us(1);
- }
- // unsigned char i;
- // unsigned char txdata=Data;
- // for(i = 0; i < 8; i++)
- // {
- // SK9822_SCK_PIN_L();
- // delay_us(1);
- // //数据发送
- // if(txdata & 0x80){
- // SK9822_SDI_PIN_H();
- // }else{
- // SK9822_SDI_PIN_L();
- // }
- // txdata <<= 1;
- // delay_us(1);
- // SK9822_SCK_PIN_H();
- // delay_us(1);
- // }
- // SK9822_SCK_PIN_L();
- }
- //函数名称:SK9822写数据函数
- //输入参数:Bri 亮度调整 高3位固定为1 取值范围00000-11111
- //输入参数:RED 红色灰度值 取值范围0-255
- //输入参数:GREEN 绿色灰度值
- //输入参数:BLUE 蓝色灰度值
- void SK9822_Write_Data(unsigned char Bri,unsigned char RED,unsigned char GREEN,unsigned char BLUE)
- {
- char i=0;
- SK9822_Write_Byte(0x00);//写开始帧
- SK9822_Write_Byte(0x00);
- SK9822_Write_Byte(0x00);
- SK9822_Write_Byte(0x00);
- for(i=0;i<3;i++)
- {
- SK9822_Write_Byte(Bri);//写亮度值
- SK9822_Write_Byte(BLUE);//写蓝色灰度
- SK9822_Write_Byte(GREEN);//写绿色灰度
- SK9822_Write_Byte(RED);//写红色灰度
- }
- SK9822_Write_Byte(0xFF);//写结束帧
- SK9822_Write_Byte(0xFF);
- SK9822_Write_Byte(0xFF);
- SK9822_Write_Byte(0xFF);
- }
- void SK9822_Intit(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(SK9822_RCC, ENABLE); //使能A端口时钟
- GPIO_InitStructure.GPIO_Pin =SK9822_SCK_PIN|SK9822_SDI_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
- GPIO_Init(SK9822_PORT, &GPIO_InitStructure); //初始化GPIOB
- GPIO_SetBits(SK9822_PORT,SK9822_SCK_PIN|SK9822_SDI_PIN);
- SK9822_Write_Data(0,0,0,0);
- }
|