蓝桥杯嵌入式LCD翻转显示

蓝桥杯嵌入式LCD翻转显示


#前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、配置寄存器:

首先打开蓝桥杯提供的“液晶控制器ILI9325.pdf”文件(文档链接将放置文章末尾)
蓝桥杯嵌入式LCD翻转显示_第1张图片

依据下图所示,得知:
LCD的输出方向由SS和GS这两位控制
蓝桥杯嵌入式LCD翻转显示_第2张图片
查看文档得知SS是R01h寄存器的第8位
蓝桥杯嵌入式LCD翻转显示_第3张图片
GS是R60h寄存器(对应十进制为R96)的第15位
蓝桥杯嵌入式LCD翻转显示_第4张图片
**

首先找到R01h寄存器详细描述:

**
如下图所述,
蓝桥杯嵌入式LCD翻转显示_第5张图片
SS:选择源驱动输出的移位方向。

当SS = 0时,输出的移位方向从S1至S720(简单理解为输出方向从上往下)

当SS = 1时,输出的移位方向从S720至S1(简单理解为输出方向从下往上)

提示:蓝桥杯提供的液晶显示器代码输出方向为从上往下

由于蓝桥杯所用的显示屏型号为ILI9325或ILI9328,即我们只需对LCD初始化函数里的void REG_932X_Init(void)修改即可

蓝桥杯嵌入式LCD翻转显示_第6张图片

第一步,修改垂直显示方向,通过修改R01h实现

原代码(从上往下)

LCD_WriteReg(R1  , 0x0000); // set SS and SM bit		  //0x0100

修改R1寄存器SS为1(从下往上)

LCD_WriteReg(R1  , 0x0100); // set SS and SM bit		  //0x0100

效果图附上:
蓝桥杯嵌入式LCD翻转显示_第7张图片
即实现了从下往上显示

**

然后,找到R60h寄存器详细描述:

**
SCN[5:0] :ILI9325允许通过设置SCN[5:0]位来指定门驱动器开始扫描的门线。
注:SCN[5:0] 不做修改,这六位的功能为,行显示开始的位置在哪,默认为00h时,要么为G1,要么为G320
NL[4:0]也不做修改,有兴趣可详细阅读文档
蓝桥杯嵌入式LCD翻转显示_第8张图片
GS:在SCN[4:0]和NL[4:0]确定的范围内,设置门控驱动器的扫描方向。扫描

通过设置GS = 1,可以反转由GS = 0确定的方向。

当GS = 0时,扫描方向为G1 ~ G320。(简单理解为从左往右)

当GS = 1时,扫描方向为G320到G1。(简单理解为从右往左)
蓝桥杯嵌入式LCD翻转显示_第9张图片

提示:蓝桥杯提供的液晶显示器代码输出方向为从左往右

由下图我们可清晰得知默认SM=0,GS=0,显示方向为从左往右
蓝桥杯嵌入式LCD翻转显示_第10张图片
那么我们想使LCD从右往左显示即更改GS=1即可

原代码

LCD_WriteReg(R96 , 0x2700); // Gate Scan Line		  0xA700

修改R60h(即R96)寄存器GS为1(从右往左)

LCD_WriteReg(R96 , 0xA700); // Gate Scan Line		  0xA700

效果图附上:
蓝桥杯嵌入式LCD翻转显示_第11张图片
即实现了LCD翻转

修改后的初始化函数:

