陳亞男++田嘉欣++杜佳慧
[摘 要]LED電子顯示屏是利用發(fā)光二極管點陣模塊或像素單元組成的平面式顯示屏幕。文章介紹了一款以AT89C52單片機為核心,采用串行傳輸、動態(tài)掃描技術(shù)來制作的16×16 LED電子的多功能顯示屏控制系統(tǒng)的設計。
[關鍵詞]LED顯示屏;單片機;動態(tài)掃描;控制系統(tǒng)
[DOI]10. 13939/j. cnki. zgsc. 2016. 06. 056
1 引 言
2015年筆者申請了北京服裝學院的本科生科研訓練項目(簡稱URTP),項目名稱是“LED電子顯示屏控制系統(tǒng)的設計”。本項目的實施力圖使學生通過單片機及LED顯示屏相關知識的學習,并通過編程軟件的使用及元器件的選擇,初步掌握硬件電路設計及軟件編譯的方法,為后續(xù)課程的學習及畢業(yè)后從事相關的工作奠定一定的基礎。
2 系統(tǒng)基本組成及工作原理
本項目采用的LED顯示屏部分主要是由4個8×8的 LED 點陣組成的 16×16 的 LED 點陣和行列驅(qū)動電路構(gòu)成,組成后的點陣電子顯示屏如圖1所示。
圖1 點陣電子屏實物
本項目采用的是點陣方式顯示漢字,采用這種方式形成顯示需要的圖形或文字是非常靈活的,因為可以依據(jù)不同需要任意組合和變化,只需要提前預設好正確的數(shù)據(jù),然后讓每個LED 發(fā)光器件占據(jù)數(shù)據(jù)中的一位,再通過對點陣上全部的LED燈進行調(diào)節(jié)和控制,在需要該位置上LED器件發(fā)光時,數(shù)據(jù)中相應的位填1,否則填0,這樣就能依照所需顯示相應的圖形或者文字,再按顯示屏的各行各列逐點掃描顯示數(shù)據(jù),這樣能得到所需要的顯示效果。
由于漢字在LED點陣電子顯示屏上顯示比較穩(wěn)定,因此可以通過計算機的字庫提取字模,字庫可以提供多種漢字形式,如隸書、微軟雅黑和新宋等多種選擇方案;另外顯示屏顯示漢字的大小也有不同規(guī)格,常見的有16×16、24×24、32×32、48×48等,漢字的顏色常見的也有紅、黃、綠等常見的顏色。本項目使用的四個 8×8 的 LED 點陣組成一個16×16 的LED 點陣。
本項目采用了動態(tài)掃描法進行漢字顯示。動態(tài)掃描方法即指逐行輪流點亮LED,這樣掃描的驅(qū)動電路可以實現(xiàn)多行(比如 16行)的同名的列共用一套驅(qū)動器。具體就16×16 的點陣來說,把所有同一行的發(fā)光管的陽極連在一起,把所有同一列的發(fā)光管的所有陰極連在一起(共陰極的接法),在顯示過程中,應該先送出對應第一行發(fā)光管亮滅的數(shù)據(jù),然后鎖存,再選通第1行使其燃亮一定時間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時間,然后熄滅;以此類推,第16行之后,又重新燃亮第1行,反復輪回。當這樣輪回的速度足夠快,每一行的顯示時間大約為4ms,由于人眼的視覺暫留現(xiàn)象,就能看到所要顯示的需要漢字了。
采用動態(tài)掃描方式進行漢字顯示時,每一行都有一個對應的行驅(qū)動器,每一行的同名列用的是同一個驅(qū)動器。顯示的漢字數(shù)據(jù)通常存儲在單片機的CPU中,按8位一個字節(jié)的形式順序排放。在實際漢字顯示時需要先把一行中每列的數(shù)據(jù)都發(fā)送至相應的列驅(qū)動器上去,這就存在一個顯示數(shù)據(jù)傳輸?shù)膯栴}。從控制電路到列驅(qū)動器的數(shù)據(jù)傳輸可以采用并列方式或串行方式。顯然,采用并行方式時,從控制電路到列驅(qū)動器的線路數(shù)量大,相應的硬件數(shù)目多。當列數(shù)很多時,并列傳輸?shù)姆桨甘遣豢扇〉摹?/p>
如果采用串行傳輸?shù)姆绞?,控制電路就能只用一條信號線傳輸,將列數(shù)據(jù)一位一位往列驅(qū)動器中傳送,這樣在從硬件方面考慮是十分經(jīng)濟有效的做法。但是,采用串行傳輸?shù)姆绞胶臅r比較長,要傳送的數(shù)據(jù)將按順序一位一位地傳送給列驅(qū)動器,等到該行的各列數(shù)據(jù)全部傳輸?shù)轿灰院?,該行的各列就能并行的顯示出來。這樣,對于任一行的顯示過程都可以分成兩部分,這兩部分分別為列數(shù)據(jù)準備和列數(shù)據(jù)顯示。通過串行傳輸方式顯示漢字,列數(shù)據(jù)準備時間可能需要的時間會很長,由于行掃描周期確定,這樣留給行顯示的時間就會大大縮短,最后可能會影響到所要顯示漢字的亮度和穩(wěn)定性。
如果要解決上述串行傳輸過程中列數(shù)據(jù)準備和列數(shù)據(jù)顯示的時間不統(tǒng)一的問題,可以使用重疊處理的方法。重疊處理的方法是指在顯示某行每列數(shù)據(jù)的同一時刻,單片機也傳送下一列數(shù)據(jù)。為了達到重疊顯示的效果,列數(shù)據(jù)在顯示過程中就需要有鎖存的功能。通過上述種種分析,可以得出列驅(qū)動電路應具有的功能。同時,對于列數(shù)據(jù)準備功能來說,還需要能實現(xiàn)串入并出的功能;對于列數(shù)據(jù)顯示來說,應具有并行鎖存的功能。這樣,該行已準備好的數(shù)據(jù)進入并行鎖存器達到顯示效果時,串并移位寄存器就能夠準備下一行的列數(shù)據(jù)顯示,從而在不會影響本行數(shù)據(jù)的顯示情況下實現(xiàn)漢字的準確無誤顯示。
控制器電路采用單片機,主要負責控制存儲顯示數(shù)據(jù)模塊,安排控制信號的定時與順序、控制驅(qū)動LED顯示點陣的電路等,驅(qū)動電路分為行驅(qū)動電路和列驅(qū)動電路,用來驅(qū)動LED顯示點陣。
本項目的驅(qū)動電路由行驅(qū)動和列驅(qū)動構(gòu)成。為了充分利用單片機的接口,行驅(qū)動電路中加入了一個4-16線譯碼器74HC154。列驅(qū)動由集成電路74HC595構(gòu)成,它具有一個8位串入并出的移位寄存器和一個8位輸出鎖存器的機構(gòu),可以實現(xiàn)在顯示本行列數(shù)據(jù)的同時,傳送下一行的列數(shù)據(jù),即達到重疊處理的目的。
3 系統(tǒng)軟件設計
該LED點陣電子顯示屏各模塊的顯示方式分為靜態(tài)和動態(tài)兩種。其中靜態(tài)顯示原理簡單、控制方便,但硬件接線復雜,通常是一幀畫面輸入以后便可永久顯示,如果我們需要改變顯示內(nèi)容,就必須重新輸出新的點陣數(shù)據(jù),這樣不便于大屏幕的制造,成本高,可靠性低,而且需要的譯碼驅(qū)動裝置也很多,因此,在實際應用中一般采用動態(tài)顯示方式。
動態(tài)顯示采用掃描的方式工作,把整個LED屏幕分為若干部分,每一幅畫面的顯示是顯示完一部分后,又顯示第二部分……直到顯示完成最后一部分又重新開始顯示第一部分,重復循環(huán)進行,在重復掃描速度足夠快的情況下,由于視覺暫留效應,我們看到的就是一幅穩(wěn)定的畫面,也就是說采用動態(tài)掃描顯示需要不斷進行畫面的刷新,在這種方式下其顯示驅(qū)動電路可重復利用,引線也大大減少,從而使硬件成本降低,且顯示屏幕的發(fā)光二極管輪流發(fā)光,使耗電量大大降低,大屏幕的制造、維護更容易,并且能夠增加可靠性。
該點陣式LED顯示屏采用動態(tài)掃描顯示方式,這種顯示方式巧妙地利用了人眼的視覺暫留特性。將連續(xù)的幾幀畫面高速的循環(huán)顯示,只要幀速率高于24幀/秒,人眼看起來就是一個完整的、相對靜止的畫面。
根據(jù)程序設計的結(jié)構(gòu)和思路,把單片機AT89C52在點陣電子屏的顯示任務中的工作量分為以下兩個部分。
3. 1 中斷掃描顯示任務
掃描顯示任務負責把數(shù)據(jù)依次發(fā)送到列驅(qū)動器74HC595,并按嚴格的時序低電平選通16根行掃描線,使每一列數(shù)據(jù)對應著一個行線狀態(tài),部分中斷程序如圖2所示。
圖2 中斷處理程序
3. 2 移動處理任務
移動處理任務負責完成顯示字符逐點陣向左移動的算法處理,這是最基本的顯示效果。其他大部分顯示效果如左移幾個漢字后暫停,全屏定格顯示等都是以逐位左移為基礎。對顯示字符的移動,實質(zhì)上是對顯示緩沖區(qū) BufferDat內(nèi)數(shù)據(jù)的移動。其中,實現(xiàn)漢字上移的程序如圖3所示。
圖3 漢字上移程序
4 結(jié) 論
該項目的研究使學生掌握LED電子顯示屏的基本顯示原理和設計方法,對LED電子顯示屏這個行業(yè)有較為深刻的了解和認識。并且對所學習的一些理論知識進行實踐,通過該項目掌握了單片機軟硬件開發(fā)工具的使用方法,為后續(xù)課程的學習及畢業(yè)后從事相關的工作奠定一定的基礎,同時為以后從事相關行業(yè)的工作積累實際工作經(jīng)驗。