摘 要:LED显示系统是根据点阵数据来显示汉字、字符及图像信息的。该设计利用字库将输入文本的字模提取出来,转换为适用于单片机的格式,并可将其保存为.txt文件或利用VB的ActiveX控件通过串口与单片机进行通信,具体的通信参数可以动态设置,从而实现对LED显示屏的控制作用。
关键词:LED;VB;字模提取;串行通信
LED显示系统用于显示汉字、字符及图像信息,广泛应用于铁路、银行、工厂及户外广告媒体,在人们的日常生活、工业生产中成为用来传播信息、共享信息的重要工具。通常,LED显示系统是根据汉字或字符的点阵数据进行显示的。本设计利用字库将输入文字的字模提取出来,并可转换为适合于单片机的格式,保存为文本文件或利用串口与单片机进行通信,从而实现对LED显示屏的控制作用。设计界面中还具有一个LED模拟显示屏,使提取字模后的文字效果可预先在计算机屏幕上显示出来。
1 系统功能
本系统的主要功能模块有3个:字模的提取模块、模拟LED显示模块和串行通信模块,如图1所示。为了方便用户操作,在系统中针对这3个功能模块设置了相应的菜单项,分别对这3个模块进行了介绍。
2 字模提取
一个汉字或字符可以看作多个点阵的排列,笔画经过的地方为“1”,未经过的地方为“0”,这些“1”和“0”数据信息如果按照一定的顺序排列,就组成汉字或字符的点阵字模。要想显示一个汉字或字符,首先必须得到这样的点阵字模。

图1 功能框图
Fig.1 Functional block diagram
在本设计中,点阵字模利用 HZK16和ASC16两个字库文件获取,字模提取的程序流程如图2所示。
每个汉字在字库中有唯一的区位码与之对应,根据汉字的机内码可以确定其区位码及其在字库中的起始位置,就可以从字库中取出汉字字模[1,2]。具体步骤如下。
根据汉字的机内码推算出区位码:
区码=机内码高字节-A 0H;
位码=机内码低字节-A 0H。
根据区位码计算出汉字在字库中的偏移地址(即汉字在字库中的位置):
偏移地址=[94*(区码-1)+(位码-1)]*32。
由于16×16的点阵字库,每个汉字占32个字节,以此偏移地址为基点连续读取32个字节就是该汉字的点阵字模[3]。ASCII码的显示与汉字的显示基本原理相同。其显示点阵直接按ASCII码从小到大依次排列,只是每个ASCII码在文本文件中只占1个字节且小于80H,而且ASCII码为8×16点阵,所以在ASC16文件中,每个ASCII码的点阵也只占16个字节。
下面是根据上述思路提取字模数据的关键代码。


图2 字模提取流程图
Fig.2 Dot-matrix abstraction flow chart

在字模提取模块中,不但可以对单个汉字或字符进行点阵数据的提取,还可对多个汉字或字符进行处理,这样就增加了系统的实用性,在实际应用中,可对一个通知、一段消息或一条文字性广告进行显示控制。
图3是字模提取软件的主界面,该设计在主界面中完成对汉字或字符点阵数据的提取功能,可实现16×16点阵格式的字模提取。
在一些情况下,提取的点阵数据较多或需要提取到别的地方使用,为了方便用户,该软件可以利用Open语句创建文件,并向文件输出字符(Output),将提取的点阵数据进行保存。使用菜单栏中“文件”/“保存为.txt文件”即可实现,保存效果如图4所示。

图3 主界面
Fig.3 Main interface
3 模拟LED显示
为了使用户能更直观地看到提取的点阵数据显示出文字或字符的效果,在主界面的右上方,利用PictureBox控件设计了一个LED模拟显示屏[4],使提取字模后的文字效果可预先在计算机屏幕上显示出来,并且具有不同的显示控制方式[5]。LED模拟显示屏的程序流程如图5所示。
如果被提取字模的汉字或字符有多个,可以单击“上一个”、“下一个”按钮来控制显示不同的汉字或字符,这是默认的显示方式。除此之外,菜单栏中“显示”/“循环”可以将文字的显示方
式改为每隔1.5 s就向后显示一个字,直到最后一个字显示完毕再从头开始自动循环。在这种显示模式中主要采用了 Timer控件进行控制。
下面是实现循环显示的关键代码。


图4 点阵数据文件
Fig.4 Dot-matrix data file

同时,为了保持界面的美观,还可以对LED模拟显示屏的颜色进行设置。
4 串口通信
在得到字模数据后,如果用户需要,可以把字模数据利用串行口发送给单片机。
Visual Basic中的控件分为2类,一类是标准控件,另一类是ActiveX控件。VB在标准串口通信方面提供的具有强大功能的通信控件M SCOMM就属于ActiveX控件[6,7],该控件可设置串行通信数据的发送和接收,对串口状态及串口通信的信息格式和协议进行设置,可直接利用PC机的串行口发送数据。

图5 LED模拟显示流程图
Fig.5 LED analog disp lay flow chart
图6是字模数据发送界面,可对串行通信的端口、波特率进行设置,如果数据格式与单片机的不匹配,可在发送区对其格式进行更改。为实现单片机与 PC机的可靠通信,须保证双方具有相同的数据格式和波特率。
下面是实现串行口通信的关键代码。


图6 数据发送界面
Fig.6 Data transmission interface

5 结 语
本设计利用字库提取并保存输入汉字和字符的字模数据,同时更为直观地模拟LED显示,可预先在计算机屏幕上显示出文字效果,并可根据用户需要调整显示方式。串口通信模块的设计实现了通过串口将字模数据发送到单片机中,使其显示内容丰富,信息更换灵活,具有较强的实用性,可应用到需要点阵数据的场合。