陳亞男++田嘉欣++杜佳慧


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