郭盛杰
(國(guó)營(yíng)第785廠,山西太原030024)
近幾年來(lái)隨著信息技術(shù)的飛速發(fā)展以及人們對(duì)信息顯示方式的不斷追求,LED顯示得到了最迅猛的發(fā)展[2]。LED顯示屏以其顏色鮮亮,顯示信息量大,內(nèi)容更新快,壽命長(zhǎng),耗電量低,可靠性高,易于操作等特點(diǎn),在我們這個(gè)經(jīng)濟(jì)社會(huì)中扮演著重要角色。本論文所設(shè)計(jì)的LED點(diǎn)陣顯示系統(tǒng)是根據(jù)手中已有的資料開(kāi)發(fā)出的一種操作簡(jiǎn)單、更新速度快、可以根據(jù)實(shí)際需求實(shí)現(xiàn)任意規(guī)格的LED的拼裝的顯示系統(tǒng)。
LED點(diǎn)陣模塊,是組成顯示屏的基本單元[1],但各廠家的模塊參數(shù)有所不同。點(diǎn)陣(陣列)常用的為8×8、16×16,點(diǎn)陣都是單管芯,分共陰和共陽(yáng),一般都用5 V供電;圖1為8×8點(diǎn)陣。
圖1 點(diǎn)陣
上下位機(jī)之間的數(shù)據(jù)傳送采用串行異步通信方式,通信接口電平可選用RS232RS422或RS485標(biāo)準(zhǔn)。
圖2 LED點(diǎn)陣顯示系統(tǒng)框圖
本次設(shè)計(jì)的上位機(jī)界面如圖3所示,由字符輸入窗口、字符顯示窗口、通信窗口組成。
圖3 上位機(jī)界面
上位機(jī)界面實(shí)現(xiàn)了字符的輸入、模擬顯示器顯示內(nèi)容以及與下位機(jī)通信等功能。由上位機(jī)發(fā)送命令,下位機(jī)接受并執(zhí)行命令,通過(guò)驅(qū)動(dòng)模塊由LED點(diǎn)陣模塊顯示出來(lái)。在實(shí)際應(yīng)用的過(guò)程中,LED顯示器是由多個(gè)16×16點(diǎn)陣組成的屏幕;本次設(shè)計(jì)上位機(jī)界面模擬使用了16×16LED顯示區(qū)域,僅相當(dāng)于LED顯示屏的作用。
漢字在計(jì)算機(jī)中處理時(shí)是采用圖形的方法,即每個(gè)漢字就是一個(gè)圖形。顯示一個(gè)漢字就是顯示一個(gè)圖形符號(hào),這個(gè)圖形符號(hào)稱(chēng)為漢字字模。點(diǎn)陣漢字是漢字字型最基本的表示法。點(diǎn)陣字模的原理是把漢字的方形區(qū)域細(xì)分為若干小圓,每個(gè)小圓便是一個(gè)基本點(diǎn)。在一定范圍內(nèi),凡筆畫(huà)經(jīng)過(guò)的小圓便形成黑點(diǎn),不經(jīng)過(guò)的形成白點(diǎn),若黑點(diǎn)代表1,白點(diǎn)代表0,那么小圓恰好可以用一個(gè)十六進(jìn)制位表示。
本軟件可以顯示楷體、黑體、宋體等不同種類(lèi)字體。例如要顯示一個(gè)16×16點(diǎn)陣字庫(kù):首先用戶(hù)選擇點(diǎn)陣類(lèi)型,確認(rèn)16×16點(diǎn)陣類(lèi)型,然后選擇字體,在文本框輸入一個(gè)要生成的漢字;(因?yàn)楸疚乃O(shè)計(jì)的點(diǎn)陣掃描是以8×8點(diǎn)陣為單位掃描的,也就是說(shuō)一個(gè)16×16點(diǎn)陣字庫(kù)要掃描四個(gè)8×8個(gè)點(diǎn)陣)凡筆畫(huà)經(jīng)過(guò)的小圓便形成黑點(diǎn),不經(jīng)過(guò)的形成白點(diǎn),若黑點(diǎn)代表1,白點(diǎn)代表0,那么一個(gè)小圓恰好可以用一個(gè)十六進(jìn)制位表示。這樣就可以顯示出來(lái)一個(gè)16×16的點(diǎn)陣漢字,然后將所對(duì)應(yīng)點(diǎn)陣信息數(shù)據(jù)通過(guò)串行口傳遞給下位機(jī)顯示。
16×16點(diǎn)陣漢字字模是由四個(gè)8×8點(diǎn)陣組成的。一個(gè)16×16的點(diǎn)陣要掃描四次完成,0的地方不填充,1的地方填充為黑色,如此循環(huán)把16×16個(gè)圓全填充好后,將其數(shù)字轉(zhuǎn)化為十六進(jìn)制,這樣就顯示了一個(gè)完整的漢字。同時(shí),也生成了一組數(shù)據(jù),這些數(shù)據(jù)就是所產(chǎn)生漢字的信息。
圖4 點(diǎn)陣漢字顯示
(1)編程工具的選擇
隨著計(jì)算機(jī)的發(fā)展,微機(jī)的軟件開(kāi)發(fā)平臺(tái)已由DOS轉(zhuǎn)入Windows,在圖形化的Windows操作系統(tǒng)下,提出了可視化的軟件開(kāi)發(fā)方法。LED點(diǎn)陣顯示屏的使用需要一個(gè)可以輸入在顯示器上顯示文字信息的操作平臺(tái)。所以本設(shè)計(jì)以VB語(yǔ)言編寫(xiě)了一個(gè)上位機(jī)的控制界面以控制LED點(diǎn)陣顯示器。
(2)軟件的基本構(gòu)成
根據(jù)微機(jī)功能的需求,主控軟件必須具有更改顯示內(nèi)容、設(shè)置字體、設(shè)置字體大小及精細(xì)度、數(shù)據(jù)通信等功能,因此上位機(jī)控制軟件的流程圖如圖5所示。
圖5 上位機(jī)控制軟件流圖
根據(jù)功能要求,整個(gè)上位機(jī)軟件是由顯示字符模塊、設(shè)置字體模塊、設(shè)置點(diǎn)陣類(lèi)型模塊和數(shù)據(jù)通信模塊四部分構(gòu)成。主程序流程如圖6所示,主控軟件的各部分功能與相應(yīng)的程序模塊一一對(duì)應(yīng)。
軟件直接利用Visual Basic(VB)提供的各種可視化編程控件,如 Mscomm,OptionButton,Image,Lable,CommonDialong等[3]。
更改顯示內(nèi)容模塊、設(shè)置點(diǎn)陣類(lèi)型模塊、設(shè)置字體模塊等主控軟件的功能模塊具體程序流程如圖7,圖8和圖9所示。
圖6 主程序流程圖
圖7 更改顯示內(nèi)容模塊流程
圖8 設(shè)置字體流程圖
圖9 設(shè)置點(diǎn)陣類(lèi)型流程圖
部分關(guān)鍵代碼:
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
'逐點(diǎn)讀取顏色值
iColor=Pic1.Point(i+intV*16,j+intH*16)
'Debug.Print iColor
'記錄黑色點(diǎn)的數(shù)量
If iColor<=25 Then X=X+1
Next
Next
'Debug.Print x
'矩形區(qū)域內(nèi)有足夠多的黑色點(diǎn)即判定為有效,LED點(diǎn)亮
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
本文對(duì)一種可靠、新穎、易于開(kāi)發(fā)的16×16LED點(diǎn)陣漢字顯示系統(tǒng)的上位機(jī)設(shè)計(jì)進(jìn)行了論述。該系統(tǒng)通過(guò)通訊接口由上位機(jī)發(fā)送數(shù)據(jù),可方便地實(shí)現(xiàn)點(diǎn)陣屏顯示信息的實(shí)時(shí)更新,所設(shè)計(jì)的系統(tǒng)性能穩(wěn)定、操作方便、占用存儲(chǔ)空間少,有著可隨意進(jìn)行拼接等功能,具有廣闊的市場(chǎng)前景。
[1]關(guān)積珍.我國(guó)LED顯示屏產(chǎn)業(yè)冷思考[J].電子產(chǎn)品世界,1998(9):27-28.
[2]諸昌鈐.LED顯示屏系統(tǒng)原理及工程技術(shù)[M].成都:電子科技大學(xué)出版社,2000.
[3]Miscrosoft公司著.Visual Basic6.0控件參考手冊(cè)[M].希望圖書(shū)創(chuàng)作室譯.北京:希望電腦公司,1999:263-267.