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