郭盛杰
(国营第785厂,山西太原030024)
近几年来随着信息技术的飞速发展以及人们对信息显示方式的不断追求,LED显示得到了最迅猛的发展[2]。LED显示屏以其颜色鲜亮,显示信息量大,内容更新快,寿命长,耗电量低,可靠性高,易于操作等特点,在我们这个经济社会中扮演着重要角色。本论文所设计的LED点阵显示系统是根据手中已有的资料开发出的一种操作简单、更新速度快、可以根据实际需求实现任意规格的LED的拼装的显示系统。
LED点阵模块,是组成显示屏的基本单元[1],但各厂家的模块参数有所不同。点阵(阵列)常用的为8×8、16×16,点阵都是单管芯,分共阴和共阳,一般都用5 V供电;图1为8×8点阵。
图1 点阵
上下位机之间的数据传送采用串行异步通信方式,通信接口电平可选用RS232RS422或RS485标准。
图2 LED点阵显示系统框图
本次设计的上位机界面如图3所示,由字符输入窗口、字符显示窗口、通信窗口组成。
图3 上位机界面
上位机界面实现了字符的输入、模拟显示器显示内容以及与下位机通信等功能。由上位机发送命令,下位机接受并执行命令,通过驱动模块由LED点阵模块显示出来。在实际应用的过程中,LED显示器是由多个16×16点阵组成的屏幕;本次设计上位机界面模拟使用了16×16LED显示区域,仅相当于LED显示屏的作用。
汉字在计算机中处理时是采用图形的方法,即每个汉字就是一个图形。显示一个汉字就是显示一个图形符号,这个图形符号称为汉字字模。点阵汉字是汉字字型最基本的表示法。点阵字模的原理是把汉字的方形区域细分为若干小圆,每个小圆便是一个基本点。在一定范围内,凡笔画经过的小圆便形成黑点,不经过的形成白点,若黑点代表1,白点代表0,那么小圆恰好可以用一个十六进制位表示。
本软件可以显示楷体、黑体、宋体等不同种类字体。例如要显示一个16×16点阵字库:首先用户选择点阵类型,确认16×16点阵类型,然后选择字体,在文本框输入一个要生成的汉字;(因为本文所设计的点阵扫描是以8×8点阵为单位扫描的,也就是说一个16×16点阵字库要扫描四个8×8个点阵)凡笔画经过的小圆便形成黑点,不经过的形成白点,若黑点代表1,白点代表0,那么一个小圆恰好可以用一个十六进制位表示。这样就可以显示出来一个16×16的点阵汉字,然后将所对应点阵信息数据通过串行口传递给下位机显示。
16×16点阵汉字字模是由四个8×8点阵组成的。一个16×16的点阵要扫描四次完成,0的地方不填充,1的地方填充为黑色,如此循环把16×16个圆全填充好后,将其数字转化为十六进制,这样就显示了一个完整的汉字。同时,也生成了一组数据,这些数据就是所产生汉字的信息。
图4 点阵汉字显示
(1)编程工具的选择
随着计算机的发展,微机的软件开发平台已由DOS转入Windows,在图形化的Windows操作系统下,提出了可视化的软件开发方法。LED点阵显示屏的使用需要一个可以输入在显示器上显示文字信息的操作平台。所以本设计以VB语言编写了一个上位机的控制界面以控制LED点阵显示器。
(2)软件的基本构成
根据微机功能的需求,主控软件必须具有更改显示内容、设置字体、设置字体大小及精细度、数据通信等功能,因此上位机控制软件的流程图如图5所示。
图5 上位机控制软件流图
根据功能要求,整个上位机软件是由显示字符模块、设置字体模块、设置点阵类型模块和数据通信模块四部分构成。主程序流程如图6所示,主控软件的各部分功能与相应的程序模块一一对应。
软件直接利用Visual Basic(VB)提供的各种可视化编程控件,如 Mscomm,OptionButton,Image,Lable,CommonDialong等[3]。
更改显示内容模块、设置点阵类型模块、设置字体模块等主控软件的功能模块具体程序流程如图7,图8和图9所示。
图6 主程序流程图
图7 更改显示内容模块流程
图8 设置字体流程图
图9 设置点阵类型流程图
部分关键代码:
Private Function LED32()
Dim iColor As Long
Dim i As Integer
Dim j As Integer
Dim intH As Integer
Dim intV As Integer
Dim X As Long
intIi=Val(Text3.Text)
Pic1.FillColor=RGB(255,0,0)
X=0
For intV=0 To 31
For intH=0 To 31
For i=0 To 15
For j=0 To 15
'逐点读取颜色值
iColor=Pic1.Point(i+intV*16,j+intH*16)
'Debug.Print iColor
'记录黑色点的数量
If iColor<=25 Then X=X+1
Next
Next
'Debug.Print x
'矩形区域内有足够多的黑色点即判定为有效,LED点亮
If X>intIi Then
Fill(intV,intH)=0
Pic1.FillStyle=0
Pic1.Circle(8+intV*16,8+intH*16),7
Else
Fill(intV,intH)=1
Pic1.FillStyle=1
Pic1.Circle(8+intV*16,8+intH*16),7
End If
X=0
Next
Next
'label.Visible=False
Pic1.FillStyle=1
End Function
本文对一种可靠、新颖、易于开发的16×16LED点阵汉字显示系统的上位机设计进行了论述。该系统通过通讯接口由上位机发送数据,可方便地实现点阵屏显示信息的实时更新,所设计的系统性能稳定、操作方便、占用存储空间少,有着可随意进行拼接等功能,具有广阔的市场前景。
[1]关积珍.我国LED显示屏产业冷思考[J].电子产品世界,1998(9):27-28.
[2]诸昌钤.LED显示屏系统原理及工程技术[M].成都:电子科技大学出版社,2000.
[3]Miscrosoft公司著.Visual Basic6.0控件参考手册[M].希望图书创作室译.北京:希望电脑公司,1999:263-267.