SN3193驱动

SN3193驱动

/*******************************************************************
*    SN3193 MTK 调试程序
* 1  修改GPIO口,总共有三根,包含SDB,SDA,SCK
* 2  Led_Demo1(void)函数,让灯全部亮    
  3  Led_Demo2()函数,让灯按照设置的时间呼吸              
*    文件名:SN3193drv.C
*    更新时间:2011.3.24
*******************************************************************/
#define RE_IIC_ADDRESS 0xd0 //SN3193的从地址,请参考DATASHEET
 

#define SN3193_DELAY 0x10 //此延时根据需要进行相应的调整,需要保证IIC的clk速率小于400k


#define SN3193_SDA_PIN 1 //SDA pin GPIO define
#define SN3193_SCK_PIN 2 //SCK pin GPIO define
#define SN3193_SDB_PIN 3  //SDB pin GPIO define


#ifdef  MOIBLE_PLATFORM_SC6600L
#define RE_SDA_PIN_High() //GPIO_DATA_xx_up  //data线输出高.
#define RE_SDA_PIN_Low() //GPIO_DATA_xx_dwn //data线输出低.

#define RE_SCK_PIN_High() //GPIO_SCK_xx_up  //clock线输出高.
#define RE_SCK_PIN_Low() //GPIO_SCK_xx_dwn  //clock线输出低.

#define RE_SDB_PIN_High() //GPIO_SDB_xx_up  //sdb线输出高.
#define RE_SDB_PIN_High() //GPIO_SDB_xx_dwn  //sdb线输出低.
#endif

#ifdef  MOIBLE_PLATFORM_MTK625X
#define RE_SDA_PIN_High()  GPIO_WriteIO(1, SN3193_SDA_PIN) //data线输出高.
#define RE_SDA_PIN_Low()  GPIO_WriteIO(0, SN3193_SDA_PIN) //data线输出低.

#define RE_SCK_PIN_High()  GPIO_WriteIO(1, SN3193_SCK_PIN) //clock线输出高.
#define RE_SCK_PIN_Low()  GPIO_WriteIO(0, SN3193_SCK_PIN) //clock线输出低.

#define RE_SDB_PIN_High()  GPIO_WriteIO(1, SN3193_SDB_PIN) //sdb线输出高.
#define RE_SDB_PIN_Low()  GPIO_WriteIO(0, SN3193_SDB_PIN) //sdb线输出低.
#endif

#if 1
#define RE_SDA_PIN_High()  //data线输出高.
#define RE_SDA_PIN_Low() //data线输出低.

#define RE_SCK_PIN_High() //clock线输出高.
#define RE_SCK_PIN_Low()  //clock线输出低.

#define RE_SDB_PIN_High() //sdb线输出高.
#define RE_SDB_PIN_Low() //sdb线输出低.
#endif


#define BREATH_00_0S   0
#define BREATH_01_013S   1
#define BREATH_02_026S   2
#define BREATH_03_052S   3
#define BREATH_04_104S   4
#define BREATH_05_208S  5
#define BREATH_06_416S   6
#define BREATH_07_832S  7
#define BREATH_08_1664S   8
#define BREATH_09_3328S  9
#define BREATH_10_6656S  10


static unsigned char g_Ledctrl = 0;

unsigned char RE_IIC_WriteReg(unsigned char bRegAddr, unsigned char bRegData);   
unsigned char RE_IIC_WriteRegs(unsigned char bRegAddr, unsigned char *s,unsigned char no);   

void LED_Delay_ms(unsigned long int data);
void Led_Init(void);
void Led_PowerOn(void);
void Led_PowerOff(void);
void Led_TurnOn(unsigned char Ch);
void Led_TurnOff(unsigned char Ch);
void Led_SetBrightness(unsigned char Ch,unsigned char brightness);
void Led_DataUpdate(void);
void Led_SetColor(unsigned char R,unsigned char G,unsigned char B);
void Led_SetBreathTime(unsigned char Ch, unsigned char T0,unsigned char T1,unsigned char T2,unsigned char T3,unsigned char T4);
void Led_TimeUpdate(void);
void Led_SetCurrent(unsigned char level);
void Led_PWM_ON(void);
void Led_Oneshot_ON(void);
//

 

 

 

