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
//以上为一些颜色比例,可以参考下
***************************************************************************************************/