現(xiàn)在市面上已出現(xiàn)很多有關(guān)點矩陣顯示器的商品,如廣告活動字幕機、股票顯示板、活動布告欄等。它的優(yōu)點是可按需要的大小、形狀、單色或彩色來組合,可與微處理器連接,做各種廣告性的文字或圖形變化。
何謂點矩陣顯示器?其實它是由LED按矩陣方式排列而得名。
點矩陣顯示器的種類,可分為5*7,5*8,6*8,8*8等4種;而按LED發(fā)光變化顏色來分,可分為單色、雙色、三色;按LED的極性排列方式又可分為共陽極與共陰極,而在本文中所介紹的8*8點陣排列為共陰極。
8*8點矩陣顯示器在市面上有兩種不同引腳,如下圖:
8 7 B 1 D 6 4 A A B C D 5 6 7 8
E G 2 3 H 5 F C 1 2 3 4 E F G H
點矩陣顯示器的基本應(yīng)用
大家想想,對于一由N*N個LED組成的點陣塊,只要讓某些LED亮,就可以組成數(shù)字,英文字、圖形、中文字。但如果用直接點亮的方式,它就可變化成很多的形狀。當(dāng)然不管是哪種形式,哪種圖案的哪些LED該亮都是固定的。以下我主要針對中文字作一些說明。要顯示中文字,必須由幾個點矩陣組成才可顯示出一個漢字。目前最常見的方式有15*14及16*16兩種方式。15*14需要使用5*7的6個,16*16需使用5*8的六個或8*8的4個�,F(xiàn)以16*16舉例說明,對于漢字字形,在網(wǎng)絡(luò)上有好多漢字字型代碼提取工具,可以很方便地找查出中文字的點陣示意圖及點陣代碼。
中文字的點陣示意圖
在UCDOS中文字體庫中,每一個字由16行16列的點陣組成顯示。如果用8位單片機AT89S51或52控制,我們知道此單片機的總線為8位,一個中文漢字得拆分為2個部分。一般我們把它拆為上部和下部,上部由8*16點陣組成,下部也由8*16點陣組成。當(dāng)上半部第一列完成后,繼續(xù)掃描下半部的第一列,同時也為了我們硬件設(shè)計的方便,我們采用由上往下掃描。依照這個辦法,我們對漢字‘振’進行掃描,共掃描32個8位,可得到掃描代碼為:
08H,40H,08H,42H,08H,81H,0FFH,0FEH
09H,02H,0AH,0CH,7FH,0F0H,49H,00H
49H,0FFH,49H,02H,49H,0E0H,49H,18H
59H,14H,0CBH,26H,41H,44H,00H,00H
但這只是個顯示各種字體或圖象的原理,在真正設(shè)計開發(fā)項目時,我們可以使用漢字字模生成軟件,這樣我們就不必自己去畫表格求代碼,同時也縮短了我們的開發(fā)時間。下面就是在此設(shè)計中即將要顯示出來的‘振興中華電子事業(yè)’八字的豎排代碼和顯示字型
在此次8個字的點陣設(shè)計中,共使用了16行,32列,如果全部使用單片機I/O口,恐怕我們1個單片機也沒那么多口,而且這樣造成I/O的資源的浪費,系統(tǒng)也再無擴展可言。在此設(shè)計中,我使用了2個4~16線譯碼器74LS154來完成列方向的顯示,而行方向16條線接在P0和P2口。列方向由兩片74LS154完成掃描,它由89S51的P1.0~P1.3控制,而驅(qū)動部分用32個A1015 [PNP]的三極管完成。在行方向由于P0口沒有上拉電阻,因此在接上4.7*8的上拉排阻。同時為了提供負(fù)載能力,后面還在P0和P2口后接16個C1384的NPN三極管驅(qū)動;而對74LS154的位選方面采用P1.4口控制,通過1/6片7407模塊按下圖所示接法進行位選,分別輪流顯示。每個畫面2個字,8個字分4次顯示,采用向左移動的顯示方式依次顯示。
硬件電路如下所示:
實現(xiàn)程序如下:{已通過編譯}
ORG 00H
START:MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
CALL DIS ;調(diào)用顯示子程序
CALL DELAY ;調(diào)用延時子程序
CALL MOVE ;調(diào)用左移子程序
JMP START
DIS: MOV R2,#04H ;每個畫面2個字,8個字分4次顯示
MOV 20H,#00 ;取碼指針暫存地址20H初值為00
D4: MOV R4,#00H ;74LS154掃描指針初值
MOV R1,#0FFH ;每幕停留的時間
D5: MOV R6,#32 ;每幕兩個字,32個數(shù)據(jù)碼
MOV R0,20H ;取碼指針存入R0
D2: CALL READ1 ;調(diào)用取碼子程序
INC R4 ;掃描下一列
DJNZ R6,D2 ;顯示1幕?
MOV R4,#00 ;清除74LS154掃描指針為00
DJNZ R1,D5 ;每幕停留時間到了?
MOV 20H,R0 ;保留取碼指針存入20H地址
DJNZ R2,D4 ;2幕顯示完畢了?
RET
MOVE:
MOV 20H,#00 ;取碼指針暫存地址20H初值為00
MOV R4,#00H ;74LS154掃描指針初值
M1: MOV R1,#0FFH ;每幕停留時間
M2: MOV R6,#32 ;每幕兩個字,32個數(shù)據(jù)碼
MOV R0,20H ;取碼指針存入R0
M3: CALL READ1 ;調(diào)用取碼子程序
INC R4 ;掃描下一列
DJNZ R6,M3 ;顯示1幕?
MOV R4,#00 ;清除74LS154掃描指針為00
DJNZ R1,M2 ;每幕停留時間到了?
MOV A,20H ;取碼指針載入A
ADD A,#08H ;加8
MOV 20H,A ;再存入20H地址取碼指針
XRL A,#128 ;8個字是否都左移完畢了
JNZ M1
RET
READ1:MOV A,R4 ;掃描指針載入A
MOV P1,A ;輸出至P1掃描列
MOV A,R0 ;取碼指針載入A
MOV DPTR,#TABLE ;數(shù)據(jù)指針指到TABLE
MOVC A,@A+DPTR ;到TABLE取上半部的數(shù)據(jù)碼
MOV P0,A ;輸出至P0顯示
INC R0 ;取下一個碼
MOV A,R0 ;取碼指針載入A
MOV DPTR,#TABLE ;數(shù)據(jù)指針指到TABLE
MOVC A,@A+DPTR ;到TABLE 取下半部的數(shù)據(jù)碼
MOV P2,A ;輸出至p2顯示
INC R0 ;取碼值加1
MOV R3,#25 ;延時
DJNZ R3,$
MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
RET
DELAY:
MOV R3,#200
D7: MOV R5,#248
DJNZ R5,$
DJNZ R3,D7
RET
;1 "振"
TABLE:DB 08H,40H,08H,42H
DB 08H,81H,0FFH,0FEH
DB 09H,02H,0AH,0CH
DB 7FH,0F0H,49H,00H
DB 49H,0FFH,49H,02H
DB 49H,0E0H,49H,18H
DB 59H,14H,0CBH,26H
DB 41H,44H,00H,00H
;2 "興"
DB 00H,80H,00H,81H
DB 20H,82H,18H,84H
DB 0CH,88H,00H,98H
DB 0C0H,80H,3CH,80H
DB 00H,80H,01H,90H
DB 06H,88H,18H,84H
DB 60H,86H,01H,83H
DB 00H,80H,00H,00H
;3 "中"
DB 00H,00H,1FH,0C0H
DB 10H,80H,10H,80H
DB 10H,80H,10H,80H
DB 10H,80H,0FFH,0FFH
DB 10H,80H,10H,80H
DB 10H,80H,10H,80H
DB 10H,80H,3FH,0C0H
DB 10H,00H,00H,00H
;4 "華"
DB 00H,20H,02H,20H
DB 04H,20H,08H,20H
DB 3FH,0A0H,0C0H,20H
DB 02H,20H,04H,0FFH
DB 08H,20H,0FFH,20H
DB 10H,0A0H,20H,0A0H
DB 60H,0A0H,03H,0A0H
DB 00H,20H,00H,00H
;5 "電"
DB 00H,00H,1FH,0E0H
DB 12H,40H,12H,40H
DB 12H,40H,12H,40H
DB 0FFH,0FCH,12H,42H
DB 12H,42H,12H,42H
DB 12H,42H,3FH,0E2H
DB 10H,02H,00H,0EH
DB 00H,00H,00H,00H
;6 "子"
DB 01H,00H,01H,00H
DB 41H,00H,41H,00H
DB 41H,00H,41H,02H
DB 41H,01H,47H,0FEH
DB 45H,00H,49H,00H
DB 51H,00H,61H,00H
DB 01H,00H,03H,00H
DB 01H,00H,00H,00H
;7 "事"
DB 20H,20H,20H,20H
DB 2EH,0A8H,2AH,0A8H
DB 2AH,0A8H,2AH,0AAH
DB 2AH,0A9H,0FFH,0FEH
DB 2AH,0A8H,2AH,0A8H
DB 2AH,0A8H,2AH,0A8H
DB 2EH,0FCH,60H,20H
DB 20H,20H,00H,00H
;8 "業(yè)"
DB 00H,02H,08H,02H
DB 06H,02H,01H,0E2H
DB 00H,02H,0FFH,0FEH
DB 00H,02H,00H,02H
DB 00H,02H,0FFH,0FEH
DB 00H,22H,00H,0C2H
DB 03H,02H,0CH,06H
DB 00H,02H,00H,00H
END
參考圖書:《8051單片機實踐與應(yīng)用》清華大學(xué)出版社
《單片機應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā)》人民郵電出版社 |