/******************************************************************************/
//bRegAddr为SN3218寄存器地址,如:0x00,0x01...
//bRegData为要写入bRegAddr寄存器的值.
/******************************************************************************/
unsigned char RE_IIC_WriteReg(unsigned char bRegAddr, unsigned char bRegData)    
{                     
    unsigned char bMask,i,j,k;
    unsigned char blAck=0;
    unsigned char bIICAddr = (RE_IIC_ADDRESS & 0xfe);//Here for SN3218,the add is 0xC0
    RE_SDA_PIN_High();
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);//the delay time decided by customer,notice the frequency of clk should be less than 400kHz
    RE_SDA_PIN_Low();             //启动 IIC总线.start.
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    bMask = 0x80;
    for(i=0;i<8;i++)
    {   
        k=bMask & bIICAddr;
        if(k)
        {
        RE_SDA_PIN_High();
        }
         else
         {
           RE_SDA_PIN_Low();
         }
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }
   
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);           //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    //SET_SN3218_IIC_DATA_INPUT;
    RE_SDA_PIN_Low();     //此处应该把他配置成输入,外部要拉高而芯片将其拉低,完成应答,这里直接将其拉低,忽略应答
    //blAck = RE_SDA_PIN_Read();
    for (j=0; j < SN3193_DELAY; j++);
    for (j=0; j < SN3193_DELAY; j++);
    //SET_SN3218_IIC_DATA_OUTPUT;
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);

 

    //写寄存器地址
    bMask = 0x80;
    for(i=0;i<8;i++)
    {
        k=bMask & bRegAddr;
        if(k)
         {
                   RE_SDA_PIN_High();
         }
         else
         {
                   RE_SDA_PIN_Low();
         }
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);      //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    RE_SDA_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);

 


    //写寄存器数据
    bMask = 0x80;
    for(i=0;i<8;i++)
    {
        k=bMask & bRegData;
        if(k)
         {
                   RE_SDA_PIN_High();
         }
         else
         {
                   RE_SDA_PIN_Low();
         }

         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }

    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);  //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    RE_SDA_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_High();                 //停止IIC总线.stop.
    for (j=0; j < SN3193_DELAY; j++);
    RE_SDA_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);
    return blAck;         //由于此程序忽视了ack,所以本句无作用
}
/******************************************************************************/
//bRegAddr为SN3218寄存器地址,如:0x00,0x01...
//*s为要写入bRegAddr寄存器的值的首地址.
//该程序为要写入的首地址,本芯片支持地址自加,所以可以连续写入多个数据
/******************************************************************************/
unsigned char RE_IIC_WriteRegs(unsigned char bRegAddr, unsigned char *s,unsigned char no)    
{                     
    unsigned char bMask,i,j,x,k;
    unsigned char blAck=0;
    unsigned char bIICAddr = (RE_IIC_ADDRESS & 0xfe);//Here for SN3218,the add is 0xC0
    RE_SDA_PIN_High();
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);//the delay time decided by customer,notice the frequency of clk should be less than 400kHz
    RE_SDA_PIN_Low();             //启动 IIC总线.start.
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    bMask = 0x80;
    for(i=0;i<8;i++)
    {   
        k=bMask & bIICAddr;
        if(k)
        {
        RE_SDA_PIN_High();
        }
         else
         {
           RE_SDA_PIN_Low();
         }
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }
   
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);           //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    RE_SDA_PIN_Low();              //此处应该把他配置成输入,外部要拉高而芯片将其拉低,完成应答,这里直接将其拉低,忽略应答
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);

    //写寄存器地址
    bMask = 0x80;
    for(i=0;i<8;i++)
    {
        k=bMask & bRegAddr;
        if(k)
         {
                   RE_SDA_PIN_High();
         }
         else
         {
                   RE_SDA_PIN_Low();
         }
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }
    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);      //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    RE_SDA_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);

   for(x=0;x<no;x++)
   { 
    
    //写寄存器数据s
    bMask = 0x80;
    for(i=0;i<8;i++)
    {
        k=bMask & *s;
        if(k)
         {
                   RE_SDA_PIN_High();
         }
         else
         {
                   RE_SDA_PIN_Low();
         }

         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_High();
         for (j=0; j < SN3193_DELAY; j++);
         RE_SCK_PIN_Low();
         for (j=0; j < SN3193_DELAY; j++);
         bMask >>= 1;
    }

    RE_SCK_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);  //第八位地址位的时钟的下降沿,在响应的时钟脉冲期间发送器释放SDA线高
    RE_SDA_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);
    RE_SCK_PIN_Low();
    for (j=0; j < SN3193_DELAY; j++);

    s++;
   
   }

    RE_SCK_PIN_High();                 //停止IIC总线.stop.
    for (j=0; j < SN3193_DELAY; j++);
    RE_SDA_PIN_High();
    for (j=0; j < SN3193_DELAY; j++);
    return blAck;                //由于此程序忽视了ack,所以本句无作用
}
void LED_Delay_ms(unsigned long int data)
{
 unsigned short int i;
 
 while(data--)
 {
  for(i=0;i<5000;i++){}
 }
}


