基本操作:
本文只涉及到TFT屏的操作。控制器重要的时钟信号,VCLK为最基本的像素时钟信号,VSYNC为刷新频率,也称为场频,HSYNC为行频。板子上是4.3寸的TFT屏。
结合上面的图可以得知,场率即刷新频率典型值为60HZ,不得超90HZ。像素时钟信号VCLK典型9MHZ,不超15MHZ。
VCLK=HCLK/[(CLKVAL+1)*2],若HCLK=100MHZ,如果取VCLK=9MHZ,那么CLKVAL=4.5,取整为4,那么此时VLCK=10MHZ。
取VSPW=10-1 VFPD=2-1VBPD=2-1 HSPW=40-1 HFPD=10-1HBPD=10-1
那么行频=VCLK / (HSPW+1 +HFPD+1 HBPD+1 + HOZVAL+1)=10M/(40+10+10+480)=18.51KHZ
场频=行频 / (VSPW+1 VFPD+1 +VBPD+1 + LINEVAL+1)=18.51KHZ/(10+2+2+272)=64.7HZ
程序如下:
int main(void)
{
char ch;
NF_Init();
NF_Read((u8*)0x32000000, (ulong)0x1000, 0x2000); //copy program to sdram
init_uart0();
while (1)
{
printf("\r\n##### Test TFT LCD #####\r\n");
printf("[1] TFT480272 8Bit\n\r");
printf("[2] TFT480272 16Bit\n\r");
printf("Enter your selection: ");
putchar((ch = getchar()));
switch (ch)
{
case '1':
{
Test_Lcd_Tft_8Bit_480272();
break;
}
case '2':
{
Test_Lcd_Tft_16Bit_480272();
break;
}
default:
break;
}
}
}
/*
* ÒÔ480*272,8bppµÄÏÔʾģʽ²âÊÔTFT LCD
*/
void Test_Lcd_Tft_8Bit_480272(void)
{
Lcd_Port_Init(); // ÉèÖÃLCDÒý½Å
Tft_Lcd_Init(MODE_TFT_8BIT_480272); // ³õʼ»¯LCD¿ØÖÆÆ÷
Lcd_PowerEnable(0, 1); // ÉèÖÃLCD_PWRENÓÐЧ£¬ËüÓÃÓÚ´ò¿ªLCDµÄµçÔ´
Lcd_EnvidOnOff(1); // ʹÄÜLCD¿ØÖÆÆ÷Êä³öÐźÅ
Lcd_Palette8Bit_Init(); // ³õʼ»¯µ÷É«°å
ClearScr(0x0); // ÇåÆÁ£¬ºÚÉ«
printf("[TFT 64K COLOR(16bpp) LCD TEST]\n");
printf("1. Press any key to draw line\n");
getchar();
DrawLine(0 , 0 , 479, 0 , 0); // ÑÕɫΪDEMO256pal[0]
DrawLine(0 , 0 , 0 , 271, 1); // ÑÕɫΪDEMO256pal[1]
DrawLine(479, 0 , 479, 271, 2); // ¡¡
DrawLine(0 , 271, 479, 271, 4);
DrawLine(0 , 0 , 479, 271, 8);
DrawLine(479, 0 , 0 , 271, 16);
DrawLine(240, 0 , 240, 271, 32);
DrawLine(0 , 136, 479, 136, 64);
printf("2. Press any key to draw circles\n");
getchar();
Mire();
printf("3. Press any key to fill the screem with one color\n");
getchar();
ClearScr(128); // Êä³öµ¥É«Í¼Ïñ£¬ÑÕɫΪDEMO256pal[128]
printf("4. Press any key to fill the screem by temporary palette\n");
getchar();
ClearScrWithTmpPlt(0x0000ff); // Êä³öµ¥É«Í¼Ïñ£¬ÑÕɫΪÀ¶É«
printf("5. Press any key to fill the screem by palette\n");
getchar();
DisableTmpPlt(); // ¹Ø±ÕÁÙʱµ÷É«°å¼Ä´æÆ÷
ChangePalette(0xffff00); // ¸Ä±äÕû¸öµ÷É«°åΪ»ÆÉ«£¬Êä³öµ¥É«Í¼Ïñ
printf("6. Press any key stop the testing\n");
getchar();
Lcd_EnvidOnOff(0);
}
/*
* ÒÔ480*272,16bppµÄÏÔʾģʽ²âÊÔTFT LCD
*/
void Test_Lcd_Tft_16Bit_480272(void)
{
Lcd_Port_Init(); // ÉèÖÃLCDÒý½Å
Tft_Lcd_Init(MODE_TFT_16BIT_480272); // ³õʼ»¯LCD¿ØÖÆÆ÷
Lcd_PowerEnable(0, 1); // ÉèÖÃLCD_PWRENÓÐЧ£¬ËüÓÃÓÚ´ò¿ªLCDµÄµçÔ´
Lcd_EnvidOnOff(1); // ʹÄÜLCD¿ØÖÆÆ÷Êä³öÐźÅ
ClearScr(0x0); // ÇåÆÁ£¬ºÚÉ«
printf("[TFT 64K COLOR(16bpp) LCD TEST]\n");
printf("1. Press any key to draw line\n");
getchar();
DrawLine(0 , 0 , 479, 0 , 0xff0000); // ºìÉ«
DrawLine(0 , 0 , 0 , 271, 0x00ff00); // ÂÌÉ«
DrawLine(479, 0 , 479, 271, 0x0000ff); // À¶É«
DrawLine(0 , 271, 479, 271, 0xffffff); // °×É«
DrawLine(0 , 0 , 479, 271, 0xffff00); // »ÆÉ«
DrawLine(479, 0 , 0 , 271, 0x8000ff); // ×ÏÉ«
DrawLine(240, 0 , 240, 271, 0xe6e8fa); // ÒøÉ«
DrawLine(0 , 136, 479, 136, 0xcd7f32); // ½ðÉ«
printf("2. Press any key to draw circles\n");
getchar();
Mire();
printf("3. Press any key to fill the screem with one color\n");
getchar();
ClearScr(0xff0000); // ºìÉ«
printf("4. Press any key to fill the screem by temporary palette\n");
getchar();
ClearScrWithTmpPlt(0xb3ee3a); // »ÆÉ«
printf("5. Press any key stop the testing\n");
getchar();
Lcd_EnvidOnOff(0);
}
void Tft_Lcd_Init(int type)
{
switch(type)
{
case MODE_TFT_8BIT_480272:
/*
* ÉèÖÃLCD¿ØÖÆÆ÷µÄ¿ØÖƼĴæÆ÷LCDCON1~5
* 1. LCDCON1:
* ÉèÖÃVCLKµÄƵÂÊ£ºVCLK(Hz) = HCLK/[(CLKVAL+1)x2]
* Ñ¡ÔñLCDÀàÐÍ: TFT LCD
* ÉèÖÃÏÔʾģʽ: 8BPP
* ÏȽûÖ¹LCDÐźÅÊä³ö
* 2. LCDCON2/3/4:
* ÉèÖÿØÖÆÐźŵÄʱ¼ä²ÎÊý
* ÉèÖ÷ֱæÂÊ£¬¼´ÐÐÊý¼°ÁÐÊý
* ÏÖÔÚ£¬¿ÉÒÔ¸ù¾Ý¹«Ê½¼ÆËã³öÏÔʾÆ÷µÄƵÂÊ£º
* µ±HCLK=100MHzʱ£¬
* Frame Rate = 1/[{(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)}x
* {(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)}x
* {2x(CLKVAL+1)/(HCLK)}]
* = 60Hz
* 3. LCDCON5:
* ÉèÖÃÏÔʾģʽΪ8BPPʱ£¬µ÷É«°åÖеÄÊý¾Ý¸ñʽ: 5:6:5
* ÉèÖÃHSYNC¡¢VSYNCÂö³åµÄ¼«ÐÔ(ÕâÐèÒª²Î¿¼¾ßÌåLCDµÄ½Ó¿ÚÐźÅ): ·´×ª
* ×Ö½Ú½»»»Ê¹ÄÜ
*/
rLCDCON1 = (CLKVAL_TFT_480272<<8) | (LCDTYPE_TFT<<5) | \
(BPPMODE_8BPP<<1) | (ENVID_DISABLE<<0);
rLCDCON2 = (VBPD_480272<<24) | (LINEVAL_TFT_480272<<14) | \
(VFPD_480272<<6) | (VSPW_480272);
rLCDCON3 = (HBPD_480272<<19) | (HOZVAL_TFT_480272<<8) | (HFPD_480272);
rLCDCON4 = HSPW_480272;
rLCDCON5 = (FORMAT8BPP_565<<11) | (HSYNC_INV<<9) | (VSYNC_INV<<8) | \
(BSWP<<1);
/*
* ÉèÖÃLCD¿ØÖÆÆ÷µÄµØÖ·¼Ä´æÆ÷LCDSADDR1~3
* Ö¡ÄÚ´æÓëÊÓ¿Ú(view point)ÍêÈ«ÎǺϣ¬
* ͼÏñÊý¾Ý¸ñʽÈçÏÂ(8BPPʱ£¬Ö¡»º³åÇøÖеÄÊý¾ÝΪµ÷É«°åÖеÄË÷ÒýÖµ)£º
* |----PAGEWIDTH----|
* y/x 0 1 2 479
* 0 idx idx idx ... idx
* 1 idx idx idx ... idx
* 1. LCDSADDR1:
* ÉèÖÃLCDBANK¡¢LCDBASEU
* 2. LCDSADDR2:
* ÉèÖÃLCDBASEL: Ö¡»º³åÇøµÄ½áÊøµØÖ·A[21:1]
* 3. LCDSADDR3:
* OFFSIZEµÈÓÚ0£¬PAGEWIDTHµÈÓÚ(480/2)
*/
rLCDSADDR1 = ((LCDFRAMEBUFFER>>22)<<21) | LOWER21BITS(LCDFRAMEBUFFER>>1);
rLCDSADDR2 = LOWER21BITS((LCDFRAMEBUFFER+ \
(LINEVAL_TFT_480272+1)*(HOZVAL_TFT_480272+1)*1)>>1);
rLCDSADDR3 = (0<<11) | (LCD_XSIZE_TFT_480272/2);
/* ½ûÖ¹ÁÙʱµ÷É«°å¼Ä´æÆ÷ */
rTPAL = 0;
fb_base_addr = LCDFRAMEBUFFER;
bpp = 8;
xsize = 480;
ysize = 272;
break;
case MODE_TFT_16BIT_480272:
/*
* ÉèÖÃLCD¿ØÖÆÆ÷µÄ¿ØÖƼĴæÆ÷LCDCON1~5
* 1. LCDCON1:
* ÉèÖÃVCLKµÄƵÂÊ£ºVCLK(Hz) = HCLK/[(CLKVAL+1)x2]
* Ñ¡ÔñLCDÀàÐÍ: TFT LCD
* ÉèÖÃÏÔʾģʽ: 16BPP
* ÏȽûÖ¹LCDÐźÅÊä³ö
* 2. LCDCON2/3/4:
* ÉèÖÿØÖÆÐźŵÄʱ¼ä²ÎÊý
* ÉèÖ÷ֱæÂÊ£¬¼´ÐÐÊý¼°ÁÐÊý
* ÏÖÔÚ£¬¿ÉÒÔ¸ù¾Ý¹«Ê½¼ÆËã³öÏÔʾÆ÷µÄƵÂÊ£º
* µ±HCLK=100MHzʱ£¬
* Frame Rate = 1/[{(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)}x
* {(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)}x
* {2x(CLKVAL+1)/(HCLK)}]
* = 60Hz
* 3. LCDCON5:
* ÉèÖÃÏÔʾģʽΪ16BPPʱµÄÊý¾Ý¸ñʽ: 5:6:5
* ÉèÖÃHSYNC¡¢VSYNCÂö³åµÄ¼«ÐÔ(ÕâÐèÒª²Î¿¼¾ßÌåLCDµÄ½Ó¿ÚÐźÅ): ·´×ª
* °ë×Ö(2×Ö½Ú)½»»»Ê¹ÄÜ
*/
rLCDCON1 = (CLKVAL_TFT_480272<<8) | (LCDTYPE_TFT<<5) | \
(BPPMODE_16BPP<<1) | (ENVID_DISABLE<<0);
rLCDCON2 = (VBPD_480272<<24) | (LINEVAL_TFT_480272<<14) | \
(VFPD_480272<<6) | (VSPW_480272);
rLCDCON3 = (HBPD_480272<<19) | (HOZVAL_TFT_480272<<8) | (HFPD_480272);
rLCDCON4 = HSPW_480272;
rLCDCON5 = (FORMAT8BPP_565<<11) | (HSYNC_INV<<9) | (VSYNC_INV<<8) | \
(HWSWP<<1);
/*
* ÉèÖÃLCD¿ØÖÆÆ÷µÄµØÖ·¼Ä´æÆ÷LCDSADDR1~3
* Ö¡ÄÚ´æÓëÊÓ¿Ú(view point)ÍêÈ«ÎǺϣ¬
* ͼÏñÊý¾Ý¸ñʽÈçÏ£º
* |----PAGEWIDTH----|
* y/x 0 1 2 639
* 0 rgb rgb rgb ... rgb
* 1 rgb rgb rgb ... rgb
* 1. LCDSADDR1:
* ÉèÖÃLCDBANK¡¢LCDBASEU
* 2. LCDSADDR2:
* ÉèÖÃLCDBASEL: Ö¡»º³åÇøµÄ½áÊøµØÖ·A[21:1]
* 3. LCDSADDR3:
* OFFSIZEµÈÓÚ0£¬PAGEWIDTHµÈÓÚ(640*2/2)
*/
rLCDSADDR1 = ((LCDFRAMEBUFFER>>22)<<21) | LOWER21BITS(LCDFRAMEBUFFER>>1);
rLCDSADDR2 = LOWER21BITS((LCDFRAMEBUFFER+ \
(LINEVAL_TFT_480272+1)*(HOZVAL_TFT_480272+1)*2)>>1);
rLCDSADDR3 = (0<<11) | (LCD_XSIZE_TFT_480272*2/2);
/* ½ûÖ¹ÁÙʱµ÷É«°å¼Ä´æÆ÷ */
rTPAL = 0;
fb_base_addr = LCDFRAMEBUFFER;
bpp = 16;
xsize = 480;
ysize = 272;
break;
default:
break;
}
}
/*
* ÉèÖõ÷É«°å
*/
void Lcd_Palette8Bit_Init(void)
{
int i;
volatile unsigned int *palette;
rLCDCON5 |= (FORMAT8BPP_565<<11); // ÉèÖõ÷É«°åÖÐÊý¾Ý¸ñʽΪ5:6:5
palette = (volatile unsigned int *)rPALETTE;
for (i = 0; i < 256; i++)
*palette++ = DEMO256pal[i];
}
/*
* ¸Ä±äµ÷É«°åΪһÖÖÑÕÉ«
* ÊäÈë²ÎÊý£º
* color: ÑÕɫֵ£¬¸ñʽΪ0xRRGGBB
*/
void ChangePalette(u32 color)
{
int i;
unsigned char red, green, blue;
u32 *palette;
palette=(u32 *)rPALETTE;
for (i = 0; i < 256; i++)
{
red = (color >> 19) & 0xff;
green = (color >> 10) & 0xff;
blue = (color >> 3) & 0xff;
color = (red << 11) | (green << 5) | blue; // ¸ñʽ5:6:5
while ((rLCDCON5>>16) == 2); // µÈ´ýÖ±µ½VSTATUS²»Îª¡±ÓÐЧ¡±
*palette++ = color;
}
}
/*
* ÉèÖÃÊÇ·ñÊä³öLCDµçÔ´¿ª¹ØÐźÅLCD_PWREN
* ÊäÈë²ÎÊý£º
* invpwren: 0 - LCD_PWRENÓÐЧʱΪÕý³£¼«ÐÔ
* 1 - LCD_PWRENÓÐЧʱΪ·´×ª¼«ÐÔ
* pwren: 0 - LCD_PWRENÊä³öÓÐЧ
* 1 - LCD_PWRENÊä³öÎÞЧ
*/
void Lcd_PowerEnable(int invpwren, int pwren)
{
rGPGCON = (rGPGCON & (~(3<<8))) | (3<<8); // GPG4ÓÃ×÷LCD_PWREN
rGPGUP = (rGPGUP & (~(1<<4))) | (1<<4); // ½ûÖ¹ÄÚ²¿ÉÏÀ
rLCDCON5 = (rLCDCON5 & (~(1<<5))) | (invpwren<<5); // ÉèÖÃLCD_PWRENµÄ¼«ÐÔ: Õý³£/·´×ª
rLCDCON5 = (rLCDCON5 & (~(1<<3))) | (pwren<<3); // ÉèÖÃÊÇ·ñÊä³öLCD_PWREN
}
/*
* ÉèÖÃLCD¿ØÖÆÆ÷ÊÇ·ñÊä³öÐźÅ
* ÊäÈë²ÎÊý£º
* onoff:
* 0 : ¹Ø±Õ
* 1 : ´ò¿ª
*/
void Lcd_EnvidOnOff(int onoff)
{
if (onoff == 1)
rLCDCON1 |= 1; // ENVID ON
else
rLCDCON1 &= 0x3fffe; // ENVID Off
}
/*
* ʹÓÃÁÙʱµ÷É«°å¼Ä´æÆ÷Êä³öµ¥É«Í¼Ïñ
* ÊäÈë²ÎÊý£º
* color: ÑÕɫֵ£¬¸ñʽΪ0xRRGGBB
*/
void ClearScrWithTmpPlt(u32 color)
{
rTPAL = (1<<24)|((color & 0xffffff)<<0);
}
/*
* ֹͣʹÓÃÁÙʱµ÷É«°å¼Ä´æÆ÷
*/
void DisableTmpPlt(void)
{
rTPAL = 0;
}
RGB颜色对照表
#FFFFFF |
#FFFFF0 |
#FFFFE0 |
#FFFF00 |
#FFFAFA |
#FFFAF0 |
#FFFACD |
#FFF8DC |
#FFF68F |
#FFF5EE |
#FFF0F5 |
#FFEFDB |
#FFEFD5 |
#FFEC8B |
#FFEBCD |
#FFE7BA |
#FFE4E1 |
#FFE4C4 |
#FFE4B5 |
#FFE1FF |
#FFDEAD |
#FFDAB9 |
#FFD700 |
#FFD39B |
#FFC1C1 |
#FFC125 |
#FFC0CB |
#FFBBFF |
#FFB90F |
#FFB6C1 |
#FFB5C5 |
#FFAEB9 |
#FFA54F |
#FFA500 |
#FFA07A |
#FF8C69 |
#FF8C00 |
#FF83FA |
#FF82AB |
#FF8247 |
#FF7F50 |
#FF7F24 |
#FF7F00 |
#FF7256 |
#FF6EB4 |
#FF6A6A |
#FF69B4 |
#FF6347 |
#FF4500 |
#FF4040 |
#FF3E96 |
#FF34B3 |
#FF3030 |
#FF1493 |
#FF00FF |
#FF0000 |
#FDF5E6 |
#FCFCFC |
#FAFAFA |
#FAFAD2 |
#FAF0E6 |
#FAEBD7 |
#FA8072 |
#F8F8FF |
#F7F7F7 |
#F5FFFA |
#F5F5F5 |
#F5F5DC |
#F5DEB3 |
#F4F4F4 |
#F4A460 |
#F2F2F2 |
#F0FFFF |
#F0FFF0 |
#F0F8FF |
#F0F0F0 |
#F0E68C |
#F08080 |
#EEEEE0 |
#EEEED1 |
#EEEE00 |
#EEE9E9 |
#EEE9BF |
#EEE8CD |
#EEE8AA |
#EEE685 |
#EEE5DE |
#EEE0E5 |
#EEDFCC |
#EEDC82 |
#EED8AE |
#EED5D2 |
#EED5B7 |
#EED2EE |
#EECFA1 |
#EECBAD |
#EEC900 |
#EEC591 |
#EEB4B4 |
#EEB422 |
#EEAEEE |
#EEAD0E |
#EEA9B8 |
#EEA2AD |
#EE9A49 |
#EE9A00 |
#EE9572 |
#EE82EE |
#EE8262 |
#EE7AE9 |
#EE799F |
#EE7942 |
#EE7621 |
#EE7600 |
#EE6AA7 |
#EE6A50 |
#EE6363 |
#EE5C42 |
#EE4000 |
#EE3B3B |
#EE3A8C |
#EE30A7 |
#EE2C2C |
#EE1289 |
#EE00EE |
#EE0000 |
#EDEDED |
#EBEBEB |
#EAEAEA |
#E9967A |
#E8E8E8 |
#E6E6FA |
#E5E5E5 |
#E3E3E3 |
#E0FFFF |
#E0EEEE |
#E0EEE0 |
#E0E0E0 |
#E066FF |
#DEDEDE |
#DEB887 |
#DDA0DD |
#DCDCDC |
#DC143C |
#DBDBDB |
#DB7093 |
#DAA520 |
#DA70D6 |
#D9D9D9 |
#D8BFD8 |
#D6D6D6 |
#D4D4D4 |
#D3D3D3 |
#D2B48C |
#D2691E |
#D1EEEE |
#D1D1D1 |
#D15FEE |
#D02090 |
#CFCFCF |
#CDCDC1 |
#CDCDB4 |
#CDCD00 |
#CDC9C9 |
#CDC9A5 |
#CDC8B1 |
#CDC673 |
#CDC5BF |
#CDC1C5 |
#CDC0B0 |
#CDBE70 |
#CDBA96 |
#CDB7B5 |
#CDB79E |
#CDB5CD |
#CDB38B |
#CDAF95 |
#CDAD00 |
#CDAA7D |
#CD9B9B |
#CD9B1D |
#CD96CD |
#CD950C |
#CD919E |
#CD8C95 |
#CD853F |
#CD8500 |
#CD8162 |
#CD7054 |
#CD69C9 |
#CD6889 |
#CD6839 |
#CD661D |
#CD6600 |
#CD6090 |
#CD5C5C |
#CD5B45 |
#CD5555 |
#CD4F39 |
#CD3700 |
#CD3333 |
#CD3278 |
#CD2990 |
#CD2626 |
#CD1076 |
#CD00CD |
#CD0000 |
#CCCCCC |
#CAFF70 |
#CAE1FF |
#C9C9C9 |
#C7C7C7 |
#C71585 |
#C6E2FF |
#C67171 |
#C5C1AA |
#C4C4C4 |
#C2C2C2 |
#C1FFC1 |
#C1CDCD |
#C1CDC1 |
#C1C1C1 |
#C0FF3E |
#BFEFFF |
#BFBFBF |
#BF3EFF |
#BEBEBE |
#BDBDBD |
#BDB76B |
#BCEE68 |
#BCD2EE |
#BC8F8F |
#BBFFFF |
#BABABA |
#BA55D3 |
#B9D3EE |
#B8B8B8 |
#B8860B |
#B7B7B7 |
#B5B5B5 |
#B4EEB4 |
#B4CDCD |
#B452CD |
#B3EE3A |
#B3B3B3 |
#B2DFEE |
#B23AEE |
#B22222 |
#B0E2FF |
#B0E0E6 |
#B0C4DE |
#B0B0B0 |
#B03060 |
#AEEEEE |
#ADFF2F |
#ADD8E6 |
#ADADAD |
#ABABAB |
#AB82FF |
#AAAAAA |
#A9A9A9 |
#A8A8A8 |
#A6A6A6 |
#A52A2A |
#A4D3EE |
#A3A3A3 |
#A2CD5A |
#A2B5CD |
#A1A1A1 |
#A0522D |
#A020F0 |
#9FB6CD |
#9F79EE |
#9E9E9E |
#9C9C9C |
#9BCD9B |
#9B30FF |
#9AFF9A |
#9ACD32 |
#9AC0CD |
#9A32CD |
#999999 |
#9932CC |
#98FB98 |
#98F5FF |
#97FFFF |
#96CDCD |
#969696 |
#949494 |
#9400D3 |
#9370DB |
#919191 |
#912CEE |
#90EE90 |
#8FBC8F |
#8F8F8F |
#8EE5EE |
#8E8E8E |
#8E8E38 |
#8E388E |
#8DEEEE |
#8DB6CD |
#8C8C8C |
#8B8B83 |
#8B8B7A |
#8B8B00 |
#8B8989 |
#8B8970 |
#8B8878 |
#8B8682 |
#8B864E |
#8B8386 |
#8B8378 |
#8B814C |
#8B7E66 |
#8B7D7B |
#8B7D6B |
#8B7B8B |
#8B795E |
#8B7765 |
#8B7500 |
#8B7355 |
#8B6969 |
#8B6914 |
#8B668B |
#8B6508 |
#8B636C |
#8B5F65 |
#8B5A2B |
#8B5A00 |
#8B5742 |
#8B4C39 |
#8B4789 |
#8B475D |
#8B4726 |
#8B4513 |
#8B4500 |
#8B3E2F |
#8B3A62 |
#8B3A3A |
#8B3626 |
#8B2500 |
#8B2323 |
#8B2252 |
#8B1C62 |
#8B1A1A |
#8B0A50 |
#8B008B |
#8B0000 |
#8A8A8A |
#8A2BE2 |
#8968CD |
#87CEFF |
#87CEFA |
#87CEEB |
#878787 |
#858585 |
#848484 |
#8470FF |
#838B8B |
#838B83 |
#836FFF |
#828282 |
#7FFFD4 |
#7FFF00 |
#7F7F7F |
#7EC0EE |
#7D9EC0 |
#7D7D7D |
#7D26CD |
#7CFC00 |
#7CCD7C |
#7B68EE |
#7AC5CD |
#7A8B8B |
#7A7A7A |
#7A67EE |
#7A378B |
#79CDCD |
#787878 |
#778899 |
#76EEC6 |
#76EE00 |
#757575 |
#737373 |
#71C671 |
#7171C6 |
#708090 |
#707070 |
#6E8B3D |
#6E7B8B |
#6E6E6E |
#6CA6CD |
#6C7B8B |
#6B8E23 |
#6B6B6B |
#6A5ACD |
#698B69 |
#698B22 |
#696969 |
#6959CD |
#68838B |
#68228B |
#66CDAA |
#66CD00 |
#668B8B |
#666666 |
#6495ED |
#63B8FF |
#636363 |
#616161 |
#607B8B |
#5F9EA0 |
#5E5E5E |
#5D478B |
#5CACEE |
#5C5C5C |
#5B5B5B |
#595959 |
#575757 |
#556B2F |
#555555 |
#551A8B |
#54FF9F |
#548B54 |
#545454 |
#53868B |
#528B8B |
#525252 |
#515151 |
#4F94CD |
#4F4F4F |
#4EEE94 |
#4D4D4D |
#4B0082 |
#4A708B |
#4A4A4A |
#48D1CC |
#4876FF |
#483D8B |
#474747 |
#473C8B |
#4682B4 |
#458B74 |
#458B00 |
#454545 |
#43CD80 |
#436EEE |
#424242 |
#4169E1 |
#40E0D0 |
#404040 |
#3D3D3D |
#3CB371 |
#3B3B3B |
#3A5FCD |
#388E8E |
#383838 |
#36648B |
#363636 |
#333333 |
#32CD32 |
#303030 |
#2F4F4F |
#2E8B57 |
#2E2E2E |
#2B2B2B |
#292929 |
#282828 |
#27408B |
#262626 |
#242424 |
#228B22 |
#218868 |
#212121 |
#20B2AA |
#1F1F1F |
#1E90FF |
#1E1E1E |
#1C86EE |
#1C1C1C |
#1A1A1A |
#191970 |
#1874CD |
#171717 |
#141414 |
#121212 |
#104E8B |
#0F0F0F |
#0D0D0D |
#0A0A0A |
#080808 |
#050505 |
#030303 |
#00FFFF |
#00FF7F |
#00FF00 |
#00FA9A |
#00F5FF |
#00EEEE |
#00EE76 |
#00EE00 |
#00E5EE |
#00CED1 |
#00CDCD |
#00CD66 |
#00CD00 |
#00C5CD |
#00BFFF |
#00B2EE |
#009ACD |
#008B8B |
#008B45 |
#008B00 |
#00868B |
#00688B |
#006400 |
#0000FF |
#0000EE |
#0000CD |
#0000AA |
#00008B |
#000080 |
#000000 |
经测试正常