图形点阵式液晶显示模块在冲击力监测系统中
由于点阵式液晶显示模块功耗低、体积小,且可以显示各种字符、汉字以及图形,因而可广泛应用于数字式仪表和各种低功耗监测系统中。笔者利用该模块设计的冲击力监测系统能够实时显示冲击力的大小、速度、峰值及平均值,且操作界面友好。同时在每次测试的开始,都有语音提示;此外,还可根据需要选择资料的存储和打印。本文将重点介绍图形点阵式液晶控制模块与凌阳单片机之间的硬件设计电路和软件编程方法。
1 冲击力监测系统的组成和功能
图1 所示是一个冲击力监测系统的功能框图。本系统由信号采集、信号处理和信号输出三部分组成。其中信号采集部分由力传感器(BK-2Y)和光电编码器(ZKX-6-50BM7.5-G05E)组成。BK-2Y是一款高精度力传感器,主要测量作用力的大小,测量范围最大可达500kg,其输出信号经TS-2放大器放大后,输出电压范围为-5V~+5V;光电编码器是高精度角位移传感器,其工作原理是采用圆光栅经光电转换将轴的角度位移转换成电脉冲信号,然后直接用于测量角位移和角速度,或间接用于测量直线位移和直线速度。
中央处理器选用凌阳单片机SPCE061A。由于冲击力监测系统要求CPU响应速度快、处理能力强并能够实时处理信息,所以本设计选用功能强大的凌阳16位单片机。SPCE061A在2.6V~3.6V工作电压范围内的工作速度为0.32MHz~49.152MHz。SPCE061A自带2kB flash、32位可编程的多功能I/O端口、两个16位定时器/计数器、32768Hz实时时钟低压复位/监测电路、8通道10位模 - 数转换输入等。
输出部分选用320×240点阵的LCD液晶显示屏,显示控制器选用STN3224-2A。由于STN3224-2A是针对图形显示而设计的,因此编程十分简单。
2 系统显示部分的硬件设计
本监测系统的显示屏采用LFUBK911A,与之配套的显示控制器STN3224-2A具有以下特点:
●适用于图形显示较多的环境,可显示数字、字母、汉字和特殊字符;
●每一次写一点,8bit色彩深度,共256色;
●总共8页显示缓冲,可以设定显示页和写入面;
●每次写入或读出后,X方向或Y方向的自动加1、均加1或不变可通过参数设定;
STN3224-2A显示控制器的接口线包括数据D0~D7,地址线A0和A1、片选线CS、读信号RD、写信号WR、电源VCC、地GND以及背光信号等。SPCE061A与STN3224-2A有两种接口方法,一种是在两者之间加一个锁存器,另一种是直接连接。硬件接法不同会影响到软件的设计。本文采用直接连接的方法,其接口电路如图2所示。其中CPU垢端口IOA2~IOA6和IOA8~IOA15将被初始化为输出口,端口IOA0、IOA1(输入力信号)和IOA7将被初始化为输入口。
3 系统显示软件设计
3.1 软件设计流程
STN3224-2A分四步完成一个点的操作,笔者在编写曲线程序时,先定义了一个写点的子程序(Write-dot),以便于主程序的操作。程序如下:
写参数
A> 写参数到端口1(A0=1,A1=0),其定义为:
bit7=1,Y方向在读/写后自动加1;
bit6=1,X方向在读/写后自动加1;
bit[5……3],显示页号(0~7);
bit[2……0],读/写页号(0~7);
B> 读一次端口1以锁存参数(这一步很重要,如果没有读Port1,系统将把刚才输入的数据默认为X值)。
(2)分两次写入X(0~511,只显示0~319);
A> 写bit8到端口1(对应关系X8→D0);
B> 写bit[7……0]到端口1(如果仅为读数据,则写到端口3)。
(3)写Y(0~255,只显示0~319)
写bit[7……0]到端口2(A0=0,A1=1)。
(4)数据到端口0(A0=0,A1=0),bit8O数据表示颜色灰度。图3所示是其写数据流程。
3.2 软件实现方法
液晶显示控制器的软件部分包括初始化程序和应用程序。初始化包括清屏和初始化参数。应用程序分为显示背景和显示实时曲线两部分。背景部分是指预先建立的(x,y)坐标轴以及相关的说明(汉字)。本控制器不带汉字库,显示汉字时,首先根据汉字字形编出字模数据块,用户可以根据要求编写任意大小的汉字,本文采用的汉字大小为16×16点阵。
显示实时光滑曲线是本监测系统显示部分的关键。结点阵式液晶屏的操作实际是对点的操作,曲线是由一系列不连续的点组成的。本系统主要测试冲击力,而冲击力作为输入数据必然有着很大的跳跃性,这就造成了曲线的不连续。为了美观和实用,本方利用编程技巧来对曲线进行了修饰。
子程序write-y-line (x,l,h,color)是修饰曲线的一个子函数,其中x表示点的x坐标,1表示前一个点的y坐标,h表示后一个点的y坐标,color表示点的颜色。在子程序中,先比较前后两个点的y坐标的大小。如果1小于h,则以点(x,l)为终点画一直线。这样就把不连续的点连成了曲线。Write-y-line(x,l,h,color)程序流程图如图4所示。其显示实时曲线主程序(C语言)如下:
p=0x0010; //采集数据存储区首地址
for(x=280;x>0;x- -) //坐标原点在液晶上对应的坐标是(280,40)
{
ad_one(280-x); //ad_one是A/D转换子程序,这是将采集的第0个力信号进行转换
l=*p; //取前一个数据
p + + ;
h= * p; //取后一个数据
if((1 - h>2) | | (h - 1>2)) //判断前一个数据与后一个数据间隔是否大于2,若大于将在两点之间画一直线。
{set_opTIon(m,m,2) //设置操作参数,读/写后Y自动加一
write_y_line(x,l,h,0xlc); //调子程序,画直线
set_opTIon(m,m,0) //设置操作参数,读/写后X、Y均不加一
write_dot(x,h,0xlc) //在(x,h)描点,点的颜色为绿色
}
else //判断前一个数据与后一个数据间隔是否大于2,若小于将在(x,h)描点
{
set_opTIon(m,m,0);
write_dot(x,h,0xlc);
}
}
4 结束语
针对图形显示而设计的STN3224-2A具有编程简单,应用灵活等特点。它与功能强大的凌阳单片机配合使用可现对冲击力曲线的实时显示。目前,该系统已在实验过程中取得良好的效果。