我在练习使用ILI9341,为什么我写入颜色数据的时候发现我的RGB颜色R和B是反的,当输入R5G6B5的时候,实际显示效果却是B5G6R5,如输入0xF800显示结果是红色。包括读出结果也是一样。下图为把0,0点颜色读出显示结果
下面为主函数内容:
[mw_shl_code=c,true]int main(void)
{
u8 x=0;
u8 lcd_id[12]; //存放LCD ID字符串
u8 lcd_cl[20];
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init();
POINT_COLOR=RED;
sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到l,cd_id数组。
while(1)
{
switch(x)
{
case 0  CD_Clear(WHITE);break;
case 1  CD_Clear(BLACK);break;
case 2  CD_Clear(BLUE);break;
case 3  CD_Clear(RED);break;
case 4  CD_Clear(MAGENTA);break;
case 5  CD_Clear(GREEN);break;
case 6  CD_Clear(CYAN);break;
case 7  CD_Clear(YELLOW);break;
case 8  CD_Clear(BRRED);break;
case 9  CD_Clear(GRAY);break;
case 10:LCD_Clear(LGRAY);break;
case 11:LCD_Clear(BROWN);break;
}
sprintf((char*)lcd_cl,"color for 0,0 is:%04X",LCD_ReadPoint(0,0));
POINT_COLOR=RED;
LCD_ShowString(30,40,200,24,24,"Mini STM32 ^_^");
LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,lcd_id); //显示LCD ID
LCD_ShowString(30,130,200,12,12,"2015/11/30");
LCD_ShowString(30,150,200,12,12,lcd_cl);
x++;
if(x==12)x=0;
LED0=!LED0;
delay_ms(3000);
}
}[/mw_shl_code]
此时又出现一个问题,本该显示ID的地方却出现了些随机的数字,当我把主函数更改一下:把获取ID的sprintf函数放到获取颜色数据的sprintf函数下面
[mw_shl_code=c,true]int main(void)
{
u8 x=0;
u8 lcd_id[12]; //存放LCD ID字符串
u8 lcd_cl[20];
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init();
POINT_COLOR=RED;
sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。
while(1)
{
switch(x)
{
case 0:LCD_Clear(WHITE);break;
case 1:LCD_Clear(BLACK);break;
case 2:LCD_Clear(BLUE);break;
case 3:LCD_Clear(RED);break;
case 4:LCD_Clear(MAGENTA);break;
case 5:LCD_Clear(GREEN);break;
case 6:LCD_Clear(CYAN);break;
case 7:LCD_Clear(YELLOW);break;
case 8:LCD_Clear(BRRED);break;
case 9:LCD_Clear(GRAY);break;
case 10:LCD_Clear(LGRAY);break;
case 11:LCD_Clear(BROWN);break;
}
sprintf((char*)lcd_cl,"color for 0,0 is:%04X",LCD_ReadPoint(0,0));
sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);
POINT_COLOR=RED;
LCD_ShowString(30,40,200,24,24,"Mini STM32 ^_^");
LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,lcd_id); //显示LCD ID
LCD_ShowString(30,130,200,12,12,"2015/11/30");
LCD_ShowString(30,150,200,12,12,lcd_cl);
x++;
if(x==12)x=0;
LED0=!LED0;
delay_ms(3000);
}
}[/mw_shl_code]
[mw_shl_code=c,true] 此时显示结果:[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
求助:为什么会出现以上问题? |