APP下载

基于STM32和emWin图形库的液晶显示系统设计

2015-05-05肖林京于鹏杰于志豪岳明臣

电视技术 2015年1期
关键词:液晶显示微控制器底层

肖林京,于鹏杰,于志豪,常 龙,岳明臣

(山东科技大学 机械电子工程学院,山东 青岛 266590)

基于STM32和emWin图形库的液晶显示系统设计

肖林京,于鹏杰,于志豪,常 龙,岳明臣

(山东科技大学 机械电子工程学院,山东 青岛 266590)

为了满足现代电子产品对液晶显示的个性化需求,以STM32微控制器为核心,应用emWin图形库设计了一种液晶显示系统。在分析了STM32微控制器和emWin图形库优越性的基础上,详细介绍了液晶显示系统的硬件设计和emWin图形库在STM32平台的移植过程。最后对液晶显示系统进行实验验证,结果表明该液晶显示系统显示稳定、性能可靠、界面友好,具有很好的实用效果。

液晶显示系统;STM32微控制器;emWin图形库;移植

目前,随着液晶器件制造工艺的不断完善和生产成本的不断降低,液晶器件在各类电子产品中应用越来越广泛。同时,液晶器件具有体积小、功耗低、显示信息量大、寿命长、不产生电磁辐射污染、可以显示复杂的文字和图片等优点[1-2],在未来的显示终端领域将具有广阔的发展前景。

STM32微控制器是意法半导体(ST)公司生产的32位ARM处理器。该处理器具有内部资源丰富、扩展能力强、功率消耗低、价格便宜等优点,已逐渐成为32位微控制器中的理想器件。emWin图形库是一款用于嵌入式开发的通用图形软件包,其所有软件模块均为C语言源代码设计[3],可以支持任何CPU和几乎所有显示器。同时,由于emWin图形库的源代码是开放的,使其开发使用难度大大降低。因此,将两者优点结合起来设计一种液晶显示系统具有积极的实际应用价值。

1 硬件设计

液晶显示系统采用STM32F103系列的微控制器作为主控制芯片,根据实际的显示需求,设计了多个功能模块,共同完成系统数据的接收、转换、报警和显示。系统的硬件结构如图1所示,该系统硬件主要由STM32F103微控制器、CAN总线接口、液晶显示接口、报警输出接口组成。同时,还包括电源、扩展Flash、按键和报警器等外设。其中,STM32F103微控制器是该液晶显示系统的核心部分,完成系统信息的处理以及对外设的控制和管理;CAN总线接口是该液晶显示系统与外部其他系统信息交互的通道,显示系统通过CAN总线接口从CAN通信网络中获取显示信息;液晶显示接口是液晶屏的驱动接口,实现了STM32F103微控制器与液晶屏内置的LCD控制器之间的连接;报警输出接口主要进行报警信号的功率放大,完成对报警器的驱动。

1.1 STM32F103微控制器

STM32F103系列微控制器是新一代基于ARMv7-M体系结构的嵌入式ARM处理器。其内部采用了32位标准RISC(精简指令集),提供了很高的代码效率[4]。该液晶显示系统使用的控制器具体型号是STM32F103VCT6,其最高工作频率72 MHz;工作电压为2.0~3.6 V;具有休眠、停止、待机3种低功耗模式;拥有多个通信接口、定时器、中断源和外设。此外,该款微控制器内部还集成了 FSMC(灵活的静态存储器控制器),能够直接支持8080总线接口的LCD控制器[5]。

图1 系统硬件结构框图

1.2 液晶屏及其接口电路

该液晶显示系统选用型号为DST2001PH的 2.8 in(1 in=2.54 cm)TFT液晶屏作为显示终端,其内置ILI9320 LCD控制器,采用320×240的屏幕分辨率,支持16 位的 8080并行接口,使用565RGB真彩显示模式[6],内部自带显存,正常工作电压为2.8~3.3 V。此外,该液晶屏还具有抗干扰能力强和电磁兼容性好的特点。

