我根据 实验13 (tft显示实验库函数版) ,自己写的代码。在附件里。
因为源代码lcd.c为了兼容其他型号的lcd加了有好多没用的语句,我就是想只用9341的那部分代码,所以自己改了一下。
但是下载到开发板上发现液晶的蓝 {MOD}和红 {MOD}恰好相反,我想可能是RGB颜 {MOD}数据的高位变成低位了。。。但是ILI9341的颜 {MOD}格式确实是R5G6B5啊,已经看了半天自己的代码了,主要是u16 color这个参数,真的想不通我到底哪里错了。有朋友可以看下我的代码,指点一下我么?谢谢了...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
老哥,太谢谢了!经你提醒我按你说的改了后颜 {MOD}显示就正确了。手册里,的bit3:(0=RGB color filter pannel,1=BGR color filter pannel),要想使颜 {MOD}数据格式为R5G6B5,并且扫描格式为从左到右从上到下,确实在写命令0x36后,应该写数据0b00。bit3位应该为0。
但是我的问题又来了,lcd_init函数里最后是开窗函数+清屏,void LCD_OLCD_Open_Window(0,0,239,319);LCD_Clear(WHITE);函数原型是:
void LCD_OLCD_Open_Window(0,0,239,319)
{
LCD_WR_REG(0x36);
LCD_WR_DATA(0X08);
LCD_WR_REG(0X2A);
LCD_WR_DATA(x>>8);
LCD_WR_DATA(x&0xff);
LCD_WR_DATA(xx>>8);
LCD_WR_DATA(xx&0xff);
LCD_WR_REG(0X2B);
LCD_WR_DATA(y>>8);
LCD_WR_DATA(y&0xff);
LCD_WR_DATA(yy>>8);
LCD_WR_DATA(yy&0xff);
}
void LCD_Clear(u16 color)
{ u32 i;
LCD_WR_REG(0x2c);
for(i=0;i<320*240;i++)
LCD_WR_DATA(color);
}
还是要写指令0x36 后写数据0x08才能正确显示啊。bit3为1,这是咋回事,相矛盾了.....
开窗函数LCD_Open_Window(0,0,239,319)
函数原型LCD_Open_Window(u16 x,u16 y,u16 xx,u16 yy)
一周热门 更多>