基于單片機(jī)的LED點(diǎn)陣顯示系統(tǒng)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:LED點(diǎn)陣顯示屏是由多個(gè)LED發(fā)光二極管封裝在一起組成,是一種新興的顯示器件。為了說明LED點(diǎn)陣顯示的原理,以單片機(jī)為控制核心,設(shè)計(jì)和制作了一種成本低廉的漢字顯示系統(tǒng),其包括硬件和軟件兩個(gè)部分。該電路通過按鍵控制可實(shí)現(xiàn)任意多個(gè)漢字的卷簾、上移和左移等多種顯示形式,可廣泛應(yīng)用于機(jī)場、商場、醫(yī)院等公共場所進(jìn)行文字廣告宣傳,信息發(fā)布等。通過仿真和實(shí)物測試,該系統(tǒng)獲得良好的顯示效果,而且具有體積小、硬件電路結(jié)構(gòu)簡單和容易實(shí)現(xiàn)等特點(diǎn)。
關(guān)鍵詞:MCU;LED;顯示屏;系統(tǒng)設(shè)計(jì)
0 引言
LED顯示屏是一種由半導(dǎo)體發(fā)光二極管構(gòu)成的顯示點(diǎn)陣,人們通過控制每個(gè)LED的亮滅實(shí)現(xiàn)圖形或字符的顯示。由于LED顯示屏亮度高、視角廣、工作電壓低、功耗小、壽命長、耐沖擊、性能穩(wěn)定,因而被廣泛應(yīng)用于機(jī)場、商場、醫(yī)院、賓館、證券市場等公共場所。本文以單片機(jī)為控制核心設(shè)計(jì)和制作了一種漢字顯示系統(tǒng),其成本低廉,內(nèi)容更新簡便。
1 顯示原理
1.1 LED點(diǎn)陣顯示屏
將多個(gè)LED按矩陣方式排列在一起,如圖1所示,就構(gòu)成了一個(gè)LED點(diǎn)陣顯示屏。其中各個(gè)LED的引腳按照一定的規(guī)律連接,以最常見的8×8單色LED點(diǎn)陣共陽型顯示器為例,其內(nèi)部電路結(jié)構(gòu)和外型規(guī)格如圖1所示。
16×16單色LED點(diǎn)陣顯示屏可由4塊8×8單色LED點(diǎn)陣顯示器組合而成,即16行16列,16×16=256像素。如果采用共陽型連接方式,即每行的LED陽極連接在一起,每列的LED陰極連接在一起。
1.2 顯示原理
對(duì)于共陽型LED點(diǎn)陣顯示屏,如果采用動(dòng)態(tài)掃描方式,掃描電路就可以實(shí)現(xiàn)多行發(fā)光二極管的同名列共用一套驅(qū)動(dòng)器。動(dòng)態(tài)掃描,簡單說就是逐行輪流點(diǎn)亮。具體以8×8點(diǎn)陣模塊為例顯示字符“B”的過程如圖2所示。即先送出對(duì)應(yīng)于第一行發(fā)光二極管亮滅的列數(shù)據(jù)OFFH并鎖存,然后選通第一行,即送行數(shù)據(jù)80H,延時(shí)一段時(shí)間后,送行數(shù)據(jù)00H,第一幀顯示結(jié)束;再送第二行的列數(shù)據(jù)87H并鎖存,然后選通第二行,即送行數(shù)據(jù)40H,點(diǎn)亮相同時(shí)問后,送行數(shù)據(jù)00H,相應(yīng)二極管熄滅,第二幀顯示結(jié)束;以此類推,第8行顯示之后,又重新點(diǎn)亮第一行,周而復(fù)始。當(dāng)這樣輪回的速度足夠快(每秒24次以上)時(shí),就能看到顯示屏上穩(wěn)定的字符B了。上述列數(shù)據(jù)即為字符B的字模數(shù)據(jù)。
1.3 漢字字模的生成
由于妻顯示內(nèi)容的不確定性,漢字字模的生成僅靠用戶自己構(gòu)建是不可能的。如果依靠單片機(jī)完成字模的創(chuàng)建和顯示控制,則由于單片機(jī)運(yùn)算能力有限,是無法實(shí)現(xiàn)漢字的選定和實(shí)時(shí)顯示。為此利用PC機(jī)和相關(guān)軟件,預(yù)先生成所要顯示漢字的字模。
通常可以利用UCDOS的漢字庫構(gòu)造需要顯示的字模。在UCDOS漢字庫中漢字均以行字模的形式存儲(chǔ),只要確定了漢字在字庫中的位置和字模的長度,就可以將需要漢字的行字模讀出。漢字在字庫中的位置可以通過漢字的機(jī)內(nèi)碼根據(jù)如下公式加以確定:
Offset=(94×m_H+m_L)×32
式中:m_H代表以16進(jìn)制表示的漢字機(jī)內(nèi)碼的高8位,m_L代表機(jī)內(nèi)碼的低8位。字模的長度則是由顯示所用的點(diǎn)陣決定的,以常用的16× 16點(diǎn)陣字模為例,一個(gè)漢字字模需要16×16÷8=32 B。因此從字模的開始依次讀取32個(gè)字節(jié)就可以得到該漢字16×16的字模(行字模)。
采用PCtoLCD 2002字模軟件,可以方便地生成字模數(shù)據(jù),如圖3所示。將生成的字模數(shù)據(jù)復(fù)制到系統(tǒng)源程序中。
2 系統(tǒng)硬件電路設(shè)計(jì)
圖4給出的是可以顯示一個(gè)16×16漢字系統(tǒng)的框圖。系統(tǒng)由AT89C51最小系統(tǒng)、顯示屏、列驅(qū)動(dòng)電路、行驅(qū)動(dòng)電路和控制鍵構(gòu)成。AT89C 51為主控芯片,顯示屏由4塊8×8 LED共陰連接組成,其列驅(qū)動(dòng)電路由2片74HC595構(gòu)成,擴(kuò)展為具有鎖存、串并移位和三態(tài)輸出的16位移位寄存器,字模數(shù)據(jù)由此輸出;行驅(qū)動(dòng)電路由1片4-16線譯碼器74HC154構(gòu)成,從DCBA輸入增量數(shù)據(jù),將輸出逐行掃描信號(hào)。K1,K2,K3為顯示方式控制鍵,按鍵選擇可實(shí)現(xiàn)LED點(diǎn)陣顯示屏卷簾、上移、左移等顯示輸出。該系統(tǒng)在Proteus軟件環(huán)境下仿真獲得良好的顯示效果。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 主程序流程圖
系統(tǒng)主程序開始以后首先是對(duì)系統(tǒng)環(huán)境初始化,包括設(shè)置串口、定時(shí)器、中斷和端口。然后進(jìn)行鍵盤掃描,如果K1鍵按下字符卷簾輸出,如果K2鍵按下字符上移輸出,如果K3鍵按下字符左移輸出。主程序流程見圖5所示。
3.2 顯示驅(qū)動(dòng)程序
顯示驅(qū)動(dòng)程序查詢當(dāng)前點(diǎn)亮的行號(hào),從顯示緩存區(qū)內(nèi)讀取下一行的顯示數(shù)據(jù),并通過串口發(fā)送給移位寄存器。為消除在切換行顯示數(shù)據(jù)的時(shí)候產(chǎn)生拖尾現(xiàn)象,在中斷程序中,驅(qū)動(dòng)程序先要關(guān)閉顯示屏,等顯示數(shù)據(jù)打入輸出鎖存器并鎖存后,然后再輸出新的行選通信號(hào),重新打開顯示。顯示驅(qū)動(dòng)程序如下:
4 結(jié)語
本沒計(jì)以AT89C51為系統(tǒng)的控制核心,采用動(dòng)態(tài)掃描的方法實(shí)現(xiàn)對(duì)16×16 LED點(diǎn)陣顯示屏的控制。該系統(tǒng)通過仿真和實(shí)物制作,均獲得良好的顯示效果,證明這種方案是可行的,而且具有體積小、硬件電路結(jié)構(gòu)簡單和容易實(shí)現(xiàn)等特點(diǎn)。但也存在更換顯示內(nèi)容時(shí),需要對(duì)AT89 C51進(jìn)行重新編程的問題,如果增加ISP編程電路,可通過USB下載電纜對(duì)單片機(jī)程序數(shù)據(jù)進(jìn)行及時(shí)更新。