根据ILI9320 LCD控制器的显示控制机理,其内部RAM可以看作不带地址总线的静态随机存储器,STM32微控制器通过将相应的GPIO口设置工作在FSMC总线方式[7]下,按照16位的8080并行接口的通信要求,以访问静态随机存储器的形式访问LCD控制器,实现对LCD控制器的驱动控制。其中,ILI9320 LCD控制器的信号线包括:数据总线DB[15∶0]、片选信号CS、命令/数据转换信号RS、读数据信号RD、写数据信号WR,与之对应相连接的FSMC信号线为数据总线FSMC _D[15∶0]、地址信号FSMC_ A16、片选FSMC_NE1、读使能FSMC_NOE、写使能FSMC_NWE。具体的液晶屏接口电路连接图如图2所示。

1.3 CAN总线接口电路

CAN总线由于布线简单,成本低廉,可靠性高,已越来越多的应用于测量控制系统和工业控制现场中。本系统CAN总线接口主要是用于接收CAN网络中的各种显示信息。STM32F103VCT6微控制器自带2个CAN通信的接口,其支持CAN协议2.0A和2.0B。该接口电路主要由CAN总线收发器和隔离芯片组成。其中,CAN总线收发器选用了具有差动接收和发送能力的PCA82C250芯片;隔离芯片选用双通道数字隔离器ADUM1201芯片。

图2 液晶屏接口电路连接图

1.4 报警输出接口电路

液晶显示系统进行信息显示过程中,为了能够对接收的异常信息进行提示,系统需要有报警器。报警输出接口电路作为STM32F103微控制器驱动报警器的接口电路,主要由功率放大电路和隔离电路组成。隔离电路通过选用的可控制光电耦合器件TLP521芯片,实现微控制器与功率放大电路之间的隔离,减少了功率放大电路对微控制器的干扰;功率放大电路选用SS9013三极管,利用其电流放大特性,对报警信号进行功率放大,实现对报警器的驱动。

2 软件设计

液晶显示系统软件部分设计的主要任务有emWin图形库在STM32平台的移植和系统显示界面整体程序的编写。

2.1 emWin图形库在STM32平台的移植

2.1.1 emWin的层次结构

emWin作为一种复杂高效的图形用户界面,可以移植到众多显示控制器和操作系统中,具有模块化的特点,并采用分层结构[3]。如图3所示,emWin主要包括应用层、图形库层、驱动层和硬件层4个层次。在emWin完成显示的过程中,应用层中的用户应用程序先调用图形库层的功能函数,然后各个功能函数通过驱动层的底层驱动函数,实现对硬件的电路驱动,完成显示界面的显示。

2.1.2 emWin图形库的移植

emWin图形库的移植是在MDK-ARM 5.0开发环境中完成的,使用的emWin图形库是NXP公司公开提供的版本为emWin V5.18图形库,该库提供了图形用户界面设计所需要的丰富控件集。emWin图形库的移植过程主要分为4部分:添加相应文件到项目工程中;配置LCD文件;配置GUI文件;编写底层驱动函数。

1)添加相应文件到项目工程中

emWin图形库的移植,首先需要在emWin V5.18图形库中选择相应的底层配置文件和库文件,添加到MDK-ARM 5.0开发环境中的项目工程里。然后通过对底层配置文件进行相应修改,使得emWin图形库能够在项目工程中正常运行。其中,添加的底层配置文件包括LCD文件(LCDConf.c和LCDConf.h)、GUI文件(GUIConf.c和GUIConf.h)和时间文件(GUI_X.c);库文件需添加与STM32F103微控制器Cortex-M3内核相对应的 emWin_518_ Keil4_M3_ LE.lib 库文件。

图3 emWin层次结构图

2)配置LCD文件

LCD文件主要是对LCD控制器进行的配置。根据液晶屏的参数,通过修改LCD文件中相应的宏定义,一方面完成LCD控制器的显示尺寸、显示方向、颜色模式和显示驱动等部分的配置,另一方面根据液晶屏接口电路连接情况完成对LCD控制器的命令寄存器和数据寄存器地址进行配置。配置如下:

/*定义显示屏显示尺寸*/

#define XSIZE_PHYS 240

#define YSIZE_PHYS 320

/*定义颜色模式*/

#define COLOR_CONVERSION GUICC_565

/*选择ili9320 LCD控制器*/

