当前位置:文档之家› LED显示屏控制系统的软件设计

LED显示屏控制系统的软件设计

第31卷第1期河北科技大学学报V ol.31,No.1 2010年2月Journal o f Hebei U niv ersity of Science and T echnolog y Feb.2010文章编号:1008 1542(2010)01 0030 05LED显示屏控制系统的软件设计刘红娜,张海涛(沧州职业技术学院信息工程系,河北沧州 061001)摘 要:LED显示系统是根据点阵数据来显示汉字、字符及图像信息的。

该设计利用字库将输入文本的字模提取出来,转换为适用于单片机的格式,并可将其保存为.txt文件或利用VB的Ac tiveX控件通过串口与单片机进行通信,具体的通信参数可以动态设置,从而实现对LED显示屏的控制作用。

关键词:LED;VB;字模提取;串行通信中图分类号:T P312 文献标识码:ASoftw are design of LED display control systemLIU H ong na,ZH ANG H ai tao(Department of Info rmatio n Engineer ing,Cang zhou V ocatio nal College o f T echno log y,Cang zhou H ebei061001,China)Abstract:L ED display sy stem is based on the dot matr ix data to display Chinese characters,character and image infor matio n. T he matrix of t he inqut tex t is ext racted fro m font libra ry and co nv erted to the fo rmat suited for single chip.T hen it can be sav ed as T XT file o r by using VB's A ctiv eX co ntro ls thro ug h the serial por t,the communicatio n w ith t he sing le chip is possi ble,T he specific dynamics of communicatio n parameter s can be set up to achieve contro l o f L ED display.Key words:LED;VB;dot mat rix abst ractio n;ser ial co mmunicationLED显示系统用于显示汉字、字符及图像信息,广泛应用于铁路、银行、工厂及户外广告媒体,在人们的日常生活、工业生产中成为用来传播信息、共享信息的重要工具。

通常,LED显示系统是根据汉字或字符的点阵数据进行显示的。

本设计利用字库将输入文字的字模提取出来,并可转换为适合于单片机的格式,保存为文本文件或利用串口与单片机进行通信,从而实现对LED显示屏的控制作用。

设计界面中还具有一个LED模拟显示屏,使提取字模后的文字效果可预先在计算机屏幕上显示出来。

1 系统功能本系统的主要功能模块有3个:字模的提取模块、模拟LED显示模块和串行通信模块,如图1所示。

为了方便用户操作,在系统中针对这3个功能模块设置了相应的菜单项,分别对这3个模块进行了介绍。

2 字模提取一个汉字或字符可以看作多个点阵的排列,笔画经过的地方为 1,未经过的地方为 0,这些 1和 0数据信息如果按照一定的顺序排列,就组成汉字或字符的点阵字模。

要想显示一个汉字或字符,首先必须得收稿日期:2009 06 11;修回日期:2009 09 11;责任编辑:陈书欣作者简介:刘红娜(1981 ),女,河北沧州人,主要从事通信工程方面的研究。

到这样的点阵字模。

图1 功能框图Fig.1 Functional block diag ram图2 字模提取流程图Fig.2 Dot mat rix abst ractio n flow char t在本设计中,点阵字模利用H ZK16和ASC16两个字库文件获取,字模提取的程序流程如图2所示。

每个汉字在字库中有唯一的区位码与之对应,根据汉字的机内码可以确定其区位码及其在字库中的起始位置,就可以从字库中取出汉字字模[1,2]。

具体步骤如下。

根据汉字的机内码推算出区位码:区码=机内码高字节-A0H ;位码=机内码低字节-A0H 。

根据区位码计算出汉字在字库中的偏移地址(即汉字在字库中的位置):偏移地址=[94*(区码-1)+(位码-1)]*32。

由于16!16的点阵字库,每个汉字占32个字节,以此偏移地址为基点连续读取32个字节就是该汉字的点阵字模[3]。

ASCII 码的显示与汉字的显示基本原理相同。

其显示点阵直接按ASCII 码从小到大依次排列,只是每个ASCII 码在文本文件中只占1个字节且小于80H ,而且ASCII 码为8!16点阵,所以在ASC16文件中,每个ASCII 码的点阵也只占16个字节。

下面是根据上述思路提取字模数据的关键代码。

