0 引言
一般情況下要完全顯示出常用漢字至少需要16×16點陣,但由于Proteus元件庫中沒有16×16LED模塊,為了達到顯示要求,每個漢字可由四塊8×8 LED模塊組成。組合方式為先對每個8×8模塊行列引腳連接好總線,然后四個單色模塊組合緊密。 驅動電路采用動態(tài)掃描驅動方式,設計中行驅動信號采用了16個同向驅動器7407,并在每根信號線上接上拉電阻;列驅動信號先接-4-16譯碼器74HCl54,然后十六個列驅動信號接16個反向驅動器7406,并每根信號線接上拉電阻。
單片機上電復位后,當按列掃描時,四個漢字的第一個字由Pl口輸出列信號,首先第l列輸出“1”,第l列字模數(shù)據(jù)由16行輸出(P0、P2口);然后延時一定時間后,第2列輸出“l”,第2列字模數(shù)據(jù)再由16行輸出;……;如此循環(huán),直至第16列;16列掃描完成后,再進行下一次循環(huán)掃描。所以在某一時刻,只有一行或一列LED被對應的字模數(shù)據(jù)驅動點亮。只要掃描間隔時間合適,利用人眼的視覺暫留特性,看上去整個字符就顯示在LED點陣顯示器上。
2 漢字顯示程序設計
根據(jù)以上硬件電路和單片機控制原理,編程思路如圖2所示。
完整的程序代碼如下:
MOV DPTR,#WORDTAB;初始化
MOV Rl,#0
MOV R2,#0
MOV R3,#16
MOV R4,#100
MOV R5,#4
LOOP:SETB P1.4
MOV A,R1 :查表取出字模數(shù)據(jù)經P0口輸出
MOVC A,@A+DPTR
CPLA
MOVP0,A
INC R1 ;字模數(shù)據(jù)索引值加1
MOVA,R1 ;查表取出字模數(shù)據(jù)經P2口輸出
[!--empirenews.page--]
MOVC A,@A+DPTR
CPLA
MOVP2,A
INC R1 ;字模數(shù)據(jù)索引值加1
MOV P1,R2 ;列控制信號輸出
INC R2 ;列控制寄存器加1
LCALL DELAY;顯示延時
DJNZ R3,LOOP;判斷16列顯示完否
DJNZ R4,K1 ;判斷是否已顯示100次
MOV R4,#100 ;顯示次數(shù)寄存器重賦初值
SJMPK2
K1:CLRC ;字模數(shù)據(jù)索引值減32,列控制寄存器和列數(shù)寄存器重賦初值
3 仿真及結果
仿真方法是:
(1)在Keil C51仿真軟件下創(chuàng)建項目,并把上述源程序添加到項目中,通過編譯產生一個“.hex”為后綴的文件,此文件就是用于燒寫到Proteus軟件中AT89C51芯片的文件。
(2)把生成的“.hex”為后綴的文件添加到Proteus軟件中繪制的AT89C51芯片中作為控制程序。
(3)在Proteus軟件仿真電路圖中點擊左下角的運行按鈕,則可在LED顯示點陣中看到“廣東工貿”四個漢字輪流顯示的結果。
從仿真圖中可以看到“東”字在LED顯示點陣中顯示出來,設定每個字顯示1秒,下秒將顯示“工”字,“廣東工貿”四個字循環(huán)顯示。四個字顯示出來如圖3所示。