#define LCD_CONTROLLER 9320

/*选择支持ili9320控制器的显示驱动*/

#define DISPLAY_DRIVER GUIDRV_FLEXCOLOR

/*设置命令寄存器地址*/

#define LCD_REG_ADDRESS(*((volatile U16 *)(0x60000000UL)))

/*设置数据寄存器地址*/

#define LCD_DAT_ADDRESS(*((volatile U16 *)(0x60020000UL)))

/*定义显示屏显示方向*/

#define GUI_SWAP_XY(1)

3)配置GUI文件

GUI文件主要是对emWin图形库的显示缓冲区、颜色字体以及一些高层次的可用功能进行的配置。配置如下:

#define GUI_NUMBYTES(1024)*72//设置emWin动态显示缓冲区大小

#define GUI_DEFAULT_FONT &GUI_Font6x8//设置默认字体

#define GUI_DEFAULT_BKCOLOR GUI_BLACK//设置背景颜色

#define GUI_DEFAULT_COLOR GUI_WHITE//设置前景颜色

#define GUI_OS 0//设置emWin支持多任务

#define GUI_SUPPORT_TOUCH 0//设置支持可选触摸屏

#define GUI_SUPPORT_MOUSE 0//设置支持可选鼠标

#define GUI_WINSUPPORT 1//设置支持可选窗口管理器

#define GUI_SUPPORT_MEMDEV 1//设置支持可选存储设备

#define GUI_SUPPORT_ROTATION1//设置支持文字旋转

#define WM_SUPPORT_STATIC_MEMDEV 1//设置支持静态存储设备

#define GUI_NUM_LAYERS 16//设置可用层/显示器的最大数量

4)编写底层驱动函数

底层驱动函数是LCD驱动程序中最底层的函数。底层驱动函数主要包括LCD初始化函数和LCD显示缓冲区读写函数。emWin图形库中所有其他的功能函数都是通过调用这些底层驱动函数来实现其各自的功能的。

STM32F103微控制器是以总线上模拟的8080接口与ILI9320 LCD控制器连接的,其采用16位的并口模式对显示屏进行控制[8]。微控制器通过FSMC的A16地址线的高低电平(A16=0/A16=1),实现对ILI9320 LCD控制器命令操作和数据操作的区分。当A16地址线为高电平时,通过底层写函数ili9320_Write()向LCD控制器写入数据,通过底层读函数ili9320_Read()读取LCD控制器的数据。当A16地址线为低电平时,通过底层写函数ili9320_Write()向LCD控制器写入命令,通过底层读函数ili9320_Read()读取LCD控制器寄存器值。因此,编写底层驱动函数只需完成对底层写函数ili9320_Write()和底层读函数ili9320_Read()的编写。编写底层函数代码如下:

//*LCD控制器初始化*//

voidili9320_int(){

ili9320_set_cs();

ili9320_clr_reset();

GUI_X_Delay(50);

ili9320_set_reset();

GUI_X_Delay(50);

}

//*底层写函数*//

void ili9320_Write (uint16_t c){

ili9320_data_out_L = (unsigned char)c;

ili9320_ data_out_H = c >> 8;

ili9320_clr_cs();

ili9320_clr_wr();

ili9320_set_cs();

ili9320_set_wr();

}

//*底层读函数*//

