杜 军, 张丹瑞, 李彦卿
(上海船舶运输科学研究所 军品分 所 ,上海200135)
随着科学技术的不断发展及液晶显示技术的进步,液晶显示屏(Liquid Cr ystal Display,LCD)作为重要的人机接口被广泛地应用于各种嵌入式系统中,遍及仪器仪表、智能电表、水表、示波器、分析仪、手持设备、工业控制面板、通讯设备、蓝牙、家用电器、医疗仪器、消费数码产品等显示类产品。同样,在舰船机舱自动化领域也越来越多地应用了LCD显示模块,例如主推进监控系统、电站监控系统和油气监控系统均已开始大范围使用LCD显示模块,作为控制、测量或报警显示单元。通过调查发现,大部分技术人员在开发LCD图形界面时,仍使用原始的开发方法,即直接用单片机语言或嵌入式软件语言对LCD图形进行编程,程序编译后运行在LCD驱动控制器中,然后在LCD上观察图形效果。因为在编程前不知道LCD图形显示效果,要达到满意的图形显示效果,往往要对程序进行多次调整修改;而对于LCD动态显示的文字或数据,编程前必须知道LCD动态显示的坐标,修改也很麻烦;用以上方法编程,LCD图形显示界面的编程时间占全部编程时间的1/2以上,效率非常低。为了提高LCD图形编程效率,提出了一种在windows操作系统下通过计算机软件实现LCD图形绘制的新方法,并自动生成可应用于单片机语言或嵌入式软件语言的文件,从而快速实现点阵LCD图形界面的开发。
设计在windows操作系统下运行的计算机绘图及编译软件,可用鼠标快速绘制LCD图形仿真界面,效果与真实LCD显示一致;编译后产生特定格式的数据文件,包含显示坐标及显示内容等,能直接使用在各单片机和嵌入式系统语言中[4];单片机或嵌入式系统不再需要对LCD具体显示位置和内容编程,只需要对软件产生的格式编写通用的子程序即可。随着LCD的广泛应用,其规格也越来越多,按显示点阵分有两大类:字符点阵,可用于中西文字符显示;图形点阵,可用于点阵图形显示,除能显示中西文字符外,还能显示各种图形[1]。我们研究的设计方法是专门针对图形点阵LCD的,图形点阵LCD一般有如下规格(即分辨率):122×32、128×32、132×32、160×32、256×32、96×64、128×64、132×64、192×64、240×64、96×96、128×96、128×128、160×128、240×128、160×160、240×160、320×240等。
使用VC++进行软件设计,完成以下功能:
1.可针对所有规格点阵的LCD,在软件使用时应可设置LCD的图形点阵规格。
2.在设置的区域范围内,可进行各种画图操作,如画线、画矩形、画圆和写文字等,并可设置线宽和颜色。
3.在设置的区域范围内可进行动态数据和文字的设置,由于动态数据和文字是根据不同情况显示的,画图时不能确定内容,所以在显示动态数据和文字的地方用绘制带标号的矩形表示[3](另外编写1个文本文件,包含标号要显示的具体内容,在编译时直接调用)。
4.可对图形进行编译,编译规则见表1。
表1 图形编译规则
用户针对不同的LCD控制器程序要求,可选择保存为二进制文件、单Byte文件和双Byte文件,文件即可直接应用于汇编语言、PL M语言和C语言等。
完成以上过程后,开发人员可把文件内容拷贝入LCD控制程序中[2],然后按图形类型编写通用子程序(只需开发1次)。该编辑软件的实质为应用通用的图形显示编辑规则,扮演编译器的作用,生成计算机可直接执行的编码。在应用开发中,可嵌入到各个高级计算机语言程序中,显著节约了编程时间,缩短LCD应用开发周期,提高效率。
在某型船的主推进监控系统中,应用了点阵式液晶显示器DMF50174。该LCD的规格为320×240,使用80C196 KC系列单片机驱动LCD控制器。此LCD模块的在系统中的主要功能是显示车令、主机转速、桨角命令和反馈等信息。
具体实现步骤如下:
1.在windows操作系统下打开自行开发的LCD画图及软件编译(可执行文件名makelib.exe)。
2.设置LCD的点阵尺寸。用鼠标点击软件显示栏中的工具按钮“”,然后移动鼠标,使LCD的点阵尺寸为320×240(见图1)。
3.根据实际需要在320×240区域画各种图形及写文字。用鼠标点击软件上方显示栏中的工具按钮,“”为画矩形按钮、“”为画直线按钮,“”为画圆/椭圆按钮“”为写文字按钮(见图2)。另外,工具按钮“”可设置图形的线宽和颜色(见图3)。工具按钮“”可设置各图形的X、Y坐标或矩形的标号(见图4)。
图1 设置LCD点阵尺寸示意图
图2 画图及写文字示意图
图3 设置线宽和颜色对话框图
图4 设置图形坐标对话框图
4.对完成的图进行编译,产生单片机需要的格式文件。点击软件上方的Buil d菜单,弹出选择文件的对话框,选择双Byte文本文件(见图5)。确认后,会弹出保存文件名对话框,输入合适的文件名(见图6)。产生的文件部分内容如下:
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00024 H,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00000 H,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0003CH,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,00054 H,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0006CH,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,0009CH,/*直线*/
0002 H,00001 H,00000 H,00008 H,00138 H,00008 H,000CCH,/*直线*/
0002 H,00001 H,00000 H,00008 H,00054 H,00008 H,000D4 H,/*直线*/
0002 H,00001 H,00000 H,0006DH,000E8 H,0006 DH,00038 H,/*直线*/
0002 H,00001 H,00000 H,00008 H,00054 H,00008 H,0008CH,/*直线*/
0002 H,00001 H,00000 H,00008 H,0006CH,00008 H,00054 H,/*直线*/
0003 H,00001 H,00000 H,00008 H,00008 H,00138 H,000E8 H,/*矩形*/
0003 H,00001 H,00000 H,00008 H,00084 H,00138 H,000B4 H,/*矩形*/
0003 H,00001 H,00000 H,0008CH,0006CH,000E4 H,000B4 H,/*矩形*/
图5 保存文件格式对话框图
图6 保存文件名对话框图
5.将上述产生的文件内容拷贝到单片机程序中,并调用按规定格式编写的图形及文字子程序,编译单片机程序并运行,就可得图7的效果。
图7 图形界面效果图
目前此方法已成功应用在多个监控系统的LCD图形设备中,相比传统的开发方法,提高了工作效率,缩短了开发时间,使图形的绘制和修改更为方便和直观。
[1] 张新强.点阵LCD驱动显控原理与实践[M].北京:北京航空航天大学出版社,2010.
[2] 郭强.液晶显示模块应用与调试[M].北京:电子工业出版社,2010.
[3] 连悦.点阵式液晶显示器DMF50174的应用[J].东北煤炭技术,1999(6):39-41.
[4] 刘建,夏勇军.80C196KC与LCD模块接口设计及其编程实现[J].微处理器,2004,6(3):61-63.