ILI9325 LCD的使用
1. 基础信息
2. 芯片讲解
- ILI9325芯片是一个262k颜色的液晶驱动芯片,分辨率位240RGBx320,即一个点由RGB三个点构成.有172,800bytes用来存储240RGBx320的图像数据.有4种接口用来显示图片.
- <font color="blue">行驱动:gate-driver(G1-G320)打开关闭一行,列驱动:source-driver(S1-S720)1个点有3列,选择点的颜色.</font>
- <font color="red">蓝桥杯官方的板子没有引出ILI9325的IM[3:0] SDI SDO ENABLE DOTCLK VSYNC HSYNC FMARK信号,板子直接固定使用的是16-bit,system interface,i80通信协议.</font>
3. 蓝桥杯官方板
- 管脚描述
- CS(PB9): 低电平有效
- RS(PB8): 寄存器选择信号,0:写寄存器地址.1:写data.
- WR/SCL(PB5): 0:使能写操作.SPI模式下:时钟同步信号SCL.
- RD(PB10): 0使能读操作.
- RESET: 直接接了stm32的复位信号.
- 通信
- system interface,16-bit并行同信.
- 读写操作
- 写操作
写操作时序图void My_LCD_WriteReg(u16 Reg_addr,u16 Reg_data) { u32 PCOUT = GPIOC->ODR; LE = 0;//避免LCD对LED的影响. CS = 0; RS = 0; WR = 1; //Ready to write address GPIOC->ODR = Reg_addr; //Wrte reg address WR = 0; WR = 1; //没有延时,说明在一个指令周期内,可以写完16-bit数据 RS = 1; //Ready to write data GPIOC->ODR = Reg_data; WR = 0; WR = 1; RS = 1; //for next CS = 1; //finish write GPIOC->ODR = PCOUT; //复原LED管脚状态. }
- 读操作
读操作时序图u16 My_LCD_ReadReg(u16 Reg_addr) { u16 Read_value = 0; u32 PCOUT = GPIOC->ODR; LE = 0;//避免LCD对LED的影响. CS = 0; RS = 0; WR = 1; //Ready to write address GPIOC->ODR = Reg_addr; //Wrte reg address WR = 0; WR = 1; //没有延时,说明在一个指令周期内,可以写完16-bit数据 GPIOC->CRL = 0x44444444;//set pin floating input GPIOC->CRH = 0x44444444; RD = 0; //Ready to read data Read_value = GPIOC->IDR; RD = 1; GPIOC->CRL = 0x33333333;//set pin pp output GPIOC->CRH = 0x33333333; CS = 1; //finish write GPIOC->ODR = PCOUT; //复原LED管脚状态. return Read_value; }
4. 官方液晶例程配置
- 坐标原点:竖着放左上方.
- R01h: 配置液晶点阵的驱动方向.SM=1(与GS结合设置扫描方向).SS=0(S1->S720).
- R60h,R61h,R6Ah:
行扫描控制,图片竖直滚动设置,灰度区电压控制.
- SCN[5:0]: 选择gate-driver从哪一行开始扫描. 官方设置SCN=0,SM=0,GS=1:gate-driver从G320开始扫描,扫描方向G320->G1.
- NL[5:0]:以8行为间隔设置驱动LCD的函数.NL[5:0]=0,LCD驱动行数8 lines.
- NDL: 设置非显示区域电压的输出级别.
- VLE: 1:使能图片垂直滚动
- REV: 1:使能图像灰度翻转,即改变0x00000-0x3FFFF的source output的优先级.
- VL[8:0]: 设置有多少行的图片垂直滚动.
- R50h-R53h: 设置窗口图片显示的其实和结束地址.<font olor="blue">HSA[7:0]=0,HEA[7:0]=0,VSA[8:0]=0,VEA[8:0]=0</font>
窗口显示配置- R03h: <font color="blue">BGR=1,I/D[1:0]=11,ORG=0,AM=0,TRI=0,DFM=0./font>设置数据进入GRAM模式.
AM+I/D[1:0]一起控制GRAM的更新方向,用于连续写入. AM:0 逐列扫描,1 逐行扫描.I/D:控制地址计数器递增还是递减.
ORG: 当ORG=1时根据I/D的值改变屏幕00000h的位置.
ORG=0
ORG=1
ID=00 ID=01 ID=10 ID=11 逐行 R->L,D->U L->R,D->U R->L,U->D L->R,U->D 逐列 R->L,D->U L->R,D->U R->L,U->D L->R,U->D BGR: BGR=1时以BGR的顺序写入GRAM.
TRI,DFM: 设置数据传送进RAM的模式.
- R04h: <font color="blue">RCV[1:0]=0,RCH[1:0]=0,RSZ[1:0]=0</font>设置图片的缩放.例程设置无缩放.
- R08h: <font color="blue">FP[3:0]=2,BP[3:0]=7</font>设置前肩,后肩的行数.
- R09h: <font color="blue">ISC[3:0]=0,PTG[1:0]=0,PTS[2:0]=0 </font>设置非显示区域的扫描周期(减少LCD的损害)官方设置:灰度区步进行扫描.
- R0Ah: <font color="blue">FMARKOE=0</font>帧同步信号的使能和周期控制.官方设置:不输出帧同步信号.
R0Ch:<font color="blue">RIM[1:0]=01,DM[1:0]=00,RM=0,ENC[2:0]=0</font>设置接口模式.- R0Dh:<font color="blue">FMP[8:0]=0</font>设置FMARK输出位置.
- {R21h,R20h}:设置光标的初始位置.
5. 标准库函数一些特殊类型定义
特殊类型定义