汕尾市職業(yè)技術(shù)學(xué)校 張光建
針對LED點(diǎn)陣顯示漢字需要占用單片機(jī)多個(gè)并行口的問題,提出了基于89S51單片機(jī)的16×16點(diǎn)陣漢字顯示設(shè)計(jì),利用74HC138和74HC595對單片機(jī)并行口進(jìn)行擴(kuò)展,從硬件設(shè)計(jì)、軟件設(shè)計(jì)方案等關(guān)鍵環(huán)節(jié),分別進(jìn)行了詳細(xì)討論。
隨著單片機(jī)技術(shù)的發(fā)展,LED點(diǎn)陣屏作為文字和圖形顯示的新型媒體,由于亮度高、耗能低、色彩鮮艷、壽命長等特點(diǎn),迅速出現(xiàn)在學(xué)校、醫(yī)院、車站等場所。但LED點(diǎn)陣顯示需要占用單片機(jī)多個(gè)并行口,而通用移位寄存器74HC595T和譯碼器74HC138,可以實(shí)現(xiàn)對單片機(jī)IO的擴(kuò)展,從而節(jié)約了大量的并口資源。本設(shè)計(jì)詳細(xì)介紹了74HC138和74HC595芯片在1616×16點(diǎn)陣LED顯示屏的應(yīng)用。
16×16點(diǎn)陣漢字顯示電路如圖1所示,它由一片16×16點(diǎn)陣LED顯示屏、兩片74HC138構(gòu)成的行控制單元、兩片74HC595構(gòu)成的列控制單元及AT89S51單片機(jī)構(gòu)成。列控制單元用于輸入數(shù)據(jù),而行控制單元用于逐行掃描。
圖1 系統(tǒng)總體結(jié)構(gòu)
本設(shè)計(jì)采用的是共陰16×16點(diǎn)陣顯示模塊。它由256只發(fā)光二極管按一定規(guī)律安裝成方陣,從內(nèi)部結(jié)構(gòu)如圖2所示,可以看出,總共有16行和16列,每行的發(fā)光二極管陰極相連,每列的發(fā)光二極管陽極相連。在行和列的交叉處有一個(gè)發(fā)光二極管,要使其中任一個(gè)二極管發(fā)光,則其對應(yīng)行為低電位,而對應(yīng)的列為高電位即可。
行控制單元的控制原理是:先使第一行Y0為低電平,其余行為高電平,顯示第一行數(shù)據(jù);然后第二行Y1為低電平,其余行電平,顯示第二行數(shù)據(jù)。按照這個(gè)規(guī)律每行以較快的速度不斷進(jìn)行刷新,由于發(fā)光二極管的余輝效應(yīng)和人的視覺暫留現(xiàn)象兩個(gè)因素,給人的印象就是一組靜態(tài)的數(shù)據(jù),不會產(chǎn)生閃爍感。動態(tài)顯示能夠節(jié)省I/O端口,且功耗低。
本設(shè)計(jì)采用74HC138三位譯碼器。此譯碼器的原理如圖3所示。由于該譯碼器僅有8個(gè)輸出,而16×16點(diǎn)陣顯示模塊有16行,故采用兩片74HC138級聯(lián)控制16×16點(diǎn)陣顯示模塊的行。
圖2 共陰16×16點(diǎn)陣顯示模塊內(nèi)部結(jié)構(gòu)
圖3 兩片74HC138級聯(lián)電路圖
列控制單元采用兩片74HC595級聯(lián),如圖4所示。74HC595把串行輸入信號轉(zhuǎn)換成并行輸出信號,其引腳功能如下:(1)串行輸入端為DS;(2)8位并行輸出端為Q0-Q7,SQ為串行輸出端,它把數(shù)據(jù)輸出到另一片74HC595的串行輸入端;為移位寄存器清零端,當(dāng)位低電位時(shí)能把移位寄存器的數(shù)據(jù)清零。一般接高電平;(4)RCK為數(shù)據(jù)輸入時(shí)鐘端。當(dāng)該引腳上升沿時(shí)移位數(shù)據(jù)寄存器的數(shù)據(jù)移位,從Q0移到Q1,Q1移到Q2,最后Q6移到Q7。當(dāng)為下降沿時(shí)移位數(shù)據(jù)寄存器的數(shù)據(jù)不變;(5)RCK為輸出存儲器鎖存時(shí)鐘端。該引腳信號上升沿時(shí)移位寄存器的數(shù)據(jù)進(jìn)入存儲寄存器,下降沿時(shí)存儲寄存器數(shù)據(jù)不變:為使能端,一般接地。
74HC595的工作如下:當(dāng)SCK引腳有一個(gè)上升沿脈沖時(shí),DS的數(shù)據(jù)送入移位寄存器一位,連續(xù)8個(gè)上升沿脈沖時(shí),可以將一個(gè)8位數(shù)據(jù)送入到移位寄存器。同時(shí)SQ也串行輸出移位寄存器的高位值。當(dāng)RCK引腳有一個(gè)上升沿脈沖時(shí),移位寄存器中的值鎖到鎖存寄存器中。當(dāng)為低電平時(shí),數(shù)據(jù)從Q0-Q7輸出。U3的Q0-Q7端控制16×16點(diǎn)陣顯示模塊的X0-X7列,而U4的Q0-Q7端16×16點(diǎn)陣顯示模塊的X8-X15列。
圖4 兩片74HC595級聯(lián)電路圖
AT89S51的P0.0-P0.4分別接行控制單元的A0、A1、A2、A3和EN四個(gè)端口,而P0.5-P0.7分接列控制單元的DS、RCK和SCK三個(gè)端口。
任何一個(gè)漢字或字符號都是多個(gè)點(diǎn)組成的,漢字可以由16×16點(diǎn)陣組成。目前點(diǎn)陣取模軟件有多種,本設(shè)計(jì)采用PCtoL CD2002軟件。參數(shù)設(shè)置為:點(diǎn)陣格式為“陽碼”,取模方式為“逐行式”,取模走向?yàn)椤绊樝颉?,每行顯示數(shù)據(jù)為“點(diǎn)陣16”。
根據(jù)編程思路,該設(shè)計(jì)有四個(gè)模塊:主程序模塊、發(fā)送數(shù)據(jù)字節(jié)模塊、數(shù)據(jù)鎖存模塊和列控制模塊。主程序不斷循環(huán)控制上半屏和下半屏的顯示,實(shí)現(xiàn)漢字動態(tài)顯示。剩下三個(gè)模塊用于對列的控制和數(shù)據(jù)的傳送。程序流程圖如圖5所示。
參考程序如下:
圖5 主程序點(diǎn)陣漢字顯示流程圖
經(jīng)過調(diào)試,顯示效果如圖6所示,達(dá)到了設(shè)計(jì)效果。
圖6 調(diào)試后的效果圖