《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 解決方案 > 基于MCS51單片機(jī)的大屏幕LED顯示屏高速控制方案

基于MCS51單片機(jī)的大屏幕LED顯示屏高速控制方案

2010-12-27
來源:單片機(jī)與嵌入式系統(tǒng)

引言

  LED顯示屏的基本工作原理是動(dòng)態(tài)掃描,。顯示控制的過程是先從數(shù)據(jù)存儲(chǔ)器讀得字模數(shù)據(jù),,再通過單片機(jī)的串行口或并行口將數(shù)據(jù)寫給LED點(diǎn)陣片,,然后再行掃描,。

  動(dòng)態(tài)掃描方案和靜態(tài)顯示方案相比節(jié)省驅(qū)動(dòng)元件,但要求刷新頻率高于50 Hz,,以避免顯示的圖像或文字出現(xiàn)閃爍,。由于刷新頻率的限制,,一片單片機(jī)能控制顯示元件的片數(shù)是較少的,。

  現(xiàn)在大屏幕LED顯示屏的應(yīng)用已越來越廣泛,。為了對成百,、上千片的LED點(diǎn)陣片實(shí)現(xiàn)有序的、快速的顯示控制,,人們動(dòng)了許多腦筋,,雙CPU、雙RAM的方案,,F(xiàn)PGA的方案等都獲得了成功的應(yīng)用;但是這些方案的顯示控制過程還是先讀后寫,。

  本方案另開思路:用一條讀指令,,將讀和寫合在一步完成,可大大地提高顯示控制的效率,,且電路簡單,。

1  LED顯示屏的工作原理

  LED顯示屏的基本工作原理是動(dòng)態(tài)掃描。動(dòng)態(tài)掃描又分為行掃描和列掃描兩種方式,,常用的方式是行掃描,。行掃描方式又分為8行掃描和16行掃描兩種。

  在行掃描工作方式下,,每一片LED點(diǎn)陣片都有一組列驅(qū)動(dòng)電路,,列驅(qū)動(dòng)電路中一定有一片鎖存器或移位寄存器,用來鎖存待顯示內(nèi)容的字模數(shù)據(jù),。在行掃描工作方式下,,同一排LED點(diǎn)陣片的同名行控制引腳是并接在一條線上的,共8條線,,最后連接在一個(gè)行驅(qū)動(dòng)電路上,;行驅(qū)動(dòng)電路中也一定有一片鎖存器或移位寄存器,用來鎖存行掃描信號,。

  LED顯示屏的列驅(qū)動(dòng)電路和行驅(qū)動(dòng)電路一般都采用單片機(jī)進(jìn)行控制,,常用的單片機(jī)是MCS51系列。LED顯示屏顯示的內(nèi)容一般按字模的形式存放在單片機(jī)的外部數(shù)據(jù)存儲(chǔ)器中,,字模是8位二進(jìn)制數(shù),。

  單片機(jī)對LED顯示屏的控制過程是先讀后寫。按LED點(diǎn)陣片在屏幕上的排列順序,,單片機(jī)先對第1排的第1片LED點(diǎn)陣片的列驅(qū)動(dòng)鎖存器,,寫入從外部數(shù)據(jù)存儲(chǔ)器讀得的字模數(shù)據(jù),接著對第2片,、第3片……直到這一排的最后一片都寫完字模數(shù)據(jù)后,,單片機(jī)再對這一排的行驅(qū)動(dòng)鎖存器寫行掃描信號,于是第1排第1行與字模數(shù)據(jù)相關(guān)的發(fā)光二極管點(diǎn)亮,。接著第2排第1行,、第3排第1行……直到最后一排第1行的點(diǎn)亮,。各排第1行都點(diǎn)亮后,延時(shí)一段時(shí)間,,然后黑屏,,這樣就算完成了單片機(jī)對LED顯示屏的一行掃描控制。

  單片機(jī)對LED顯示屏第2行的掃描控制,、第3行的掃描控制……直到第8行的掃描控制,,其過程與第1行的掃描控制過程相同。對全部8行的控制過程都完成后,,LED顯示屏也就完成了1幀圖像的完整顯示,。

  雖然按這種工作方式,LED顯示屏是一行一行點(diǎn)亮的,,每次都只有一行亮,,但只要保證每行每秒鐘能點(diǎn)亮50次以上,即刷新頻率高于50 Hz,,那么由于人的視覺惰性,,所看到的LED顯示屏顯示的圖像還是全屏穩(wěn)定的圖像。

