初级会员

- 积分
- 61
- 金钱
- 61
- 注册时间
- 2015-3-16
- 在线时间
- 6 小时
|
5金钱
我使用Ili9486 驱动的3.5TFT(480*320) 初始化成功,ID也可以读取,在竖屏使用时候LCDClear()清屏没有问题,如下图
,但是横屏使用时,清屏就不能完全清楚,如下图,但是显示文字的像素坐标是对的
,这时必须把TFT的大小设置成480X350 才能全部清楚屏幕,这是什么情况
下面是初始化 设置光标和清屏代码
(1)初始化ILI9486
LCD_WR_REG(0xFF);
LCD_WR_REG(0xFF);
delay_ms(5);
LCD_WR_REG(0xFF);
LCD_WR_REG(0xFF);
LCD_WR_REG(0xFF);
LCD_WR_REG(0xFF);
delay_ms(10);
LCD_WR_REG(0xB0);
LCD_WR_DATA(0x00);
LCD_WR_REG(0x11);
delay_ms(150);
LCD_WR_REG(0xB3);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xC0);
LCD_WR_DATA(0x10);//13
LCD_WR_DATA(0x3B);//480
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x00);//NW
LCD_WR_DATA(0x43);
LCD_WR_REG(0xC1);
LCD_WR_DATA(0x10);//LCD_WR_DATA(0x08);
LCD_WR_DATA(0x10);//LCD_WR_DATA(0x16);//CLOCK
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x08);
LCD_WR_REG(0xC4);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x03);
LCD_WR_REG(0xC6);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xC8);//GAMMA
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x5C);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x14);
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x21);
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x14);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x53);
LCD_WR_DATA(0x0C);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x21);
LCD_WR_DATA(0x00);
LCD_WR_REG(0x35);
LCD_WR_DATA(0x00);
LCD_WR_REG(0x36);
LCD_WR_DATA(0x48);
LCD_WR_REG(0x3A);
LCD_WR_DATA(0x55);
LCD_WR_REG(0x44);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_REG(0xD0);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x07);//VCI1
LCD_WR_DATA(0x1D);//VRH
LCD_WR_REG(0xD1);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x03);//VCM
LCD_WR_DATA(0x00);//VDV
LCD_WR_REG(0xD2);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x14);
LCD_WR_DATA(0x04);
LCD_WR_REG(0x29);
delay_ms(30);
LCD_WR_REG(0x2A);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x3F);//320
LCD_WR_REG(0x2B);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0xDF);//480
LCD_WR_REG(0xB4);
LCD_WR_DATA(0x00);
delay_ms(100);
//LCD_WR_REG( 0x0021);
LCD_WR_REG(0x2C);
LCD_LED=1;//????±???
LCD_Display_Dir(1);
LCD_Clear(WHITE);
}
(2)设置光标
#if HORIZONTAL
LCD_WR_REG(0x002A); //setxcmd
LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(0x00FF&Ypos); //横
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x003F);
LCD_WR_REG(0x002B); //setYcmd
LCD_WR_DATA((480-Xpos)>>8);
LCD_WR_DATA(0x00FF&(480-Xpos)); //?è?¨Y×?±ê
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x00df);
#else
LCD_WR_REG(0x002A); //setxcmd
LCD_WR_DATA(Xpos>>8);
LCD_WR_DATA(0x00FF&Xpos); //?è?¨X×?±ê
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x003F);
LCD_WR_REG(0x002B); //setycmd
LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(0x00FF&Ypos); //?è?¨Y×?±ê
LCD_WR_DATA(0x0001);
LCD_WR_DATA(0x00df);
#endif
(3)清楚TFT
u32 index=0;
u32 totalpoint=lcddev.width;
totalpoint*=lcddev.height; //????×?????
for(index=0;index<totalpoint;index++)
{
LCD->LCD_RAM=color;
}
这是什么原因, |
|