摘 要:本文研究了基于Linux系統(tǒng)的LED顯示屏實(shí)時(shí)控制的方案。VSD控制卡支持二次開(kāi)發(fā),在Linux操作系統(tǒng)上根據(jù)預(yù)定的通訊協(xié)議,自主封裝數(shù)據(jù)并將數(shù)據(jù)包發(fā)送至控制器,實(shí)現(xiàn)LED顯示屏的實(shí)時(shí)控制。
關(guān)鍵詞:LED顯示屏;Linux;VSD控制卡;二次開(kāi)發(fā)
中圖分類(lèi)號(hào):TP316
LED(發(fā)光二極管)顯示屏是80年代末期在全球迅猛發(fā)展的新型信息發(fā)布媒體之一。其利用可發(fā)光的二極管構(gòu)成的二維點(diǎn)陣模塊或像素單元組成在一定面積的顯示屏幕上,具有可靠性高、使用時(shí)間長(zhǎng)、使用成本低、顯示穩(wěn)定且亮度高、環(huán)境適應(yīng)能力強(qiáng)等特點(diǎn),因此被廣泛應(yīng)用于商業(yè)廣告、金融交易、政府機(jī)構(gòu)、信息報(bào)導(dǎo)等諸多領(lǐng)域。隨著科學(xué)水平的快速發(fā)展,LED顯示屏技術(shù)也在不斷地完善和發(fā)展,應(yīng)用領(lǐng)域愈加廣闊。
通常情況下,對(duì)于小模塊顯示屏或者簡(jiǎn)單的字符圖像顯示都是采用51系列單片機(jī)作為控制芯片。利用單片機(jī)控制LED顯示屏的設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,使用的器材較為常見(jiàn)且價(jià)格低廉,編程簡(jiǎn)單,調(diào)試方便。但是由于單片機(jī)的端口資源有限,如果要使顯示的內(nèi)容做出左右移動(dòng),飛入飛出,中間展開(kāi),百葉窗等特殊效果,這就需要編寫(xiě)相當(dāng)復(fù)雜的算法程序,需要有較高的編程能力。
對(duì)于大屏幕的LED顯示,利用51系列單片機(jī)控制移位寄存器來(lái)實(shí)現(xiàn)將數(shù)據(jù)的串行轉(zhuǎn)為并行的方式已經(jīng)無(wú)法操作點(diǎn)陣規(guī)模如此龐大的顯示屏[1]。目前,一般采用的方案是使用ARM作為主控芯片,用于控制顯示內(nèi)容復(fù)雜,顯示效果豐富的大屏幕LED顯示。通過(guò)使用可編輯邏輯器件來(lái)實(shí)現(xiàn)系統(tǒng)的電路功能,不但能滿足大型LED顯示系統(tǒng)圖像數(shù)據(jù)傳輸對(duì)速度的高要求,改善了電路的結(jié)構(gòu)和性能狀況,并且增加了系統(tǒng)電路的可靠性,使整個(gè)系統(tǒng)更加靈活。在實(shí)際生活應(yīng)用中LED顯示屏的顯示內(nèi)容、顯示效果或顯示方式如需發(fā)生變化,程序設(shè)計(jì)者只需要靈活修改相應(yīng)設(shè)計(jì)語(yǔ)言代碼即可,而不需要改變系統(tǒng)的電路結(jié)構(gòu),從而縮短了設(shè)計(jì)周期,降低了成本。
本設(shè)計(jì)的最終目的是開(kāi)發(fā)一個(gè)能夠應(yīng)用于實(shí)際生活中的LED顯示系統(tǒng),使用者可以方便靈活地操作,并作為學(xué)習(xí)交流使用。由于CPU和端口資源極其有限,故本設(shè)計(jì)采用以ARM9作為系統(tǒng)控制核心的視展VSD控制卡,完成串口通訊和網(wǎng)口通訊兩種通訊方式,通過(guò)二次開(kāi)發(fā)實(shí)現(xiàn)對(duì)LED顯示屏的實(shí)時(shí)控制。串口通訊所使用的協(xié)議是RS232串口通訊協(xié)議。網(wǎng)絡(luò)通訊使用的是100M/10M自適應(yīng)網(wǎng)口,可對(duì)控制卡任意設(shè)定IP地址及MAC地址,PC機(jī)可自動(dòng)連接控制卡,控制卡也能夠自動(dòng)上報(bào)IP到指定的計(jì)算機(jī)或服務(wù)器,可用于外網(wǎng)通訊。
1 原理分析
LED點(diǎn)陣模塊是把一定數(shù)量的LED燈管按行列方式排列在一起,通過(guò)實(shí)現(xiàn)對(duì)特定的LED燈管發(fā)亮與不發(fā)亮的控制完成各種文字字符或圖形圖像的顯示。在固定面積的點(diǎn)陣模塊中集成的LED像素越多,顯示的文字字符或圖形圖像就會(huì)越清晰。不管顯示的是文字字符還是圖形圖像信息,其都是由LED像素拼湊而成。若需要顯示某個(gè)指定的字符,則只要使LED顯示屏上相應(yīng)位置的燈管處于正向工作狀態(tài)(即燈管兩端加上正向電壓),點(diǎn)亮該LED燈管即可。
顯示屏的掃描方式一般分為靜態(tài)掃描和動(dòng)態(tài)掃描兩種。靜態(tài)掃描要求每個(gè)像素點(diǎn)分別對(duì)應(yīng)一套驅(qū)動(dòng)電路,因此若顯示屏為n*m矩陣模塊,則需要有n*m套相應(yīng)的驅(qū)動(dòng)電路。動(dòng)態(tài)掃描應(yīng)用多路復(fù)用技術(shù)把N條I/O線路的可用數(shù)量劃分成適當(dāng)數(shù)量的行與列,通過(guò)行掃描和列掃描方式來(lái)控制指定的燈珠發(fā)亮[2]。若顯示屏采用的是P路復(fù)用技術(shù),則每P個(gè)像素點(diǎn)只需要一套驅(qū)動(dòng)電路,n*m個(gè)矩陣模塊僅僅需要n*m/P套驅(qū)動(dòng)電路即可。目前動(dòng)態(tài)掃描方式主要有以下幾種:1/2掃描,1/4掃描,1/8掃描,1/16掃描等。由于顯示屏是按照逐行掃描刷新顯示的,因此掃描的方式?jīng)Q定了顯示刷新的方式。如1/4掃描就是每次刷新1行,4行為一個(gè)掃描周期。一般來(lái)說(shuō),室內(nèi)屏采用1/16掃描,室外屏和半室外屏采用1/16或者1/8掃描。對(duì)于放置在烈日容易照射到的環(huán)境下一般采用1/4掃描。用于實(shí)際生活中的LED顯示屏,幾乎都是采用動(dòng)態(tài)掃描驅(qū)動(dòng)方式。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
由于本設(shè)計(jì)采用的LED顯示屏僅有顯示驅(qū)動(dòng)程序,故還需編寫(xiě)系統(tǒng)上位機(jī)的控制程序。系統(tǒng)設(shè)計(jì)的原理圖如下:
圖1 系統(tǒng)原理圖
該設(shè)計(jì)方案的控制流程為:
(1)程序中使用MiniXML解析庫(kù)將VSD控制卡的一些配置參數(shù)存儲(chǔ)在XML文件中,文件中存儲(chǔ)的數(shù)據(jù)信息主要有控制卡的IP地址,端口號(hào),顯示屏的顏色、寬度和高度等。程序中通過(guò)訪問(wèn)該文件讀取配置參數(shù),如使用串口通訊方式則按照串口RS232的通訊協(xié)議實(shí)現(xiàn)數(shù)據(jù)通信,網(wǎng)口通訊是利用socket編程實(shí)現(xiàn)與控制卡的通訊連接。
(2)待PC機(jī)與控制卡實(shí)現(xiàn)通訊后,程序中按照通訊協(xié)議封裝顯示內(nèi)容、顯示效果和顯示方式的數(shù)據(jù)信息,將這些數(shù)據(jù)信息打包成數(shù)據(jù)包。通過(guò)串口通訊或網(wǎng)口通訊方式將該數(shù)據(jù)包及其相應(yīng)的控制信息發(fā)送至ARM控制卡。控制卡將這些數(shù)據(jù)信息解析后,形成相應(yīng)的控制碼,并存儲(chǔ)在內(nèi)部的存儲(chǔ)器中。
(3)控制卡將存儲(chǔ)在內(nèi)部存儲(chǔ)器的數(shù)據(jù)信息發(fā)送至掃描驅(qū)動(dòng)電路,并對(duì)其提供足夠的驅(qū)動(dòng)電流。掃描驅(qū)動(dòng)電路對(duì)上位機(jī)傳送過(guò)來(lái)的驅(qū)動(dòng)信號(hào)分成兩路信號(hào),一路傳給行驅(qū)動(dòng)電路,一路傳給列驅(qū)動(dòng)電路,通過(guò)行掃描及列掃描方式控制相應(yīng)的行與列的LED燈管。
(4)將行驅(qū)動(dòng)信號(hào)及列驅(qū)動(dòng)信號(hào)加載到LED顯示器上,點(diǎn)亮與驅(qū)動(dòng)信號(hào)相對(duì)應(yīng)的燈管即可顯示出指定的內(nèi)容。在存儲(chǔ)器中的數(shù)據(jù)信息沒(méi)有顯示完成的過(guò)程中,串口通訊會(huì)關(guān)閉RS232的接收器中斷,用來(lái)避免顯示屏顯示的過(guò)程中有新的數(shù)據(jù)傳來(lái)而中斷內(nèi)容顯示的完整性。而網(wǎng)口通訊則關(guān)閉Socket描述符,將CPU資源更多地用在顯示屏的顯示上。
VSD控制卡的通訊協(xié)議采用三層協(xié)議模式:鏈路層、傳輸層和節(jié)目應(yīng)用層。鏈路層協(xié)議通過(guò)添加起始符(0x55),添加結(jié)束符(0xAA),計(jì)算并添加CRC校驗(yàn)碼,并對(duì)數(shù)據(jù)段進(jìn)行關(guān)鍵字轉(zhuǎn)義等進(jìn)行封裝打包。傳輸層協(xié)議完成的工作是封裝發(fā)送控制命令或者節(jié)目數(shù)據(jù)拆分組包的數(shù)據(jù)包。一條控制命令形成一個(gè)傳輸層的數(shù)據(jù)包。一個(gè)節(jié)目數(shù)據(jù)的發(fā)送,對(duì)應(yīng)于多個(gè)傳輸數(shù)據(jù)包。一般為起始包,數(shù)據(jù)包,數(shù)據(jù)包,……,數(shù)據(jù)包,結(jié)束包,即一個(gè)起始包,多個(gè)數(shù)據(jù)包,一個(gè)結(jié)束包。節(jié)目應(yīng)用層協(xié)議封裝播放節(jié)目的數(shù)據(jù),數(shù)據(jù)包包含節(jié)目屬性頭部,節(jié)目,區(qū)域,頁(yè)面,內(nèi)碼文字,文本文字,數(shù)字時(shí)鐘,圖形圖像等元素的協(xié)議定義。
3 結(jié)束語(yǔ)
由于本系統(tǒng)的LED顯示屏模塊已經(jīng)具備較為完善的底層驅(qū)動(dòng)程序和驅(qū)動(dòng)控制電路,所以本系統(tǒng)的關(guān)鍵是軟件設(shè)計(jì)實(shí)現(xiàn)與控制卡之間的通訊,組包拆包,發(fā)送數(shù)據(jù)包等。本設(shè)計(jì)較為完善地實(shí)現(xiàn)系統(tǒng)該有的各項(xiàng)功能,能很好地運(yùn)用于證券交易、金融、體育、交通、廣告等領(lǐng)域中。系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)了串口通訊和網(wǎng)口通訊兩種方式,通過(guò)串口通訊可以短距離控制LED顯示屏,使用的數(shù)據(jù)線較少。網(wǎng)口通訊是為了能夠?qū)崿F(xiàn)遠(yuǎn)距離控制和多卡控制,使用Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)遠(yuǎn)程控制。
參考文獻(xiàn):
[1]周志敏,周紀(jì)海,紀(jì)愛(ài)華.LED驅(qū)動(dòng)電路設(shè)計(jì)與應(yīng)用[M].北京:人民郵電出版社,2006.
[2]周小平,何豐,曾平平.LED顯示屏及其掃描電路的硬件及軟件實(shí)現(xiàn)[J].印刷電路信息,2005(01):36-38.
作者簡(jiǎn)介:王藝偉(1991-),男,福建龍海人,學(xué)生,學(xué)士,研究方向:嵌入式應(yīng)用。
作者單位:閩江學(xué)院 物理學(xué)與電子信息工程系,福州 350108
基金項(xiàng)目:閩江學(xué)院大學(xué)生創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目資助(No.201310395053)。