汕尾市職業技術學校 張光建
針對LED點陣顯示漢字需要占用單片機多個并行口的問題,提出了基于89S51單片機的16×16點陣漢字顯示設計,利用74HC138和74HC595對單片機并行口進行擴展,從硬件設計、軟件設計方案等關鍵環節,分別進行了詳細討論。
隨著單片機技術的發展,LED點陣屏作為文字和圖形顯示的新型媒體,由于亮度高、耗能低、色彩鮮艷、壽命長等特點,迅速出現在學校、醫院、車站等場所。但LED點陣顯示需要占用單片機多個并行口,而通用移位寄存器74HC595T和譯碼器74HC138,可以實現對單片機IO的擴展,從而節約了大量的并口資源。本設計詳細介紹了74HC138和74HC595芯片在1616×16點陣LED顯示屏的應用。
16×16點陣漢字顯示電路如圖1所示,它由一片16×16點陣LED顯示屏、兩片74HC138構成的行控制單元、兩片74HC595構成的列控制單元及AT89S51單片機構成。列控制單元用于輸入數據,而行控制單元用于逐行掃描。

圖1 系統總體結構
本設計采用的是共陰16×16點陣顯示模塊。它由256只發光二極管按一定規律安裝成方陣,從內部結構如圖2所示,可以看出,總共有16行和16列,每行的發光二極管陰極相連,每列的發光二極管陽極相連。在行和列的交叉處有一個發光二極管,要使其中任一個二極管發光,則其對應行為低電位,而對應的列為高電位即可。
行控制單元的控制原理是:先使第一行Y0為低電平,其余行為高電平,顯示第一行數據;然后第二行Y1為低電平,其余行電平,顯示第二行數據。按照這個規律每行以較快的速度不斷進行刷新,由于發光二極管的余輝效應和人的視覺暫留現象兩個因素,給人的印象就是一組靜態的數據,不會產生閃爍感。動態顯示能夠節省I/O端口,且功耗低。
本設計采用74HC138三位譯碼器。此譯碼器的原理如圖3所示。由于該譯碼器僅有8個輸出,而16×16點陣顯示模塊有16行,故采用兩片74HC138級聯控制16×16點陣顯示模塊的行。

圖2 共陰16×16點陣顯示模塊內部結構

圖3 兩片74HC138級聯電路圖

列控制單元采用兩片74HC595級聯,如圖4所示。74HC595把串行輸入信號轉換成并行輸出信號,其引腳功能如下:(1)串行輸入端為DS;(2)8位并行輸出端為Q0-Q7,SQ為串行輸出端,它把數據輸出到另一片74HC595的串行輸入端;為移位寄存器清零端,當位低電位時能把移位寄存器的數據清零。一般接高電平;(4)RCK為數據輸入時鐘端。當該引腳上升沿時移位數據寄存器的數據移位,從Q0移到Q1,Q1移到Q2,最后Q6移到Q7。當為下降沿時移位數據寄存器的數據不變;(5)RCK為輸出存儲器鎖存時鐘端。該引腳信號上升沿時移位寄存器的數據進入存儲寄存器,下降沿時存儲寄存器數據不變:為使能端,一般接地。
74HC595的工作如下:當SCK引腳有一個上升沿脈沖時,DS的數據送入移位寄存器一位,連續8個上升沿脈沖時,可以將一個8位數據送入到移位寄存器。同時SQ也串行輸出移位寄存器的高位值。當RCK引腳有一個上升沿脈沖時,移位寄存器中的值鎖到鎖存寄存器中。當為低電平時,數據從Q0-Q7輸出。U3的Q0-Q7端控制16×16點陣顯示模塊的X0-X7列,而U4的Q0-Q7端16×16點陣顯示模塊的X8-X15列。

圖4 兩片74HC595級聯電路圖
AT89S51的P0.0-P0.4分別接行控制單元的A0、A1、A2、A3和EN四個端口,而P0.5-P0.7分接列控制單元的DS、RCK和SCK三個端口。
任何一個漢字或字符號都是多個點組成的,漢字可以由16×16點陣組成。目前點陣取模軟件有多種,本設計采用PCtoL CD2002軟件。參數設置為:點陣格式為“陽碼”,取模方式為“逐行式”,取模走向為“順向”,每行顯示數據為“點陣16”。
根據編程思路,該設計有四個模塊:主程序模塊、發送數據字節模塊、數據鎖存模塊和列控制模塊。主程序不斷循環控制上半屏和下半屏的顯示,實現漢字動態顯示。剩下三個模塊用于對列的控制和數據的傳送。程序流程圖如圖5所示。
參考程序如下:




圖5 主程序點陣漢字顯示流程圖
經過調試,顯示效果如圖6所示,達到了設計效果。

圖6 調試后的效果圖