2  LED顯示屏的傳統(tǒng)控制方法

  參考文獻(xiàn)[1]對LED顯示屏的控制電路作了歸納和比較,。其中,,顯示控制電路是按行掃描方式工作的,列控制電路分為兩大類,。列控制電路中,,一類是用74LS377之類的芯片作為列驅(qū)動(dòng)電路的鎖存器,CPU通過并行總線給列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù),;另一類是用移位寄存器74LS595之類的芯片作為列驅(qū)動(dòng)電路的鎖存器,,CPU通過串行總線給列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù)。

  無論是并行總線的控制方式還是串行總線的控制方式,,其工作過程都是先給數(shù)據(jù)指針DPTR賦值,,接著累加器A按數(shù)據(jù)指針DPTR的指向,從外部數(shù)據(jù)存儲(chǔ)器RAM中讀得字模數(shù)據(jù),。然后,,并行總線時(shí),再給數(shù)據(jù)指針DPTR賦值,,接著CPU將累加器A中的字模數(shù)據(jù),,按數(shù)據(jù)指針DPTR的指向,寫給LED點(diǎn)陣片列驅(qū)動(dòng)電路的鎖存器,;串行總線時(shí),,CPU將累加器A中的字模數(shù)據(jù),通過串行口寫給LED點(diǎn)陣片列驅(qū)動(dòng)電路的鎖存器。

  一般顯示控制中,,使用較多的單片機(jī)是MCS51系列,。假設(shè)單片機(jī)系統(tǒng)的晶振頻率是12 MHz,機(jī)器周期是1 μs,,上述兩種控制方式完成1片LED點(diǎn)陣片的顯示控制都得十幾μs,。

  本文提出的高速控制方案,完成1片LED點(diǎn)陣片的顯示控制大約只要4 μs,。按此推算,,1片MCS51系列的單片機(jī),差不多可以對600多片LED點(diǎn)陣片進(jìn)行顯示控制,。與傳統(tǒng)的控制方法相比,,顯示控制的效率成倍提高。

