基本操作:
本文只涉及到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 |
经测试正常