uint16_t ili9320_ Read(uint16_t c){

ili9320_clr_cs();

ili9320_clr_rd();

c =ili9320_data_in_L | ((uint16_t ) ili9320_data_in_H << 8;

ili9320_set_cs();

ili9320_set_rd();

}

2.2 系统程序流程图

系统程序的流程如图4所示。系统首先需要对STM32F103微控制器进行初始化,初始化主要是对其内部的系统时钟、通用I/O口、中断控制器、CAN控制器和定时器等资源进行设置;接着初始化emWin图形库和运行系统主要程序。系统根据实际的显示需求,对主要程序中的任务设置了不同的优先级,保证了系统中不同任务的有序运行。系统主要程序中先判断是否接收到新的CAN报文,对接收的新报文信息进行处理和显示;再通过中断的方式判断是否有界面切换按键信息和报警信息出现,实现相应的界面切换和异常信息的报警。

图4 系统程序流程框图

3 实验结果

3.1 搭建实验平台

为验证该液晶显示系统的显示效果,在设计的硬件电路图基础上,制作完成本系统的实验电路板,并配置相应的开关按键、报警器、液晶显示屏等外设,形成了能够满足实际需求的液晶显示系统实验平台。具体的实物如图5所示。

图5 液晶显示系统实物图

3.2 实验应用及结果显示

将文中的液晶显示系统应用到锂离子蓄电池矿用电机车电池管理系统中,该系统通过CAN总线接口接收电池管理系统其他模块发送的电池信息,实现了电机车电池管理系统中各个电池模块的电压、电流、剩余电量等信息的详细显示。显示结果从如图6可以看出。

图6 液晶显示结果图

4 结束语

本文以STM32微控制器和2.8 in的TFT-LCD液晶屏作为硬件基础,软件方面采用了emWin图形库,通过软硬件的结合,设计完成了一种液晶显示系统。经实验验证,设计的液晶显示系统,具有编程简单、运行稳定、显示界面友好等优点,可满足不同场合的显示要求,具有很强的实用价值。

[1]龙燕,李剑锋,曹科峰,等.以FPGA为核心的液晶显示电路设计与实现[J].液晶与显示,2006,21(3):274-278.

[2]彭志红,袁野,林韵英,等.国内液晶显示技术的发展概况[J],电视技术,2013,37(S2):425-426.

[3]陈新,蒲庆文.基于emWin图形库的电动汽车液晶仪表设计[J].仪表技术与传感器,2013(7):105-107.

[4]孙书鹰,陈志佳,寇超. 新一代嵌入式微控制器STM32F103开发与应用[J].微型计算机应用,2010,31(12):59-63.

[5]孙林军,贺锋涛.基于STM32控制器液晶的接口实现[J],电视技术,2013,37(1):77-79.

[6]周立功,张华.深入浅出ARM7[M].北京:北京航天航空大学出版社,2008.

[7]王兰英.基于STM32嵌入式系统的uCGUI移植与实现[J].四川理工学院学报:自然科学版,2012,25(1):56-58.

[8]石亿,黄辉先,赵娟,等.uC/OS-II与uC/GUI在Cortex-M3上的移植研究与实现[J].微型计算机信息,2012,28(9):159-161.

Design of LCD Display System Based on STM32 and emWin

XIAO Linjing,YU Pengjie,YU Zhihao,CHANG Long,YUE Mingchen

(CollegeofMechanicalandElectronicEngineering,ShandongUniversityofScienceandTechnology,ShandongQingdao266590,China)

In order to meet the personalized needs of modern electronic products for liquid crystal display, a LCD display system is designed in this paper, which is based on STM32 micro controller and the application of emWin graphics library. Based on the analysis of the superiority of STM32 micro controller and emWin graphics library, the hardware design of the LCD display system and the transplant of emWin graphic library in STM32 platform in detail are introduced. Finally, the LCD display system is verified through a practical experiment. The results show that the LCD display system is steady, reliable, user-friendly and has a good practical effect.

LCD display system; STM32 micro controller; emWin graphic library; transplant

山东省科技发展计划项目(2012GSF11606)

TN27

A

10.16280/j.videoe.2015.01.010

2014-06-06

【本文献信息】肖林京,于鹏杰,于志豪,等.基于STM32和emWin图形库的液晶显示系统设计[J].电视技术,2015,39(1).

肖林京(1966— ),教授,博士生导师,主要从事煤矿机电一体化、煤矿新能源车辆方面的研究;

于鹏杰(1990— ),硕士生,主研弱信号检测和现场总线通信技术。

责任编辑:许 盈

猜你喜欢

液晶显示微控制器底层
航天企业提升采购能力的底层逻辑
基于TRIZ理论液晶显示模块开发板的创新设计
物联网技术在微控制器实验教学中的应用
用于高品质电动汽车的分布式并行计算
122×32 点阵液晶显示汉字原理实验
Mouser推出TI C2000Delfino微控制器LaunchPad套件
回到现实底层与悲悯情怀
意法半导体(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器
中国底层电影研究探略
略论“底层”