void Led_Init(void)
{
#ifdef  MOIBLE_PLATFORM_MTK625X
     GPIO_ModeSetup(SN3193_SDA_PIN, 0); 
     GPIO_InitIO(1, SN3193_SDA_PIN);
    
     GPIO_ModeSetup(SN3193_SCK_PIN, 0); 
     GPIO_InitIO(1, SN3193_SCK_PIN);
    
     GPIO_ModeSetup(SN3193_SDB_PIN, 0); 
     GPIO_InitIO(1, SN3193_SDB_PIN);
#endif
#ifdef  MOIBLE_PLATFORM_SC6600L
#endif

}
/*********************************************************/
//Power on by Software and hardware
/********************************************************/
void Led_PowerOn(void)
{
    RE_IIC_WriteReg(0x00, 0x00);  /*00寄存器初始化 */ 
 RE_IIC_WriteReg(0x01, 0x00);  /*01寄存器初始化*/

}
/*********************************************************/
//Power off by Software and hardware
/********************************************************/
void Led_PowerOff(void)
{
     RE_IIC_WriteReg(0x2f, 0x00);
     //或者拉低SDB,或者00寄存器写01,建议退出时候将2f寄存器写下(复位)
    
     RE_IIC_WriteReg(0x00, 0x01);  /*00寄存器 shut down */ 
     RE_IIC_WriteReg(0x1D, 0x00);  /*1d寄存器 turn off out1,out2,out3 */
    
     RE_SDB_PIN_Low();
     LED_Delay_ms(1);
}

/*************************设置RGB Led 呼吸时间***********************************/
//=0 PWM mode, =1 One slot programming mode
/********************************************************************************/
void Led_WorkMode(unsigned char mode)
{
 RE_IIC_WriteReg(0x02,mode<<5);   
}
/*************************设置RGB Led 呼吸时间***********************************/
//Ch 通道OUT1,OUT2,OUT3   Ch= 1,2,3;
//T0(time of holding off) T0= 0-15;        T0(D7-D4) 
//T1&T2(time of ramping up and hold on     T1(D7-D5)|T2(D4-D1)|X
//T3&T4(time of ramping down and hold off) T3(D7-D5)|T4(D4-D1)|X
/********************************************************************************/

void Led_SetBreathTime(unsigned char Ch, unsigned char T0,unsigned char T1,unsigned char T2,unsigned char T3,unsigned char T4)
{                             
   switch ( Ch)
   {
  case 1:
   RE_IIC_WriteReg(0x0a,T0<<4);   //T0(time of holding off)
   RE_IIC_WriteReg(0x10,(T1<<4)|(T2<<1)); //T1&T2(time of ramping up and hold on
   RE_IIC_WriteReg(0x16,(T3<<4)|(T4<<1));  //T3&T4(time of ramping down and hold off)
   break;
  case 2: 
   RE_IIC_WriteReg(0x0b,T0<<4); 
   RE_IIC_WriteReg(0x11,(T1<<4)|(T2<<1));  
   RE_IIC_WriteReg(0x17,(T3<<4)|(T4<<1));
   break;
  case 3:
   RE_IIC_WriteReg(0x0c,T0<<4);  
     RE_IIC_WriteReg(0x12,(T1<<4)|(T2<<1)); 
       RE_IIC_WriteReg(0x18,(T3<<4)|(T4<<1)); 
   break;
 
  } 
}
/***********************************************************************/
/*0a~1b为时间参数,写完还需要通过1C寄存器update到缓存里面去,使之生效*/
/***********************************************************************/
void Led_TimeUpdate(void)
{
  RE_IIC_WriteReg(0x1c,0x00);  
}

/*************************设置RGB Led 颜色***********************************/
//R (0-255), G(0-255), B(0-255)
/********************************************************************************/
void Led_SetColor(unsigned char R,unsigned char G,unsigned char B)
{
 RE_IIC_WriteReg(0x04,R);
 RE_IIC_WriteReg(0x05,G);
 RE_IIC_WriteReg(0x06,B);
 
 RE_IIC_WriteReg(0x07,0x00); //update
}