Private Function CALL_LEDhz(ledstr ing As String )/汉字字模数据的提取ReDim zw (1To Len(T ext1.tex t)*32)For j =1T o Len(Tex t1.tex t)AA =H ex(Asc(M id(ledstring,j,1)))bb =(94*(CLng("&H "&M id(AA,1,2))-&H A1)+(CLng("&H "&M id(AA,3,2))-&H A1))*32For i =1T o 32Step 1Open App.Path &"\H ZK16"For Binary As #1Get #1,bb +i,zw (32*(j -1)+i)Close #1Nex t i 31 第1期 刘红娜等 L ED 显示屏控制系统的软件设计Nex t jEnd FunctionPrivate Function CALL_LEDasc(ledstring As String)/ASCII 码字模数据的提取ReDim zw (1To Len(T ext1.tex t)*32)For j =1T o Len(Tex t1.tex t)AA =H ex(Asc(M id(ledstring,j,1)))bb =(CLng("&H "&M id(AA,1,2)))*16For i =1T o 16Step 1Open App.Path &"\ASC16"For Binary As #2Get #2,bb +i,zw (16*(j-1)+i)Close #2Nex t iNex t jEndFunction图3 主界面F ig.3 M ain int erface在字模提取模块中,不但可以对单个汉字或字符进行点阵数据的提取,还可对多个汉字或字符进行处理,这样就增加了系统的实用性,在实际应用中,可对一个通知、一段消息或一条文字性广告进行显示控制。

图3是字模提取软件的主界面,该设计在主界面中完成对汉字或字符点阵数据的提取功能,可实现16!16点阵格式的字模提取。

在一些情况下,提取的点阵数据较多或需要提取到别的地方使用,为了方便用户,该软件可以利用Open 语句创建文件,并向文件输出字符(Output),将提取的点阵数据进行保存。

使用菜单栏中 文件 / 保存为.tx t 文件 即可实现,保存效果如图4所示。

图4 点阵数据文件Fig.4 Dot mat rix data file3 模拟LED 显示为了使用户能更直观地看到提取的点阵数据显示出文字或字符的效果,在主界面的右上方,利用PictureBox 控件设计了一个LED 模拟显示屏[4],使提取字模后的文字效果可预先在计算机屏幕上显示出来,并且具有不同的显示控制方式[5]。

LED 模拟显示屏的程序流程如图5所示。

如果被提取字模的汉字或字符有多个,可以单击 上一个 、下一个 按钮来控制显示不同的汉字或字符,这是默认的显示方式。

除此之外,菜单栏中 显示 / 循环 可以将文字的显示方式改为每隔1.5s 就向后显示一个字,直到最后一个字显示完毕再从头开始自动循环。

在这种显示模式中主要采用了Timer 控件进行控制。

下面是实现循环显示的关键代码。

Private Sub Timer1_Timer()/Tim er 控件的功能实现If m =Len(b)/256-1Thenm=-1End Ifm=m +132河北科技大学学报 2010年图5 LED 模拟显示流程图F ig.5 L ED analog display flow char t If Optio ny.Value =True T henCall ycirElseIf Optiong.Value =True T henCall gcirElseIf Optiong.Value =True T henCall bcirElseCall rcirEnd IfEnd Sub同时,为了保持界面的美观,还可以对LED 模拟显示屏的颜色进行设置。

4 串口通信在得到字模数据后,如果用户需要,可以把字模数据利用串行口发送给单片机。

Visual Basic 中的控件分为2类,一类是标准控件,另一类是ActiveX 控件。

VB 在标准串口通信方面提供的具有强大功能的通信控件MSCOMM就属图6 数据发送界面Fig.6 Data tr ansmission interface于ActiveX 控件[6,7],该控件可设置串行通信数据的发送和接收,对串口状态及串口通信的信息格式和协议进行设置,可直接利用PC 机的串行口发送数据。

图6是字模数据发送界面,可对串行通信的端口、波特率进行设置,如果数据格式与单片机的不匹配,可在发送区对其格式进行更改。

为实现单片机与PC 机的可靠通信,须保证双方具有相同的数据格式和波特率。

下面是实现串行口通信的关键代码。

Private Sub M SCom m1_OnCom m()/通信控件MSCOMM的功能实现Select Case MSCom mEventCase com EventOverrunTextsend.Text =""Textrecv.T ex t =""Textsend.SetFo cusEx it SubCase com EventRx OverTextsend.Text =""Textrecv.T ex t =""Textsend.SetFo cusEx it SubCase com EventT xFullTextsend.Text =""Textrecv.T ex t =""Textsend.SetFo cus Ex it Sub 33第1期 刘红娜等 L ED 显示屏控制系统的软件设计34河北科技大学学报 2010年 Case com EvReceiveDim str As Stringstr=M SComm.InputTextrecv.T ex t=T ex trecv.T ext+strEnd SelectEnd SubPrivate Sub Co msend_Click() / 确定按钮的功能实现Dim x As StringIf Textsend.Text=""Thenx=MsgBox("发送数据不能为空",16)Ex it SubEnd IfIf N ot M SCo mm1.Por tOpen T henMSComm1.PortOpen=Tr ueEnd IfMSComm1.Output=Tex tsend.Tex tTex tsend.Tex t=""End Sub5 结 语本设计利用字库提取并保存输入汉字和字符的字模数据,同时更为直观地模拟LED显示,可预先在计算机屏幕上显示出文字效果,并可根据用户需要调整显示方式。

相关主题