采用MCS51單片機(jī)的大屏幕LED顯示屏高速控制方案
本方案的特點(diǎn)有兩個(gè): 第一,雖然CPU還是通過并行總線給列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù),但是鎖存器的鎖存信號(hào)改用了CPU的控制信號(hào)RD,而不是常規(guī)用法的WR;第二,地址譯碼電路保證了LED點(diǎn)陣片列驅(qū)動(dòng)電路的片選地址和數(shù)據(jù)存儲(chǔ)器的某一段的邏輯地址是重疊的,而不是常規(guī)用法,這兩組地址必須分開。本文引用地址:http://www.ex-cimer.com/article/171611.htm
由于上述電路的一些簡(jiǎn)單更改,單片機(jī)對(duì)LED顯示屏的顯示控制效率將發(fā)生明顯的變化。具體工作過程如下: 假定數(shù)據(jù)指針DPTR中已經(jīng)裝入了數(shù)據(jù)存儲(chǔ)器的地址,執(zhí)行指令“MOVXA,@DPTR”。這條指令的功能是CPU按DPTR的指向從外部數(shù)據(jù)存儲(chǔ)器中讀字模數(shù)據(jù),讀到累加器A中;但是在本電路中,由于LED點(diǎn)陣片列驅(qū)動(dòng)電路的片選地址和數(shù)據(jù)存儲(chǔ)器的某一段的邏輯地址是重疊的,也就是說,在執(zhí)行指令“MOVXA,@DPTR”時(shí),DPTR除了指向外部數(shù)據(jù)存儲(chǔ)器的某個(gè)地址外,還選中了某一個(gè)LED點(diǎn)陣片列驅(qū)動(dòng)電路的鎖存器。如果此時(shí)被選中的這個(gè)鎖存器的鎖存引腳正好有打入脈沖來到,那么鎖存器也就將從外部數(shù)據(jù)存儲(chǔ)器送出的字模數(shù)據(jù)鎖住了。這個(gè)打入脈沖用的就是RD。RD是CPU在執(zhí)行指令“MOVXA,@DPTR”時(shí)向外部數(shù)據(jù)存儲(chǔ)器發(fā)出的讀控制信號(hào)。由于MCS51系列單片機(jī)的讀控制信號(hào)RD和寫控制信號(hào)WR的時(shí)序完全相同[2],RD代替WR實(shí)現(xiàn)鎖存功能,當(dāng)然也就沒有什么懸念了。這條指令在執(zhí)行時(shí),在完成對(duì)數(shù)據(jù)存儲(chǔ)器讀的同時(shí),又完成了對(duì)LED點(diǎn)陣片的寫,因此加快了顯示控制的過程。
前面講過,并行總線時(shí)CPU完成1次向LED點(diǎn)陣片的列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù)的程序過程,大約需要十幾μs;而現(xiàn)在只要4 μs,快多了,因?yàn)楝F(xiàn)在完成1次向LED點(diǎn)陣片的列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù)的程序過程只要兩步,首先給數(shù)據(jù)指針DPTR賦有效地址,接著CPU按DPTR的指向從外部數(shù)據(jù)存儲(chǔ)器中讀字模數(shù)據(jù),與此同時(shí)也將字模數(shù)據(jù)傳給了LED點(diǎn)陣片列驅(qū)動(dòng)電路的鎖存器。2條指令,4個(gè)機(jī)器周期,4 μs。這里要補(bǔ)充說明一點(diǎn),在編制全部LED點(diǎn)陣片列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù)的程序時(shí),不要用循環(huán)指令,因?yàn)槟菢用看芜^程又得增加2 μs;要采用對(duì)LED點(diǎn)陣片逐片編程的方法,這樣編出來的程序雖然占空間,但節(jié)省了時(shí)間。用空間換時(shí)間的設(shè)計(jì)方法,有時(shí)也是設(shè)計(jì)人員值得嘗試的一種方法。
本電路的行驅(qū)動(dòng)鎖存器的鎖存控制,還是用CPU的寫控制信號(hào)WR,不作更改。行驅(qū)動(dòng)鎖存器的片選信號(hào)也來自地址譯碼電路。為了避免數(shù)據(jù)存儲(chǔ)器和LED點(diǎn)陣片之間的相互干擾,與這組地址對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)器的這部分存儲(chǔ)空間就不用它了。
地址譯碼電路的設(shè)計(jì),應(yīng)保證LED點(diǎn)陣片列驅(qū)動(dòng)電路的片選地址和數(shù)據(jù)存儲(chǔ)器的某一段的邏輯地址是重疊的。具體設(shè)計(jì)舉例如下:
假定某一塊LED顯示屏用了240片LED點(diǎn)陣片,可顯示16×16的漢字60個(gè),用1片MCS51系列單片機(jī)進(jìn)行高速控制。這240片LED點(diǎn)陣片列驅(qū)動(dòng)電路的片選地址就應(yīng)有240個(gè),地址譯碼電路必須保證譯碼后的有效地址大于這個(gè)數(shù)量。圖1中的地址譯碼電路,輸入的地址信號(hào)是A0~A7和A11~A15,沒有接入A8、A9、A10。用74LS138譯碼器,三級(jí)譯碼后可得到256根有效地址線,第1根有效地址線對(duì)應(yīng)外部數(shù)據(jù)存儲(chǔ)器的8個(gè)地址:0000H、0100H、0200H、0300H、0400H、0500H、0600H、0700H。第2根有效地址線對(duì)應(yīng)外部數(shù)據(jù)存儲(chǔ)器的8個(gè)地址:0001H、0101H、0201H、0301H、0401H、0501H、0601H、0701H。……第256根有效地址線對(duì)應(yīng)外部數(shù)據(jù)存儲(chǔ)器的8個(gè)地址:00FFH、01FFH、02FFH、03FFH、04FFH、05FFH、06FFH、07FFH。這256根有效地址線,240根給列驅(qū)動(dòng)電路的片選地址,余下的給行驅(qū)動(dòng)電路的片選地址;如果不夠用,行驅(qū)動(dòng)電路可考慮改為串行總線的方式進(jìn)行控制。上述分析結(jié)果表明,1片LED點(diǎn)陣片的I/O接口地址和數(shù)據(jù)存儲(chǔ)器的8個(gè)字節(jié)的地址建立了重疊關(guān)系。這是因?yàn)槊科琇ED點(diǎn)陣片都有8行,每行都對(duì)應(yīng)1個(gè)字節(jié)的字模數(shù)據(jù)。
上述分析結(jié)果還表明,全部LED點(diǎn)陣片的I/O接口地址和數(shù)據(jù)存儲(chǔ)器的0000H~07FFH地址段建立了映射關(guān)系。數(shù)據(jù)存儲(chǔ)器0000H~07FFH中存放的正好是一幀圖像的全部字模數(shù)據(jù)。
現(xiàn)在商業(yè)上用的大屏幕LED顯示屏,用到的LED點(diǎn)陣片成百、上千甚至幾千片。單片機(jī)對(duì)LED顯示屏的控制,包括單片機(jī)與PC機(jī)的通信、字模數(shù)據(jù)的數(shù)據(jù)處理以及顯示控制三個(gè)部分。1片單片機(jī)要與PC機(jī)通信,又要進(jìn)行數(shù)據(jù)處理,還要進(jìn)行顯示控制,肯定是忙不過來的。
為了解決大屏幕LED顯示屏的控制問題,許多文獻(xiàn)都對(duì)控制方案作了成功的設(shè)計(jì)。不少方案[36]的基本思路是數(shù)據(jù)處理由一片單片機(jī)完成,顯示控制由另一片單片機(jī)或一個(gè)專門設(shè)計(jì)的電路完成。這些方案的控制效率雖然很高,但是電路比較復(fù)雜。
圖2 數(shù)據(jù)存儲(chǔ)器分段選擇開關(guān)電路
本方案的基本思路是,單片機(jī)與PC機(jī)的通信、數(shù)據(jù)處理及顯示控制都由1片單片機(jī)完成。顯示控制采用本文提出的高速控制方案,電路簡(jiǎn)單,而且顯示控制的效率很高。例如,LED點(diǎn)陣片采用常用的6 cm×6 cm外廓尺寸的LED點(diǎn)陣片時(shí),屏幕面積小于2 m2時(shí),1片MCS51系列單片機(jī)就可以完成。但是,高速控制方案用于大屏幕LED顯示屏,還有一些問題要解決:
?、?單片機(jī)與PC機(jī)的通信問題。大屏幕LED顯示屏與PC機(jī)連接時(shí),PC機(jī)用來編輯待顯示的內(nèi)容,并將內(nèi)容傳給大屏幕LED顯示屏中的單片機(jī)。PC機(jī)與單片機(jī)通信時(shí),不會(huì)干擾顯示屏的工作。因?yàn)轱@示屏工作時(shí),是一場(chǎng)一場(chǎng)顯示的,場(chǎng)與場(chǎng)之間有黑屏的時(shí)間,利用黑屏的時(shí)間進(jìn)行通信完全沒有問題。
?、?增加顯示場(chǎng)次的問題。大部分顯示屏的工作方式是,顯示的內(nèi)容一場(chǎng)、一場(chǎng)、又一場(chǎng),如此循環(huán)。前面的設(shè)計(jì)只考慮了顯示一幀圖像時(shí),LED點(diǎn)陣片的I/O接口地址和數(shù)據(jù)存儲(chǔ)器的一段建立映射關(guān)系的問題,因此只能顯示一場(chǎng)定格的圖像。在圖1的基礎(chǔ)上增加圖2,可以使LED點(diǎn)陣片的I/O接口地址和數(shù)據(jù)存儲(chǔ)器的多段建立映射關(guān)系。工作時(shí),由P1口控制多路開關(guān),切換數(shù)據(jù)存儲(chǔ)器的不同段和LED點(diǎn)陣片的I/O接口地址映射,于是顯示屏就可以一場(chǎng)一場(chǎng)地循環(huán)顯示了。如果擴(kuò)充外部數(shù)據(jù)存儲(chǔ)器的片數(shù),并由P1口使能其中的一片有效,那么將可以擴(kuò)充更多的段和LED點(diǎn)陣片的I/O接口地址建立映射關(guān)系,這樣的話,像拉幕、流水等一些顯示效果,也就可以實(shí)現(xiàn)了。
③ 字模數(shù)據(jù)的數(shù)據(jù)處理問題。顯示的方式比較多,比如有定格、拉幕、流水,流水方式中又有向左流水、向右流水等。在轉(zhuǎn)換顯示方式時(shí),就必須進(jìn)行一次字模數(shù)據(jù)的數(shù)據(jù)處理,用1片單片機(jī),這也不會(huì)成為問題。因?yàn)檗D(zhuǎn)換顯示方式時(shí),本來要黑屏1 s至幾s,這段時(shí)間也就正好用來進(jìn)行數(shù)據(jù)處理了。
結(jié)語
本LED顯示屏的高速控制方案,經(jīng)應(yīng)用證明工作穩(wěn)定、可靠,且電路簡(jiǎn)單,特別適合銀行匯率顯示屏、利率顯示屏使用。另外本文提出的靈活運(yùn)用讀指令的思路,也可以提供給人們作為借鑒。
評(píng)論