/************************************************************/
// level = 0(42mA) ,  =1(10mA) , =2(5mA) =3(30mA) =4(17.5mA) 
/************************************************************/
void Led_SetCurrent(unsigned char level)
{
 RE_IIC_WriteReg(0x03, level<<2);/*设置输出的最大电流值为17.5mA */ 
}
/***************设置单路电流值*******************************/
// Ch = 1,2,3 , brightness = 0-255 
/************************************************************/
void Led_SetBrightness(unsigned char Ch,unsigned char brightness)
{
 RE_IIC_WriteReg(0x04+Ch-1, brightness);
}
/***************Update Led 亮度*******************************/
/************************************************************/
void Led_DataUpdate(void)
{
 RE_IIC_WriteReg(0x07,0x00); //update
}
/*********************************************/
//打开Channel 1,2,3
/*********************************************/
void Led_TurnOn(unsigned char Ch)
{
  g_Ledctrl|=(1<<(Ch-1));
     RE_IIC_WriteReg(0x1D, g_Ledctrl);  /*00寄存器初始化 */ 
}
/*********************************************/
//关闭 Channel 1,2,3
/*********************************************/
void Led_TurnOff(unsigned char Ch)
{
 g_Ledctrl&=(~(1<<(Ch-1)));
 RE_IIC_WriteReg(0x1D,g_Ledctrl);
}

 

 


/*========================Demo code and Test code===========================================*/
void Led_Demo1(void)
{

  Led_Init();
  RE_SDB_PIN_High();
  LED_Delay_ms(1);
    
     Led_PowerOn();  
    
     Led_WorkMode(0); 
     Led_SetCurrent(4);   /*设置输出的最大电流值为17.5mA */ 

     Led_TurnOn(1);
     Led_TurnOn(2);
     Led_TurnOn(3);
    
     Led_SetBrightness(1,255); 
     Led_SetBrightness(2,255); 
     Led_SetBrightness(3,255);   //T0(time of holding off)   
    
     Led_DataUpdate();
 
     LED_Delay_ms(1);
}

void Led_Demo2(void)
{
  Led_Init();
  RE_SDB_PIN_High();
  LED_Delay_ms(1);
   
     Led_PowerOn();    
   Led_SetCurrent(4);         /*设置输出的最大电流值为17.5mA */
   
     Led_SetColor(255,255,255); //Red = 255 //Green = 255  Blue = 255, 缺省是白光效果
    
  //呼吸时间设置
     Led_SetBreathTime(1,BREATH_00_0S,BREATH_03_052S,BREATH_00_0S,BREATH_03_052S,BREATH_05_208S);
     Led_SetBreathTime(2,BREATH_02_026S,BREATH_03_052S,BREATH_00_0S,BREATH_03_052S,BREATH_04_104S);
     Led_SetBreathTime(3,BREATH_03_052S,BREATH_03_052S,BREATH_00_0S,BREATH_03_052S,BREATH_00_0S);
     Led_TimeUpdate();/*0a~1b为时间参数,写完还需要通过1C寄存器update到缓存里面去,使之生效*/ 
   
    Led_WorkMode(1);  /*使用One shot programming方式控制,各路输出将按照0a~1b所设置的时间开始跑,如不结束该模式则不停止,此时寄存器02h的状态为30 */ 

   
     LED_Delay_ms(1);
}

