LED顯示屏是利用發(fā)光二極管點(diǎn)陣模塊或像素單元組成的平面式顯示屏幕,。它具有發(fā)光率高、使用壽命長(zhǎng),、組態(tài)靈活,、色彩豐富以及對(duì)室內(nèi)外環(huán)境適應(yīng)能力強(qiáng)等優(yōu)點(diǎn),。并廣泛的用于公交汽車、商店,、體育場(chǎng)館,、車站、學(xué)校,、銀行,、高速公路等公共場(chǎng)所的信息發(fā)布和廣告宣傳。LED顯示屏發(fā)展較快,,本文講述了基于AT89C51單片機(jī)16×16LED漢字點(diǎn)陣滾動(dòng)顯示的基本原理,、硬件組成與設(shè)計(jì)、程序編寫與調(diào)試,、Proteus軟件仿真等基本環(huán)節(jié)和相關(guān)技術(shù),。
1 硬件電路組成及工作原理
本產(chǎn)品采用以AT89C51單片機(jī)為核心芯片的電路來實(shí)現(xiàn),主要由AT89C51芯片,、時(shí)鐘電路,、復(fù)位電路、列掃描驅(qū)動(dòng)電路(74HCl54),、16×16LED點(diǎn)陣5部分組成,,如圖1所示。其中,,AT89C51是一種帶4kB閃爍可編程可擦除只讀存儲(chǔ)器(Falsh Programmable and Erasable Read OnlyMemory,,F(xiàn)PEROM)的低電壓、高性能CMOS型8位微處理器,,俗稱單片機(jī),。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,工業(yè)標(biāo)準(zhǔn)的MCS一5l指令集和輸出管腳相兼容,。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,,能夠進(jìn)行1 000次寫/擦循環(huán),數(shù)據(jù)保留時(shí)間為10年,。他是一種高效微控制器,,為很多嵌人式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。因此,,在智能化電子設(shè)計(jì)與制作過程中經(jīng)常用到AT89C51芯片,。時(shí)鐘電路由AT89C5l的18,19腳的時(shí)鐘端(XTAI l及XTAL2)以及12 MHz晶振X,、電容C2,、C3組成,采用片內(nèi)振蕩方式,。復(fù)位電路采用簡(jiǎn)易的上電復(fù)位電路,,主要由電阻R,,R2,電容C,,開關(guān)K組成,,分別接至AT89C51的RST復(fù)位輸入端。LED點(diǎn)陣顯示屏采用16×16共256個(gè)象素的點(diǎn)陣,,可通過萬用表檢測(cè)發(fā)光二極管的方法測(cè)試判斷出該點(diǎn)陣的引腳分布,。
我們把行列總線接在單片機(jī)的I/0口,然后把上面分析到的掃描代碼送入總線,,就可以得到顯示的漢字了。但是若將LED點(diǎn)陣的行列端口全部直接接入89S5 1單片機(jī),,則需要使用32條I/0口,,這樣會(huì)造成I/0口資源的耗盡,系統(tǒng)也再無擴(kuò)充的余地,。因此,,我們?cè)趯?shí)際應(yīng)用中只是將LED點(diǎn)陣的16條行線直接接在P0口和P2口,至于列選掃描信號(hào)則是由4—16線譯碼器74HCl54來選擇控制,,這樣一來列選控制只使用了單片機(jī)的4個(gè)I/O口,,節(jié)約了很多I/O口資源,為單片機(jī)系統(tǒng)擴(kuò)充使用功能提供了條件,??紤]到P0口必需設(shè)置上拉電阻,我們采用4.7 kΩ排電阻作為上拉電阻,。漢字掃描顯示的基本過程是這樣的:通電后由于電阻R,,電容c1的作用,使單片機(jī)的RST復(fù)位腳電平先高后低,,從而達(dá)到復(fù)位,;之后,在C,、C3,、X以及單片機(jī)內(nèi)部時(shí)鐘電路的作用下,單片機(jī)89C51按照設(shè)定的程序在P0和P2接口輸出與內(nèi)部漢字對(duì)應(yīng)的代碼電平送至LED點(diǎn)陣的行選線(高電平驅(qū)動(dòng)),,同時(shí)在P1.1,,P1.2,P1.3,,P1.4接口輸出列選掃描信號(hào)(低電平驅(qū)動(dòng)),,從而選中相應(yīng)的象素LED發(fā)光,并利用人眼的視覺暫留特性合成整個(gè)漢字的顯示,。再改變?nèi)”淼刂穼?shí)現(xiàn)漢字的滾動(dòng)顯示,。
2 漢字的點(diǎn)陣顯示原理及字庫代碼獲取方法
我們以UCDOS中文宋體字庫為例,,每一個(gè)字由16行16列的點(diǎn)陣組成顯示。即國標(biāo)漢字庫中的每一個(gè)字均由256點(diǎn)陣來表示,。我們可以把每一個(gè)點(diǎn)理解為一個(gè)象素,,而把每一個(gè)字的字形理解為一幅圖像。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,,也可以顯示在256象素范圍內(nèi)的任何圖形,。如查用8位的AT89C51單片機(jī)控制,由于單片機(jī)的總線由8位,,一個(gè)字需要拆分為2個(gè)部分,,如圖2所示
為了弄清楚漢字的點(diǎn)陣組成規(guī)律,首先通過列掃描方法獲取漢字的代碼,。漢字可拆分為上部和下部,,上部由8×16點(diǎn)陣組成,下部也由8×16點(diǎn)陣組成,。本例通過列掃描方法首先顯示左上角的第一列的上半部分,,即第0列的P00~P07口,方向?yàn)镻00到P07,,顯示漢字“我”時(shí),,為全滅,第一列的下半部分也為全滅,。第二列的上半部分P06,、點(diǎn)亮,由上往下排列,,為:PO.0滅,,PO.1滅,P0.2滅PO.3滅,,PO.4滅,,P0.5滅,P0.6亮,,P0.7滅,。即二進(jìn)制00000010,轉(zhuǎn)換為十六進(jìn)制為02h,。上半部第二列完成后,,繼續(xù)掃描下半部的第二列,為了接線的方便,,我們?nèi)栽O(shè)計(jì)成由上往下掃描,,即從P27向P20方向掃描,從圖3可以看到,,這一列P23亮,,即為00001000,,十六進(jìn)制則為08h。依照這個(gè)方法轉(zhuǎn)向第三列,、第四列,,……,直至第十六列的掃描,,一共掃描32個(gè)8位,,可以得出漢字“我”的掃描代碼為:
00H,02H,,08H,,06H,28H,,02H,,24H,22H
0FCH,,3FH,24H,,2 1H,,20H,10H,,3CH,,08H
0E2H,07H,,20H,,0AH,0E4H,,11H,,0A8H,20H
20H,,30H,,00H,00H,,00H,,00H,00H,,00H
由這個(gè)原理可以看出,,無論顯示何種字體或圖像,都可以用這個(gè)方法來分析出他的掃描代碼從而顯示在屏幕上,。上述方法雖然能夠讓我們弄清楚漢字點(diǎn)陣代碼的獲取過程,,但是依靠人工方法獲取漢字代碼是一件非常繁瑣的事情,。為此,我們經(jīng)常采用字庫軟件查找字符代碼,,軟件打開后輸入漢字,,點(diǎn)“檢取”,十六進(jìn)制數(shù)據(jù)的漢字代碼即可自動(dòng)生成,,把我們所需要的豎排數(shù)據(jù)復(fù)制到程序中即可,,如圖3所示。
可見,,漢字點(diǎn)陣顯示一般有點(diǎn)掃描,、行掃描和列掃描3種。為了符合視覺暫留要求,,點(diǎn)掃描方法的掃描頻率必須大于16×64—1 024 Hz,,周期小于1 ms即可。行掃描和列掃描方法的掃描頻率必須大于16×8一128 Hz,,周期小于7.8 ms即可,,但是一次驅(qū)動(dòng)一列或一行(8顆LED)時(shí)需外加驅(qū)動(dòng)電路提高電流,否則LED亮度會(huì)不足,。
3 在Keil環(huán)境中程序設(shè)計(jì)與調(diào)試
軟件程序主要由開始,、初始化、主程序,、字庫組成,。其中主程序的流程圖如圖4所示。下面的程序能夠用來實(shí)現(xiàn)滾動(dòng)顯示“我愛你一一祖國”,。漢字的顯示,。程序清單如下:
在keil軟件中完成程序編寫、調(diào)試和編譯之后,,生成能讓單片機(jī)運(yùn)行的Hex文件,,如圖5所示。
4 元器件選擇
本設(shè)計(jì)所需元器件如表1所示,。
5 運(yùn)用Proteus軟件仿真LED漢字顯示屏
Proteus與其它單片機(jī)仿真軟件不同的是,,它不僅能仿真單片機(jī)外圍電路或沒有單片機(jī)參與的其它電路的工作情況,也能仿真單片機(jī)CPU的工作情況,。因此在仿真和程序調(diào)試時(shí),,是從工程的角度直接看程序運(yùn)行和電路工作的過程和結(jié)果。從某種意義上講Proteus仿真,,基本接近與工程應(yīng)用,。本次基于AT89C51單片機(jī)16×16LED漢字滾動(dòng)顯示屏的設(shè)計(jì)已運(yùn)用Proteus軟件仿真實(shí)現(xiàn),如圖6所示。
雖然本設(shè)計(jì)只使用了一塊16×16LED點(diǎn)陣,,電路簡(jiǎn)單,,但是已經(jīng)包涵了LED漢字滾動(dòng)顯示屏的電路基本原理、基本程序和Proteus軟件仿真,,只要擴(kuò)展單片機(jī)的10接口,,并增加一些LED點(diǎn)陣和相關(guān)芯片,就能設(shè)計(jì)出更大面積,、更多花樣的LED顯示屏,。因此本文對(duì)同類設(shè)計(jì)具有一定的理論和實(shí)踐參考價(jià)值。