1. 叙述
许久未使用的TFT显示屏,这些天突然想使用它来竖屏显示,在查阅数据手册后设置成功,加上还有一些颜色显示问题,一并记录。首先看数据手册的寄存器功能位描述
数据手册
再看一下不同设置方法的理论显示效果
显示分析
由于一开始的色块刷新函数适用于的初始化时(36h)寄存器位置写入的值为(1100_0000),也就是上图的第四个,注意上图的三位数据和(MV MX MY)与实际寄存器顺序不一样
X-Y 坐标交换: 与DDRAM中的正常数据显示模式相比,就是X和Y的数据对调了
X-Mirror: 与DDRAM中正常的模式相比,为X轴对称
Y-Mirror: 与与DDRAM中正常的模式相比,为Y轴对称
至于为啥采用第四种竖屏 显示,而不是正常模式,由于模块正常模式是反着的,不好看。
若是需要改为横屏 显示,而且还能够使用原来的刷屏函数,那就要向寄存器中写入(0110_0000)
三种显示效果如下所示,由于屏幕亮度太高,文字显示不出来。2是正常显示,1是第四种显示,3是横屏显示
至于颜色错乱问题,如红色显示成了蓝色,是由于(36h)寄存器的RGB位被置1了,所以RGB数据被显示成了BGR。
2.代码
初始化的代如下所示,其实就只改了一行。
void Lcd_Init()
{
LCD_GPIO_Init();
Lcd_Reset();
Lcd_WriteIndex(0x11);//Sleep exit
Lcd_DelayMs (120);
//ST7735R Frame Rate
Lcd_WriteIndex(0xB1);
Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D);
Lcd_WriteIndex(0xB2);
Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D);
Lcd_WriteIndex(0xB3);
Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D);
Lcd_WriteData(0x01); Lcd_WriteData(0x2C<