宋云霞
(中国电子科技集团公司第38研究所,孔径阵列与空间探测安徽省重点实验室,合肥 230088)
FPGA的TFT-LCD真彩液晶屏显示控制
宋云霞
(中国电子科技集团公司第38研究所,孔径阵列与空间探测安徽省重点实验室,合肥 230088)
目前液晶屏的使用越来越广泛,TFT-LCD真彩液晶屏由于其良好的视觉效果,简便的控制方法在液晶屏使用市场中占有很大的空间,但是目前常用的TFT-LCD液晶屏主控芯片主要是单片机、STM32等,不能满足更进一步的研发需求,本文主要研究了FPGA驱动TFT-LCD液晶屏的方法,使用80并口控制芯片操作完成复杂的屏幕显示功能。
FPGA;TFT-LCD液晶屏;80并口;控制电路
液晶屏作为人机交互的重要手段,已经应用得越来越广泛。TFT-LCD(Thin Film Transistor-Liquid Crystal Display,薄膜晶体管液晶显示器),与传统的12864单色屏的区别在于,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可以有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。在工程使用中,液晶屏作为重要的外设,需要主控芯片进行控制,达到需求的显示效果。本文研究了以FPGA为主控芯片的液晶屏控制系统的硬件连接和软件实现,并且得到了实际工程的验证,具有现实的应用意义。
目前TFT-LCD液晶屏多是用单片机、STM32等主控芯片进行驱动,现有的研发资料、驱动芯片初始化程序以及硬件架构都是针对单片机等进行研发。笔者在进行项目研发的时候,主控芯片为FPGA芯片,驱动TFT-LCD液晶屏,为了完成指定的人机交互功能,进行基于FPGA的TFT-LCD液晶屏的显示。选取的FPGA型号为Cyclone IV,TFT-LCD型号为2.8寸并口屏,液晶屏驱动芯片为ILI9320,FPGA与TFT-LCD接口为16位的80并口。
TFT-LCD模块采用80并口与FPGA连接,采用16位数据线,该模块的80并口信号线如表1所列。
表1 80并口信号线
模块的80并口读过程为:先根据要读取的数据类型,设置RS为高(数据)/低(命令),然后拉低片选,选中ILI9320,读数据时先置RD为低,然后在RD上升沿,使数据锁存到数据线DB[15:0]上,如图1所示。
图1 80并口读时序
模块的80并口写过程为:先根据要写入的数据类型,设置RS为高(数据)/低(命令),然后拉低片选,选中ILI9320,读数据时先置WR为低,然后在WR上升沿,使数据锁存到数据线DB[15:0]上,如图2所示。
图2 80并口写时序
为了简化液晶屏显示控制的设计,可以选取自带控制芯片以及字库的液晶屏。本文选用的液晶屏其控制芯片型号为ILI9320。如图3所示,在进行液晶屏显示控制时,FPGA只需要通过80并口控制信号线,便可以达到控制芯片显示的功能。
图3 液晶屏内部控制结构图
ILI9320控制器自带显存,其显存总大小为172 820(240×320×18/8),即 18 位模式(26 万色)。模块的16位数据线与显存的对应关系为565方式,如图4所示。
图4 液晶屏颜色控制位
最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示颜色越深。当控制液晶屏显示相应字符和数字时,实质是通过相应操作控制每个像素点的颜色,而颜色的控制最终为16位数据线的数据值控制实现的。为了进行ILI9320控制芯片的操作,需要对控制芯片的操作命令进行了解。常用的操作命令主要实现控制芯片的启动、屏幕显示方向控制、显示区域设置等,只要对ILI9320控制芯片的相应寄存器进行控制,就可以实现屏幕显示的具体要求,由此可见,控制芯片的存在极大地简化了研发人员的工作。
FPGA驱动TFT-LCD的硬件连接,前面已经做了较为详细的介绍,在80并口连接、信号线时序满足的前提下,软件的实现尤为重要。在液晶屏显示的过程中,最重要的步骤为控制芯片的初始化,初始化的过程主要是ILI9320控制芯片寄存器的初始化,建议参考控制芯片手册。
本文进行软件开发时,在Quartus环境下使用SOPC+NiosII架构,为了保证ILI9320控制信号的初始状态,首先进行复位操作,然后进行控制芯片初始化,最后调用写入函数,软件实现过程中的主要函数如下:
voidLCD_Init(void);
//ILI9320初始化
voidLCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue);
//ILI9320寄存器写入
void LCD_WR_REG(u16 data);
//找到指定ILI9320寄存器
void LCD_WR_DATA(u16 data);
//DB[15:0],寄存器初始化或写入GRAM
u16 LCD_ReadReg(u8 LCD_Reg); //读寄存器值
u16 LCD_RD_DATA(void); //读DB[15:0]
voidLCD_Scan_Dir(u8 dir); //屏幕顺序
voidLCD_Clear(u16 Color); //清屏
voidLCD_SetCursor(u16 Xpos, u16 Ypos);//指定光标位置
voidLCD_WriteRAM_Prepare(void);
//控制ILI9320寄存器,准备写入GRAM
voidLCD_ShowString(u16 x,u16 y,const u8 *p);//写入字符串
本人在调试过程中发现,屏幕可以正常启动,
Control System of TFT-LCD Based on FPGA
Song Yunxia
(Anhui Key Laboratory of Aperture Array and Space Exploration,38th Research Institute of China Electronic Technology Group Corporation,Hefei 230088,China)
The use of LCD screen is aboard at present,the TFT-LCD screen occupies a lot of space in the use of LCD screen because of its great visual effect and simple control method.But the main control chip of TFT-LCD screen usually uses the single chip of microcontroller or STM32,it can not satisfy the further research and development needs.In the paper,the methods of FPGA drive TFT-LCD screen are researched,80 parallel ports control chip is used to complete the complex screen display function.
FPGA;TFT-LCD screen;80 parallel ports;control circuit
TN911.72
A