基于OLED技术的导弹指挥仪模拟器显示功能设计
2020-02-14杨明绪杨建新
杨明绪,杨建新,李 林
(海军航空大学 青岛校区,山东 青岛 266041)
0 引言
在某型导弹指挥仪课程授课过程中,存在通电检查显示画面课堂讲解难度大、实装配套不足、实操科目无法有针对性开展等问题,针对现阶段课程建设的情况,设计一款模拟器实现指挥仪。其显示功能对提升教学效果、建立学员更加直观的印象,贴近实战化保障具有很重要的意义。导弹指挥仪系统主要通过显控台完成相应的显示功能,如对载机的相关飞行参数、战场敌我态势实现字符或图形的动态显示。为实现模拟器显示功能,基于NI CompactRIO进行嵌入式硬件设计,并借助OLED 技术实现显示功能[1]。
图1 显控台模拟器总体结构框图Fig.1 Block diagram of the overall structure of the console simulator
图2 显示模块逻辑电路和接口电路Fig.2 Shows the module logic circuit and interface circuit
NI CompactRIO 通过可自定义的现场可编程门阵列技术,根据用户的实际需求进行配置的输入输出测控系统,借助专业软件编程,定义并生成电路。NI CompactRIO 是一款在军事、工业及教学等领域应用较为广泛的嵌入式紧凑型测量控制系统。该系统由用户自定义的输入输出模块、现场可编程门阵列逻辑及嵌入式实时控制器组成。集成的现场可编程门阵列使系统具备高速并行的运算能力,为使整个系统实现低功耗,采取一体化设计。NI CompactRIO系统硬件主体结构由太空铝支撑,紧凑型设,使其外观显得小巧而坚固,满足严苛的工业级安装使用环境[2],但CompactRIO 系统本身不具有显示功能,必须配备相应的显示器件实现其显示功能。
由于某型飞机导弹指挥仪系统显控台,要求兼备显示与控制功能,为实现前台交互显示可通过借助有机发光二极管显示的OLED 技术完成设计。OLED 作为一种较为热门的发光和显示薄膜器件,其原理是通过在阳极和阴极之间夹多层有机薄膜导电致发光器件完成发光。由于其属于电流型发光器件,显示器的亮度可用电流来控制。OLED发光的点处于交叉排列的阴阳两极中间,可以通过阴阳两极的选通与关断来控制每一个OLED 点位的明暗[3]。
本文主要通过实现OLED 技术与cRIO 系统融合,完成导弹指挥仪模拟器显示功能的设计。
1 总体结构设计
导弹指挥仪显示功能模拟器总体结构主要由cRIO 系统、显示模块、上位机及电源模块等组成。cRIO 系统通过解读上位机的指令完成对显示模块的管理功能,并回传显示模块状态信息;显示模块实现导弹指挥仪模拟器的所有显示功能[4];上位机是根据指挥仪的控制原理完成对cRIO系统的综合控制;电源负责对上位机及cRIO 系统供给电源。其结构框图如图1 所示。系统的重点就是显示模块的选择及功能的实现。
2 显示模块选择
显示模块的选择是本设计的重要环节,根据不同的显示器件,可设计多种显示方案。其中,由7 段数码管组成的显示器结构简单,仅适合于数字和字母显示的优势,但不能提供复杂的人机界面;点阵显示器可自由组合不同大小的尺寸,人机界面比较丰富,但点阵显示器接口相对复杂。
通过对某型飞机导弹指挥仪系统显示相关指标进行综合分析,并对比市面上应用较多的显示模块,选用了诺维信公司提供的VGG12864Z。
VGG12864Z 模块本身通过增加接口电路,在增加可匹配期间的同时,减少模块本身的功耗。为实现控制OLED屏的显示,在设计过程中对接口电路和驱动电路进行全新设计。该部分电路主要为了产生相应的电源激励信号、驱动指令信号和传输数据显示信号。模块逻辑电路和接口电路参见图2 中下边虚框部分。
2.1 模块概况
VGG12864Z 模块是64 行×128 列液晶显示点组成的16 级灰度点阵单色图形/字符显示OLED 模块。其外部接口电路设计简单,使用非常方便,具有高对比度、高亮度、宽视角、响应速度快、温度范围宽,低功耗等显著特点,可以满足指挥仪模拟器字符、图形显示的基本要求。该模块可以直接与8 位微处理器相连,通过并行8 位数据接口,完成读、写操作时序逻辑传输。通过内置的128×64×4bit数据显示RAM,其中每4 位数据对应OLED 显示屏上一个点的明状态。
2.2 驱动接口
图2 中下部虚框部分为VGG12864Z-S003 的模块逻辑电路和外部接口电路。用户在使用过程中只需要对接口供电,产生驱动指令信号和传输显示数据信号,完成OLED 屏的使用。通过研究发现,模块的外部激励信号仅与SDD1325 有关,所以只要对SSD1325 的输入特性及指令系统进行开发,就可以使用该模块的相应功能[5]。
图3 显示RAM的地址结构Fig.3 Shows the address structure of RAM
通过查阅相关资料了解到cRIO 系统可以对RES#、WR#、RD#、CS#、D/C 和D0~D7 共计13 个端口对SSD1325驱动芯片进行控制,从而完成OLED 显示屏的显示。
RES#是控制模块复位的信号,可以通过软件进行定义。规定当RES#输入为低电平时,所有图像RAM 清零,与此同时控制RAM 恢复为出厂设置。CS#为片选信号,当CS#输入为低电平时,cRIO 才能完成与驱动模块通信。WR#和RD#分别为写选择信号和读选择信号,当片选信号输入低电平时,在其下降沿的读写选择信号有效。D/C 是数据或命令选择信号,当数据/命令选择信号的输入为高电平时,代表传输的为数据信号,此时D0~D7 端显示为数据信号。所传输的需要进行显示的数据,由外部控制电路控制通过cRIO 外部接口输入到缓存中。进入到缓存的数据首先需要通过色域解码器对传输过来的数据进行解码,最终将解码后的数据通过行列驱动的模式驱动OLED 屏幕显示。当数据/命令选择信号输入为低电平时,代表传输的为命令信号,D0~D7 段显示的为命令信号,该控制命令信号通过cRIO 的输入输出接口传输到系统控制命令解码器中,对所传输的命令进行解码,最终存储到相应的命令寄存器中。
2.3 操作使用
对于该模块的功能实现的操作,可以将其简化为OLED 屏幕初始化和OLED 屏幕显示两大步骤。为实现正常的显示,要将OLED 屏幕进行初始化操作。首先,要对LED 显示器进行设置,包括显示方式的设置、对比度控制设置、屏幕起始行的设置。完成一系列设置后,需要将OLED 屏幕显示清零并通过软件对开机显示内容进行编辑。为完成OLED 的字符或数据的显示需要通过编程实现,可以通过向GDDRAM 中拷入数据完成,拷入的数据应包含数据、命令、状态及其数据段子程序等内容。
2.4 地址结构
图4 实时数据采集cRIO系统Fig.4 Real-time data acquisition cRIO system
VGG12864Z 模块是内置了128×80×4bit 的显示存储器,RAM 容量为40960bit。该显示存储器主要用于存储显示数据,OLED 显示屏像素点的明暗状态应该与显存地址中的数据状态一一对应,通常显存的数据作为直接驱动信号显示图形或者字符。某存储地址的数据状态为“1”,则该地址对应的像素点为亮;某存储地址的数据状态为“0”,则该地址对应的像素点为暗。可以显示窗口的大小为128×64,通过起始行和结束行进行设置。一个字节对应着两个像素点(其中,低4 位表示左像素点,高4 位表示右像素点的灰度值)。RAM 的地址结构如图3 所示[6]。
3 显示功能设计
实时数据采集的cRIO 系统是一个可自定义的嵌入式系统。其硬件主要由cRIO 机箱、控制器和功能模块组成,如图4 所示。由于该系统相匹配的软件和硬件资源较为丰富,可以通过搭建显示功能的接口,构成一个基于NI Compact RIO 可编程自动化控制器(PAC)。通过支持现场的输入、输出模块的读写及数据处理,以可编程门阵列方式编程实现,响应速度快、传输速率和可靠性都十分高[7]。
3.1 硬件集成
NI cRIO-9103 是 具 备4 个 插 槽 的cRIO 底 座, 含三百万门可自定义的可编程门阵列。时钟频率为40MHz,自带196Kb 缓存,可将系统的其他相应功能模块都连接在这个底座上,其他槽位留给实际的数据采集功能用。
NI cRIO-9014 模块需要连接在cRIO-9103 底座上,是cRIO 系统的实时控制器。cRIO-9014 使用的是MPC5200嵌入式处理器,该处理器是Freescale 公司的基于Power Architecture 技术实现的,处理器主频具有400MHz,内置嵌入式实时操作系统商业版VxWorks。该控制器是NI、Freescale 和Wind River 三大公司第二次在Compact RIO 平台上的合作成果。cRIO 9014 为实现共享变量的方式与上位PC 机建立实时数据通信,提供了以太网络接口。
3.2 模块配置
如要求1s 内完成一幅屏的刷新,则一个像素点的显示时间为最低按一个像素点的显示为7μs 计算,刷新一幅屏需要的时间为128×64×7μs=57344μs=57.344ms,基本看不到屏的刷新过程。根据信号的多少可选择相应的数字I/O模块,速度快的模块,需要的模块数多。
在此配置NI-9401,它具备100ns 超高速数字输入/输出,8 通道,双向,可按半字节(4 位)配置,满足现实需求。
3.3 软件编程
LabVIEW 平台是一款通过图形逻辑进行编程的软件,具有所见即所得的特点,cRIO 系统运行的所有程序都需要在上进行编写。通常为了更好地支持软件的编译,除了需要安装LabVIEW 平台主程序外,还需要安装几个必要的插件如:NI cRIO,LabVIEW FPGA,LabVIEW RT 等。用户编写的程序分为3 个层次,最下面的一层是安装到cRIO 的底架上,可以直接对现场的输入输出模块进行控制,程序的运行速度最快,经过LabVIEW 程序编译后可以下载至可编程门阵列上。通过对可编程门阵列的自定义设置,程序实现对硬件的驱动[8];第二层程序是拷贝在实时控制器上,这一层程序属于中间层,通过它既可以直接对可编程门阵列上程序前面板的所有输入输出控件进行读写操作,同时也可以通过建立网络发布的变量与PC 级的程序建立通信;第三层程序主要完成人——机交互性的操作,通过拷贝到计算机上在Windows 操作系统执行的程序。该软件设计组成及流程如图5 所示。
对电机的直接驱动程序与输入信号检测是在系统底架cRIO-9103 上实现的,可以通过自定义的可编程门阵列实现对硬件的控制。安装NI cRIO,LabVIEW FPGA,LabVIEW RT 产检后可在NI LabVIEW 软件平台上实现对可编程门阵列的程序设计、编译、下载和运行监控。
使用底架cRIO-9103 模块,其单周期电路单元的执行时间为25 ns。主控制器采用Freescale 设计生产的微处理器和操作系统为Wind River 的实时系统。为能够快速高效地记录现场数据,采用了主频具有400MHz,存储为128M 内存和2G 的拓展存贮空间的cRIO-9014 模块。
某型导弹指挥仪显控台需要以字符或图形的形式显示敌我态势,为完成其显示,需要首先对显示屏上应显示文字或图片等信息建立字符库,而这一套字符库需要自己进行编译。根据OLED 屏幕显示数据的RAM 地址结构特点,选用了嵌入式字模工具软件Zimo21 建立字模库。由于OLED 模组的字符结构是低位在上、高位在下的顺序,还需要进行字节倒序的设置[9]。所有的字符、字形等,可以根据显控台的显示需求进行编译。字符库的建立通常首先需要采用C51 格式取模,生成单个字符的点阵显示源代码,然后根据图形显示需要在OLED 显示屏上的显示效果,最后根据显示效果对源代码进行相应调整即可得到。在实现系统显示功能的基础上,配合cRIO 系统可以完成对导弹指挥仪系统显控台的交互式仿真设计[10,11]。
图5 显示功能软件组成及其流程Fig.5 Shows the functional software composition and its process
4 结束语
本文借助OLED 技术,通过cRIO 系统对某型飞机导弹指挥仪系统显示功能实现仿真设计。通过上位机模拟飞机状态信息、传递指令信息、装订参数信息,并通过OLED技术进行对上位机模拟、传递、装订的相关数据实时动态显示,基本能够实现导弹指挥仪系统的显示功能仿真,并根据该模拟显示系统的构建可实现对导弹指挥仪显控台的通电检查类科目的仿真训练,探索并拓展了实装半实物仿真的教学领域。