/***********************颜色参考**R****G****B***************************************************
const unsigned char color01[3]={0x00,0x00,0x00};  //黑色     0  0  0  
const unsigned char color02[3]={0x29,0x24,0x21};  //象牙黑    41 36 33 
const unsigned char color03[3]={0xC0,0xC0,0xC0};  //灰色     192 192 192 
const unsigned char color04[3]={0x80,0x8A,0x87};  //冷灰     128 138 135 
const unsigned char color05[3]={0x70,0x80,0x69};  //石板灰    112 128 105 
const unsigned char color06[3]={0x80,0x80,0x69};  //暖灰色    128 128 105 
const unsigned char color07[3]={0xFF,0xFF,0xFF};   //白色     255 255 255 
const unsigned char color08[3]={0xFA,0xEB,0xD7};   //古董白    250 235 215 
const unsigned char color09[3]={0xF0,0xFF,0xFF};   //天蓝色    240 255 255 
const unsigned char color10[3]={0xF5,0xF5,0xF5};   //白烟     245 245 245 
const unsigned char color11[3]={0xFF,0xFF,0xCD};   //白杏仁    255 235 205 
const unsigned char color12[3]={0xFF,0xF8,0xDC};   //cornsilk   255 248 220 
const unsigned char color13[3]={0xFC,0xE6,0xC9};   //蛋壳色    252 230 201 
const unsigned char color14[3]={0xFF,0xFA,0xF0};   //花白     255 250 240 
const unsigned char color15[3]={0xDC,0xDC,0xDC};   //gainsboro   220 220 220 
const unsigned char color16[3]={0xF8,0xF8,0xFF};   //ghostWhite  248 248 255 
const unsigned char color17[3]={0xF0,0xFF,0xF0};   //蜜露橙    240 255 240 
const unsigned char color18[3]={0xFA,0xFF,0xF0};   //象牙白    250 255 240 
const unsigned char color19[3]={0xFA,0xF0,0xE6};   //亚麻色    250 240 230 
const unsigned char color20[3]={0xFF,0xDE,0xAD};   //navajoWhite  255 222 173 
const unsigned char color21[3]={0xFD,0xF5,0xE6};  //old lace   253 245 230 
const unsigned char color22[3]={0xFF,0xF5,0xEE};  //海贝壳色   255 245 238 
const unsigned char color23[3]={0xFF,0xFA,0xFA};  //雪白     255 250 250 
const unsigned char color24[3]={0xFF,0x00,0x00};  //红色     255 0 0   
const unsigned char color25[3]={0x9C,0x66,0x1F};  //砖红     156 102 31 
const unsigned char color26[3]={0xE3,0x17,0x0D};  //镉红     227 23 13 
const unsigned char color27[3]={0xFF,0x7F,0x50};  //珊瑚色    255 127 80 
const unsigned char color28[3]={0xB2,0x22,0x22};  //耐火砖红   178 34 34 
const unsigned char color29[3]={0xB0,0x17,0x1F};  //印度红    176 23 31 
const unsigned char color30[3]={0xB0,0x30,0x60};  //栗色     176 48 96 
const unsigned char color31[3]={0xFF,0xC0,0xCB};  //粉红     255 192 203 
const unsigned char color32[3]={0x87,0x26,0x57};  //草莓色    135 38 87 
const unsigned char color33[3]={0xFA,0x80,0x72};  //橙红色    250 128 114 
const unsigned char color34[3]={0xFF,0x63,0x47};  //蕃茄红    255 99 71 
const unsigned char color35[3]={0xFF,0x45,0x00};  //桔红     255 69 0  
const unsigned char color36[3]={0xFF,0x00,0xFF};  //深红色    255 0 255  
const unsigned char color37[3]={0xFF,0xFF,0x00};   //黄色      255 255 0  
const unsigned char color38[3]={0xE3,0xCF,0x57};   //香蕉色     227 207 87 
const unsigned char color39[3]={0xFF,0x99,0x12};   //镉黄      255 153 18 
const unsigned char color40[3]={0xEB,0x8E,0x55};   //dougello    235 142 85 
const unsigned char color41[3]={0xFF,0xE3,0x84};   //forum gold   255 227 132 
const unsigned char color42[3]={0xFF,0xD7,0x00};   //金黄色     255 215 0  
const unsigned char color43[3]={0xDA,0xA5,0x69};   //黄花色     218 165 105 
const unsigned char color44[3]={0xE3,0xA8,0x69};   //瓜色      227 168 105 
const unsigned char color45[3]={0xFF,0x61,0x00};   //橙色      255 97 0  
const unsigned char color46[3]={0xFF,0x61,0x03};   //镉橙      255 97 3  
const unsigned char color47[3]={0xED,0x91,0x21};   //胡萝卜色    237 145 33 
const unsigned char color48[3]={0xFF,0x80,0x00};   //桔黄      255 128 0  
const unsigned char color49[3]={0xF5,0xDE,0xB3};   //淡黄色     245 222 179 
const unsigned char color50[3]={0x80,0x2A,0x2A};   //棕色      128 42 42 
const unsigned char color51[3]={0xA3,0x94,0x80};   //米色      163 148 128 
const unsigned char color52[3]={0x8A,0x36,0x0F};   //锻浓黄土色   138 54 15 
const unsigned char color53[3]={0x87,0x33,0x24};   //锻棕土色    135 51 36 
const unsigned char color54[3]={0xD2,0x69,0x1E};   //巧克力色    210 105 30 
const unsigned char color55[3]={0xFF,0x7D,0x40};   //肉色      255 125 64 
const unsigned char color56[3]={0xF0,0xE6,0x8C};   //黄褐色     240 230 140 
const unsigned char color57[3]={0xBC,0x8F,0x8F};  //玫瑰红     188 143 143 
const unsigned char color58[3]={0xC7,0x61,0x14};  //肖贡土色    199 97 20 
const unsigned char color59[3]={0x73,0x4A,0x12};  //标土棕     115 74 18 
const unsigned char color60[3]={0x5E,0x26,0x12};  //乌贼墨棕    94 38 18 
const unsigned char color61[3]={0xA0,0x52,0x2D};  //赫色      160 82 45 
const unsigned char color62[3]={0x8B,0x45,0x13};  //马棕色     139 69 19 
const unsigned char color63[3]={0xF4,0xA4,0x60};  //沙棕色     244 164 96 
const unsigned char color64[3]={0xD2,0xB4,0x8C};  //棕褐色     210 180 140 
const unsigned char color65[3]={0x00,0x00,0xFF};  //蓝色      0 0 255   
const unsigned char color66[3]={0x3D,0x59,0xAB};  //钴色      61 89 171 
const unsigned char color67[3]={0x1E,0x90,0xFF};  //dodger blue   30 144 255 
const unsigned char color68[3]={0x0B,0x17,0x46};  //jackie blue   11 23 70 
const unsigned char color69[3]={0x03,0xA8,0x9E};  //锰蓝      3 168 158  
const unsigned char color70[3]={0x19,0x19,0x70};  //深蓝色     25 25 112 
const unsigned char color71[3]={0x33,0xA1,0xC9};  //孔雀蓝     51 161 201 
const unsigned char color72[3]={0x00,0xC7,0x8C};   //土耳其玉色   0 199 140  
const unsigned char color73[3]={0xB0,0xE0,0xE6};  //浅灰蓝色   176 224 230 
const unsigned char color74[3]={0x41,0x69,0xE1};   //品蓝     65 105 225 
const unsigned char color75[3]={0x6A,0x5A,0xCD};   //石板蓝    106 90 205 
const unsigned char color76[3]={0x87,0xCE,0xEB};   //天蓝     135 206 235 
const unsigned char color77[3]={0x00,0xFF,0xFF};   // 青色     0 255 255  
const unsigned char color78[3]={0x38,0x5E,0x0F};   // 绿土     56 94 15 
const unsigned char color79[3]={0x08,0x2E,0x54};   // 靛青     8 46 84  
const unsigned char color80[3]={0x7F,0xFF,0xD4};   // 碧绿色    127 255 212 
const unsigned char color81[3]={0x40,0xE0,0xD0};   // 青绿色    64 224 208 
const unsigned char color82[3]={0x00,0xFF,0x00};   // 绿色     0 255 0   
const unsigned char color83[3]={0x7F,0xFF,0x00};   // 黄绿色    127 255 0  
const unsigned char color84[3]={0x3D,0x91,0x40};   // 钴绿色    61 145 64 
const unsigned char color85[3]={0x00,0xC9,0x57};   // 翠绿色    0 201 87  
const unsigned char color86[3]={0x22,0x8B,0x22};   // 森林绿    34 139 34 
const unsigned char color87[3]={0x7C,0xFC,0x00};   // 草地绿    124 252 0  
const unsigned char color88[3]={0x32,0xCD,0x32};   // 酸橙绿    50 205 50 
const unsigned char color89[3]={0xBD,0xFC,0xC9};   // 薄荷色    189 252 201 
const unsigned char color90[3]={0x6B,0x8E,0x23};   // 草绿色    107 142 35 
const unsigned char color91[3]={0x30,0x80,0x14};   // 暗绿色    48 128 20 
const unsigned char color92[3]={0x2E,0x8B,0x57};   // 海绿色    46 139 87 
const unsigned char color93[3]={0x00,0xFF,0x7F};   // 嫩绿色    0 255 127  
const unsigned char color94[3]={0xA0,0x20,0xF0};   // 紫色     160 32 240 
const unsigned char color95[3]={0x8A,0x2B,0xE2};   // 紫罗蓝色   138 43 226 
const unsigned char color96[3]={0xA0,0x66,0xD3};   // jasoa     160 102 21
const unsigned char color97[3]={0x99,0x33,0xFA};   // 湖紫色    153 51 250 
const unsigned char color98[3]={0xDA,0x70,0xD6};   // 淡紫色    218 112 214 
const unsigned char color99[3]={0xDD,0xA0,0xDD};   // 梅红色    221 160 221 
//以上为一些颜色比例,可以参考下
***************************************************************************************************/

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值