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