謝梅芬 林其華
(1福建林業(yè)職業(yè)技術(shù)學(xué)院;2南平技師學(xué)院 福建南平 353000)
隨著計算機及相關(guān)的微電子、光電子技術(shù)的發(fā)展,以LED(發(fā)光二極管)為基礎(chǔ)的LED電子顯示屏作為視覺傳播媒體的重要一支也有了突飛猛進的發(fā)展。LED顯示屏有幾個典型的特點:①全彩化和高亮度化。LED顯示屏誕生之初以單色調(diào)為主,表現(xiàn)形式單一。隨著科技進步LED顯示屏已經(jīng)實現(xiàn)了全彩化,并成為其發(fā)展的重要方向,其高亮節(jié)能特性使得全天候的信息展示也成為可能。②規(guī)范化和標準化。隨著LED生產(chǎn)工藝的成熟和材料技術(shù)的提高,LED顯示屏的生產(chǎn)和創(chuàng)新已經(jīng)規(guī)范化和標準化。利用LED構(gòu)成的點陣模塊或像素單元可組成可變面積的顯示屏幕,再加上微電子技術(shù)的發(fā)展,各種控制芯片內(nèi)部的集成度越來越高,功能越來越強大,運行速度越來越快,而價格卻越來越低,構(gòu)成LED顯示屏的硬件數(shù)量變得越來赿少,電路變得越來越簡單,突出產(chǎn)品性價比。③產(chǎn)品結(jié)構(gòu)多元化。傳統(tǒng)LED顯示屏的特點是大型,超大型,而為了較好的與現(xiàn)代服務(wù)業(yè)和信息領(lǐng)域相互適應(yīng),LED顯示屏的生產(chǎn)將呈現(xiàn)小型化和專業(yè)化特點。政府機關(guān)、公共場所、醫(yī)院、銀行、學(xué)校、各類商場、公交車上隨處可見LED顯示屏作為各類信息的發(fā)布工具,針對LED顯示屏進行研究有一定的現(xiàn)實意義。
文章研究分析了當前通用的LED顯示屏設(shè)計思想和設(shè)計方法,擬定了幾套設(shè)計方案進行分析比較,最終選定了4塊市面上常見的共陽極8×8 LED點陣構(gòu)成16×16點陣模塊單元,基于Keil 開發(fā)環(huán)境,以C語言為編程語言,選擇AT89S52單片機作為控制核心,外加行驅(qū)動電路和列驅(qū)動電路驅(qū)動點陣模塊,實現(xiàn)16×16分辨率的小型廣告屏的設(shè)計,并可通過級聯(lián)的方法擴展成用戶所需更高顯示分辨率的顯示屏。
LED顯示屏的顯示接口從電路驅(qū)動原理上可分為靜態(tài)顯示接口和動態(tài)顯示接口兩種。以共陽極的LED點陣為例,靜態(tài)顯示接口LED點陣每行的公共端恒定接+5V電源,每行的各列連接各自獨立的列驅(qū)動電路,顯示屏中每一個LED發(fā)光點的亮滅由列驅(qū)動電路的輸出驅(qū)動信號決定,低電平點亮LED,高電平熄滅LED,控制器根據(jù)顯示所需內(nèi)容控制列驅(qū)動器輸出高低電平從而實現(xiàn)顯示各種文字或圖形的目的。靜態(tài)顯示LED的亮滅一直保持穩(wěn)定不變,直到控制器輸出顯示數(shù)據(jù)改變。靜態(tài)顯示接口電路具有以較小的電流可獲得較高的亮度,顯示不閃爍,編程相對簡單,占用單片機的時間少的優(yōu)點,但這種接口電路每個LED需一個輸出端口控制,16×16的點陣有256個LED需要256個輸出端口,所需的端口較多,即使通過外接8位鎖存器來擴展輸出端口的數(shù)量,在控制器端口減少的同時會增加32個鎖存器,造成硬件成本上升,電路排版布線難度加大,所以LED點陣不采用靜態(tài)接口電路。
動態(tài)顯示接口將LED點陣各行公共端接到各自的行驅(qū)動電路,并且將各行的同名列都并聯(lián)起來,接到相應(yīng)的列驅(qū)動電路。采用逐行掃描的工作方式。仍以共陽極的LED點陣為例,在某一時段,控制器只選中LED點陣的某一行,該行驅(qū)動器輸出高電平,其余行驅(qū)動器輸出低電平,這樣只有選中行的LED可能被驅(qū)動點亮,而其它行因未被選中,整行LED均不可能點亮。根據(jù)選中行所需顯示內(nèi)容控制列驅(qū)動器輸出高低電平點亮相應(yīng)位置上的LED,從而實現(xiàn)該行顯示所要求的文字或圖形。這樣按順序從上到下逐行選中LED點陣的各行驅(qū)動器,循環(huán)向各列驅(qū)動器發(fā)送該行的顯示數(shù)據(jù),各行分別顯示所需的文字或圖形信息在本行呈現(xiàn)的部分。如果各行的掃描時間較長,掃描頻率低,觀測到的是一行一行斷續(xù)的顯示效果,無法完整顯示文字或圖形信息,若將行刷新掃描頻率加快,達到40Hz以上,利用人眼的視覺殘留特性,就好像各行相應(yīng)LED是同時點亮一樣,使文字或圖形信息看起來是一個靜止的畫面。動態(tài)顯示方式因各行相應(yīng)的列進行了并聯(lián),大大的減少了控制器的輸出控制端口,以16×16的點陣為例,行控制器需要16個輸出端口,列控制器也需要16個輸出端口,輸出端口由256個減少到32個,驅(qū)動器也隨之減少,便于印刷電路板的排版布線。文章以動態(tài)顯示為基礎(chǔ)進行了控制電路的設(shè)計和實現(xiàn)。
采用動態(tài)顯示接口進行逐行掃描時,每行有一個行驅(qū)動器,控制器逐行輸出行控制信號,各行的同名列并聯(lián)共用同一個列驅(qū)動器,控制器輸出選中行所需的顯示數(shù)據(jù)作為列控制信號。顯示數(shù)據(jù)通常存儲在單片機的數(shù)據(jù)存儲器中,開辟一塊數(shù)組空間有序排放。控制器輸出列驅(qū)動信號到列驅(qū)動器的傳輸方式有并行通訊和串行通訊兩種,考慮到點陣模塊的級聯(lián)及整體設(shè)計的緊湊性和易維護性,文章采用了串行通信的方法。串行通訊是一位一位的按順序傳送數(shù)據(jù),相對于各位同時傳送的并行通訊來說傳送效率低,這樣帶來的影響是列驅(qū)動信號的傳送的時間會比較長。在行掃描周期一定的情況下,留給行顯示的時間就縮短了,會影響到LED的亮度?;驗榱吮WC顯示亮度而增加行顯示時間,又會降低顯示行刷新掃描頻率,顯示畫面閃動影響顯示效果。文章設(shè)計把此過程分解成列數(shù)據(jù)準備(傳送)和列數(shù)據(jù)顯示(輸出)兩部分,對此兩個過程采用時間重疊處理方式:顯示本行各列數(shù)據(jù)的同時,準備下一行的列數(shù)據(jù)。綜上分析,系統(tǒng)總體設(shè)計如圖1所示,該控制系統(tǒng)設(shè)計的硬件主要包括電源模塊及控制單元、行驅(qū)動電路、列驅(qū)動電路。
圖1 控制系統(tǒng)總體設(shè)計示意圖
系統(tǒng)中的主要芯片都需要5V直流電源供電,需要把民用220V交流電降壓整流為5V直流輸出。先用220V轉(zhuǎn)9V變壓器進行降壓,再通過橋式整流電路把交流電轉(zhuǎn)換為直流電,最后用三端穩(wěn)壓模塊LM7805輸出穩(wěn)壓的5V電圧。
控制單元是整個顯示系統(tǒng)的核心,主要由單片機和總線驅(qū)動器組成。單片機種類很多,因為只需要顯示特定的圖形或文字,無需龐大的字庫,故選擇美國ATMEL公司生產(chǎn)的單片機AT89S52,利用其8K字節(jié) Flash ROM和256B字節(jié)的RAM即可滿足字庫儲存的需求,不需要擴展外存儲器。為了防止單片機的數(shù)據(jù)/地址/控制總線端口超負荷工作,設(shè)計中加入了TTL型三態(tài)雙向緩沖門電路總線驅(qū)動器74HC245,其在控制單元中不承擔任何邏輯控制的功能,起到電流緩沖保護功能。
行驅(qū)動電路由譯碼器和驅(qū)動管組成。由于16×16LED點陣屏有16行,為充分利用單片機的I/O接口,電路設(shè)計中加入了2個3-8線譯碼器74HC138,接受由單片機P1口輸出的控制信號,提供16個互斥的低電平有效輸出。74HC138的3個輸入使能門電路用于芯片的使能和片選,在輸出使能的情況下,保證每次只有一片74HC138工作,輸出互斥的行電平信號,行驅(qū)動電路原理如圖2所示。
圖2 行驅(qū)動電路設(shè)計圖
應(yīng)用時,控制器輸出的EN信號為兩片74HC138共同的使能信號,低電平使能,允許行驅(qū)動信號輸出,若EN為高電平,則禁止行驅(qū)動信號輸出。D信號即為片選信號,低電平選中U1(74HC138)芯片,高電平選中U2(74HC138)芯片。C、B、A信號經(jīng)選中的74HC138譯碼后從Y0-Y7端輸出,且低電平有效,選中要掃描的行。當輸出的行信號D、C、B、A按二進制遞增的順序變化,可實現(xiàn)循環(huán)選中16行。當輸出0000時,D端為低電平,選中U1芯片,C、B、A為000,經(jīng)譯碼U1的Y0將輸出低電平,其余的輸出端均輸出高電平,選中LED顯示模塊的最上一行。當經(jīng)0001、0010變化到0111時,仍是U1芯片工作,Y7將輸出低電平,選中LED顯示模塊的第八行,再變化到1000時,D端為高電平,則選中U2芯片,C、B、A為000,U2的Y0將輸出低電平,選中LED顯示模塊的第9行。當經(jīng)1001、1010變化到1111時,仍是U2芯片工作,Y7將輸出低電平,選中LED顯示模塊的最后一行。這樣控制器輸出的控制信號D、C、B、A從0000變化到1111,共16個狀態(tài),按順序分別選通LED點陣模塊的16行,不斷重復(fù)上述過程,這就是行驅(qū)動電路的逐行掃描過程,其頻率可由單片機定時器預(yù)設(shè)的定時時間來決定。
由于行驅(qū)動電路一條行線上要驅(qū)動16列的LED進行顯示,僅靠74HC138譯碼器提供不了足夠的電流來驅(qū)動16個LED同時點亮。因此,該設(shè)計在74HC138譯碼輸出端后加上74HC4953芯片,內(nèi)含雙CMOS管,將電流信號放大,使得行驅(qū)動電路的安全性,可靠性更高,也保證了高掃描頻率下LED的亮度。
列驅(qū)動電路由移位鎖存器級聯(lián)構(gòu)成。該設(shè)計選用了業(yè)內(nèi)常用的串行輸入并行輸出移位寄存器74HC595,并具有輸出鎖存功能。74HC595的一個重要特點是串行數(shù)據(jù)的移入和8位數(shù)據(jù)并行鎖存輸出分別由各自獨立的時鐘控制,在移位時鐘作用下,串行數(shù)據(jù)不斷移入移位寄存器,但輸出鎖存器仍保持原來的數(shù)據(jù),輸出并不改變,只有在輸出鎖存時鐘作用下移位寄存器的數(shù)據(jù)才由輸出鎖存器輸出,從而可以實現(xiàn)在前臺顯示本行各列顯示數(shù)據(jù)的同時在后臺串行傳入下一行的顯示數(shù)據(jù),同一時刻同時進行兩種操作,實現(xiàn)時間利用率最大化,列驅(qū)動電路原理如圖3所示。
圖3 列驅(qū)動電路設(shè)計圖
列驅(qū)動電路由U3和U4兩片串行輸入并行輸出移位寄存器74HC595級聯(lián)組成:第一片U3的DS端作為控制器輸出的串行數(shù)據(jù)入口(DIN),接收顯示數(shù)據(jù),Q7′端連接第二片U4的DS端,將第一片移出的數(shù)據(jù)傳遞到下一片的串行數(shù)據(jù)輸入口,實現(xiàn)級聯(lián)。當U3、U4的SHCP(11腳)同時接收到來自控制器(CLK)產(chǎn)生的上升沿信號時,控制器事先已由DIN輸出顯示數(shù)據(jù)的一位由U3的DS(14腳)引腳輸入至U3移位寄存器Q0中,U3移位寄存器的其余各位依次移位,U3的Q7數(shù)據(jù)級聯(lián)傳入U4的Q0中,U4其余各位也依次移位,實現(xiàn)一位顯示數(shù)據(jù)的移入??刂破鳟a(chǎn)生連續(xù)16個脈沖,把下一行16列的顯示數(shù)據(jù)依次輸入到由U3、U4級聯(lián)而成的16位移位寄存器中。移位過程完成后,當本行顯示周期結(jié)束,控制器產(chǎn)生輸出鎖存信號(STB),U3、U4的HTCP(11腳)同時接收到一上升沿信號,16列顯示數(shù)據(jù)由移位寄存器并行鎖存到鎖存器,由于OE(13腳)始終接地,使能鎖存器輸出,選通行的各列顯示數(shù)據(jù)就LED模塊上顯示出來。
2.4 16×16顯示模塊的級聯(lián)
16×16顯示模塊在硬件的設(shè)計上采用串行方式傳遞顯示數(shù)據(jù),因此可以比較容易實現(xiàn)各16×16顯示模塊之間的級聯(lián),組成16×64等更大顯示分辨率的顯示模塊。在16×16顯示模塊中設(shè)有輸入接線端口(DIN)和輸出接線端口(DOUT),將由控制器輸入的行信號A、B、C、D、 EN和列控制信號STB、CLK分別接到模塊的輸入接線端口和輸出接線端口相對應(yīng)的位置,將外部輸入的串行顯示數(shù)據(jù)輸入信號接到模塊輸入接線端口的DINX(X為1或2,可分別對紅色和綠色的數(shù)據(jù))接線端,并將模塊的串行輸出信號接到輸出接線端口的DOUTX(X為1或2)接線端。這樣級聯(lián)的下一個模塊的行和列的控制信號與前一個模塊的行列控制信號同步,而數(shù)據(jù)卻級聯(lián)起來了,上一模塊移出的顯示數(shù)據(jù)作為了下一模塊的輸入信號。只要速度足夠快,可實現(xiàn)多個16×16顯示模塊的級聯(lián),組成更大分辨率的顯示模塊。
圖4 模塊輸入輸出接線端口圖
文章的控制程序基于Keil開發(fā)環(huán)境,采用C語言編程。C語言是高級語言,接近人類的思維習(xí)慣,程序的可讀性較好,且C語言編寫的程序采用模塊化結(jié)構(gòu),結(jié)構(gòu)清晰,可移植性好,可顯著縮短軟件的開發(fā)時間,提高開發(fā)效率。
LED顯示屏控制軟件的主要功能是向顯示屏提供不同顯示內(nèi)容和顯示效果的顯示數(shù)據(jù),并產(chǎn)生硬件電路工作時序所需的各種控制信號,使屏幕顯示達到要求。根據(jù)模塊化程序設(shè)計的思路,把顯示屏的軟件分為系統(tǒng)初始化模塊、定時服務(wù)模塊、列數(shù)據(jù)串行驅(qū)動模塊、行掃描驅(qū)動模塊、各種顯示效果模塊等,各個模塊可進行獨立設(shè)計和調(diào)試,將復(fù)雜的控制問題分解到各個模塊中去解決,控制思路明晰,降低了設(shè)計難度。
在主程序中先對系統(tǒng)進行初始化操作,系統(tǒng)的初始化主要是對輸入輸出端口狀態(tài)做好初始配置,實現(xiàn)控制器對顯示屏的正常連接。對定時器寄存器進行初始化編程,設(shè)定其工作方式、定時時間等參數(shù),設(shè)置好中斷控制寄存器,開啟相應(yīng)中斷。對顯示屏進行清屏,預(yù)置掃描行為第1行,為顯示屏進入工作狀態(tài)做好前期準備。初始化后主程序根據(jù)顯示要求不斷調(diào)用相應(yīng)的顯示模塊,實現(xiàn)顯示效果,達到控制要求,系統(tǒng)主程序流程詳見圖5。
圖5 系統(tǒng)主程序流程圖
發(fā)送新行顯示數(shù)據(jù)程序功能為控制列驅(qū)動器產(chǎn)生移位驅(qū)動信號,將新行顯示數(shù)據(jù)依次移入串入并出移位寄存器,為新行的顯示做好準備。LED顯示屏能展示各種不同的顯示效果,只是因為顯示數(shù)據(jù)在組織順序上發(fā)生了變化,按照不同的算法對顯示數(shù)據(jù)進行處理,就能產(chǎn)生靜態(tài)顯示、左跑馬、上卷簾等不同的顯示效果。該函數(shù)在執(zhí)行時顯示器仍在顯示上一行的顯示內(nèi)容,詳見圖6。
圖6 發(fā)送新行顯示數(shù)據(jù)程序流程圖
單行數(shù)據(jù)顯示程序功能為驅(qū)動選中行的行驅(qū)動器輸出低電平,將新行的顯示數(shù)據(jù)在顯示屏上顯示出來,并將行指針指向下一行,為避免拖尾,保證顯示質(zhì)量,采取了消隱措施。該函數(shù)在定時器中斷處理程序中被不斷調(diào)用,詳見圖7。
圖7 單行數(shù)據(jù)顯示流程圖
LED屏顯示原理是依靠逐行掃描來實現(xiàn)的,只要掃描的速度快,由于人眼的視覺暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的顯示內(nèi)容。文章中各行的逐行掃描顯示在定時器中斷處理中執(zhí)行,行掃描的速度由定時器的定時時間來決定,設(shè)定為1.25ms,每屏16行,刷新頻率為50Hz,可保證穩(wěn)定顯示不閃爍,詳見圖8。
圖8 定時器中斷處理程序流程圖
文章基于Keil C語言,確定以PC機為上位機,AT89S52單片機為核心控制器件,移位鎖存器74HC595為列驅(qū)動器和譯碼器74HC138為譯碼電路器件, CMOS管為行驅(qū)動電路器件的設(shè)計方案成功制作了由16×16點陣模塊組成的小型廣告屏,能動態(tài)的顯示漢字、英文、數(shù)字。文章給出了系統(tǒng)具體的硬件設(shè)計方案,硬件結(jié)構(gòu)電路圖,軟件流程圖。該系統(tǒng)具有硬件少、結(jié)構(gòu)簡單、容易實現(xiàn)、性能穩(wěn)定可靠和成本低等特點。通過實現(xiàn)過程加強了對LED行業(yè)的認識,提升了對51系列單片機、74HC595、74HC138等關(guān)鍵芯片的綜合應(yīng)用能力。