3  LED顯示屏的高速控制方案

    圖1是高速控制方案LED顯示屏電路原理,。采用MCS51系列單片機(jī)對LED顯示屏進(jìn)行控制,;隨機(jī)存儲(chǔ)器62512用作LED顯示屏的數(shù)據(jù)存儲(chǔ)器,,存儲(chǔ)待顯示內(nèi)容的字模數(shù)據(jù),;采用8行掃描方式,多片LED點(diǎn)陣片共用1組行驅(qū)動(dòng)電路,;每片LED點(diǎn)陣片都有一組列驅(qū)動(dòng)電路,,用74LS377作為列驅(qū)動(dòng)的鎖存器,CPU通過并行總線給列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù),;地址譯碼電路,,用于產(chǎn)生LED點(diǎn)陣片行驅(qū)動(dòng)電路和列驅(qū)動(dòng)電路的片選地址。


       本方案的特點(diǎn)有兩個(gè):
      第一,,雖然CPU還是通過并行總線給列驅(qū)動(dòng)電路的鎖存器寫字模數(shù)據(jù),,但是鎖存器的鎖存信號改用了CPU的控制信號RD,而不是常規(guī)用法的WR;第二,,地址譯碼電路保證了LED點(diǎn)陣片列驅(qū)動(dòng)電路的片選地址和數(shù)據(jù)存儲(chǔ)器的某一段的邏輯地址是重疊的,,而不是常規(guī)用法,這兩組地址必須分開,。
      由于上述電路的一些簡單更改,,單片機(jī)對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ā)出的讀控制信號,。由于MCS51系列單片機(jī)的讀控制信號RD和寫控制信號WR的時(shí)序完全相同[2],,RD代替WR實(shí)現(xiàn)鎖存功能,當(dāng)然也就沒有什么懸念了,。這條指令在執(zhí)行時(shí),,在完成對數(shù)據(jù)存儲(chǔ)器讀的同時(shí),又完成了對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;要采用對LED點(diǎn)陣片逐片編程的方法,,這樣編出來的程序雖然占空間,,但節(jié)省了時(shí)間。用空間換時(shí)間的設(shè)計(jì)方法,,有時(shí)也是設(shè)計(jì)人員值得嘗試的一種方法,。
        本電路的行驅(qū)動(dòng)鎖存器的鎖存控制,,還是用CPU的寫控制信號WR,不作更改,。行驅(qū)動(dòng)鎖存器的片選信號也來自地址譯碼電路,。為了避免數(shù)據(jù)存儲(chǔ)器和LED點(diǎn)陣片之間的相互干擾,與這組地址對應(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中的地址譯碼電路,輸入的地址信號是A0~A7和A11~A15,,沒有接入A8,、A9、A10,。用74LS138譯碼器,,三級譯碼后可得到256根有效地址線,第1根有效地址線對應(yīng)外部數(shù)據(jù)存儲(chǔ)器的8個(gè)地址:0000H,、0100H,、0200H,、0300H,、0400H、0500H,、0600H,、0700H。第2根有效地址線對應(yīng)外部數(shù)據(jù)存儲(chǔ)器的8個(gè)地址:0001H,、0101H,、0201H、0301H,、0401H,、0501H、0601H,、0701H,。……第256根有效地址線對應(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行,,每行都對應(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ù)。
       4  高速控制方案在LED顯示屏中的應(yīng)用
       現(xiàn)在商業(yè)上用的大屏幕LED顯示屏,,用到的LED點(diǎn)陣片成百,、上千甚至幾千片。單片機(jī)對LED顯示屏的控制,,包括單片機(jī)與PC機(jī)的通信,、字模數(shù)據(jù)的數(shù)據(jù)處理以及顯示控制三個(gè)部分。1片單片機(jī)要與PC機(jī)通信,,又要進(jìn)行數(shù)據(jù)處理,,還要進(jìn)行顯示控制,肯定是忙不過來的,。
       為了解決大屏幕LED顯示屏的控制問題,,許多文獻(xiàn)都對控制方案作了成功的設(shè)計(jì)。不少方案[36]的基本思路是數(shù)據(jù)處理由一片單片機(jī)完成,,顯示控制由另一片單片機(jī)或一個(gè)專門設(shè)計(jì)的電路完成,。這些方案的控制效率雖然很高,但是電路比較復(fù)雜,。
      圖2  數(shù)據(jù)存儲(chǔ)器分段選擇開關(guān)電路
    本方案的基本思路是,,單片機(jī)與PC機(jī)的通信、數(shù)據(jù)處理及顯示控制都由1片單片機(jī)完成,。顯示控制采用本文提出的高速控制方案,,電路簡單,而且顯示控制的效率很高,。例如,,LED點(diǎn)陣片采用常用的6cm×6 cm外廓尺寸的LED點(diǎn)陣片時(shí),,屏幕面積小于2 m2時(shí),1片MCS51系列單片機(jī)就可以完成,。但是,,高速控制方案用于大屏幕LED顯示屏,還有一些問題要解決:
       ?、?nbsp;單片機(jī)與PC機(jī)的通信問題,。大屏幕LED顯示屏與PC機(jī)連接時(shí),PC機(jī)用來編輯待顯示的內(nèi)容,,并將內(nèi)容傳給大屏幕LED顯示屏中的單片機(jī),。PC機(jī)與單片機(jī)通信時(shí),不會(huì)干擾顯示屏的工作,。因?yàn)轱@示屏工作時(shí),,是一場一場顯示的,場與場之間有黑屏的時(shí)間,,利用黑屏的時(shí)間進(jìn)行通信完全沒有問題,。
        ②  增加顯示場次的問題,。大部分顯示屏的工作方式是,,顯示的內(nèi)容一場、一場,、又一場,,如此循環(huán)。前面的設(shè)計(jì)只考慮了顯示一幀圖像時(shí),,LED點(diǎn)陣片的I/O接口地址和數(shù)據(jù)存儲(chǔ)器的一段建立映射關(guān)系的問題,,因此只能顯示一場定格的圖像。在圖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接口地址映射,于是顯示屏就可以一場一場地循環(huán)顯示了,。如果擴(kuò)充外部數(shù)據(jù)存儲(chǔ)器的片數(shù),,并由P1口使能其中的一片有效,那么將可以擴(kuò)充更多的段和LED點(diǎn)陣片的I/O接口地址建立映射關(guān)系,,這樣的話,,像拉幕、流水等一些顯示效果,,也就可以實(shí)現(xiàn)了,。
       ?、?nbsp;字模數(shù)據(jù)的數(shù)據(jù)處理問題。顯示的方式比較多,,比如有定格,、拉幕、流水,,流水方式中又有向左流水,、向右流水等。在轉(zhuǎn)換顯示方式時(shí),,就必須進(jìn)行一次字模數(shù)據(jù)的數(shù)據(jù)處理,,用1片單片機(jī),這也不會(huì)成為問題,。因?yàn)檗D(zhuǎn)換顯示方式時(shí),,本來要黑屏1s至幾s,這段時(shí)間也就正好用來進(jìn)行數(shù)據(jù)處理了,。
       結(jié)語
      本LED顯示屏的高速控制方案,,經(jīng)應(yīng)用證明工作穩(wěn)定、可靠,,且電路簡單,,特別適合銀行匯率顯示屏、利率顯示屏使用,。另外本文提出的靈活運(yùn)用讀指令的思路,,也可以提供給人們作為借鑒。
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。