void REG_932X_Init(void)
{
	LCD_WriteReg(R227, 0x3008);   // Set internal timing
	LCD_WriteReg(R231, 0x0012); // Set internal timing
	LCD_WriteReg(R239, 0x1231);   // Set internal timing
	LCD_WriteReg(R1  , 0x0100); // set SS and SM bit		  //0x0100
	LCD_WriteReg(R2  , 0x0700); // set 1 line inversion
	LCD_WriteReg(R3  , 0x1018);   // set GRAM write direction and BGR=1.
	LCD_WriteReg(R4  , 0x0000);   // Resize register
	LCD_WriteReg(R8  , 0x0207);   // set the back porch and front porch
	LCD_WriteReg(R9  , 0x0000);   // set non-display area refresh cycle ISC[3:0]
	LCD_WriteReg(R10 , 0x0000);   // FMARK function
	LCD_WriteReg(R12 , 0x0000); // RGB interface setting
	LCD_WriteReg(R13 , 0x0000);   // Frame marker Position
	LCD_WriteReg(R15 , 0x0000); // RGB interface polarity
	/**************Power On sequence ****************/
	LCD_WriteReg(R16 , 0x0000);   // SAP, BT[3:0], AP, DSTB, SLP, STB
	LCD_WriteReg(R17 , 0x0007);   // DC1[2:0], DC0[2:0], VC[2:0]
	LCD_WriteReg(R18 , 0x0000); // VREG1OUT voltage
	LCD_WriteReg(R19 , 0x0000);   // VDV[4:0] for VCOM amplitude
	Delay_LCD(1000);                    // Delay 200 MS , Dis-charge capacitor power voltage
	LCD_WriteReg(R16 , 0x1690);   // SAP, BT[3:0], AP, DSTB, SLP, STB
	LCD_WriteReg(R17 , 0x0227); // R11H=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]
	Delay_LCD(50);      // Delay XXms
	LCD_WriteReg(R18 , 0x001D); // External reference voltage= Vci;
	Delay_LCD(50);      // Delay XXms
	LCD_WriteReg(R19 , 0x0800); // R13H=1D00 when R12H=009D;VDV[4:0] for VCOM amplitude
	LCD_WriteReg(R41 , 0x0014); // R29H=0013 when R12H=009D;VCM[5:0] for VCOMH
	LCD_WriteReg(R43 , 0x000B);   // Frame Rate = 96Hz
	Delay_LCD(50);      // Delay XXms
	LCD_WriteReg(R32 , 0x0000); // GRAM horizontal Address
	LCD_WriteReg(R33 , 0x0000); // GRAM Vertical Address
	/* ----------- Adjust the Gamma Curve ---------- */
	LCD_WriteReg(R48 , 0x0007);
	LCD_WriteReg(R49 , 0x0707);
	LCD_WriteReg(R50 , 0x0006);
	LCD_WriteReg(R53 , 0x0704);
	LCD_WriteReg(R54 , 0x1F04);
	LCD_WriteReg(R55 , 0x0004);
	LCD_WriteReg(R56 , 0x0000);
	LCD_WriteReg(R57 , 0x0706);
	LCD_WriteReg(R60 , 0x0701);
	LCD_WriteReg(R61 , 0x000F);
	/* ------------------ Set GRAM area --------------- */
	LCD_WriteReg(R80 , 0x0000);   // Horizontal GRAM Start Address
	LCD_WriteReg(R81 , 0x00EF);   // Horizontal GRAM End Address
	LCD_WriteReg(R82 , 0x0000); // Vertical GRAM Start Address
	LCD_WriteReg(R83 , 0x013F); // Vertical GRAM Start Address
	LCD_WriteReg(R96 , 0xA700); // Gate Scan Line		  0xA700
	LCD_WriteReg(R97 , 0x0001); // NDL,VLE, REV
	LCD_WriteReg(R106, 0x0000); // set scrolling line
	/* -------------- Partial Display Control --------- */
	LCD_WriteReg(R128, 0x0000);   
	LCD_WriteReg(R129, 0x0000);
	LCD_WriteReg(R130, 0x0000);
	LCD_WriteReg(R131, 0x0000);
	LCD_WriteReg(R132, 0x0000);
	LCD_WriteReg(R133, 0x0000);
	/* -------------- Panel Control ------------------- */
	LCD_WriteReg(R144, 0x0010);
	LCD_WriteReg(R146, 0x0000);
	LCD_WriteReg(R147, 0x0003);
	LCD_WriteReg(R149, 0x0110);
	LCD_WriteReg(R151, 0x0000);
	LCD_WriteReg(R152, 0x0000);
	   /* Set GRAM write direction and BGR = 1 */
	   /* I/D=01 (Horizontal : increment, Vertical : decrement) */
	   /* AM=1 (address is updated in vertical writing direction) */
	LCD_WriteReg(R3  , 0x1018);  //0x1018
	
	LCD_WriteReg(R7  , 0x0173); // 262K color and display ON
}

源码:

链接:https://pan.baidu.com/s/1ugDtrXP4zU7xCpUxDzfoBg?pwd=1111
提取码:1111

你可能感兴趣的:(蓝桥杯,stm32,单片机,嵌入式硬件,c语言)