單片機應用系統中使用的顯示器主要有LED和LCD兩種。近年來也有用CRT顯示的。前者價格低廉,配置靈活,與單片機接口方便;后者可進行圖形顯示,但接口較復雜,成本也較高。LED(Ling Emiting Diode)是發光二極管的縮寫。實際應用非常普遍的是八段LED顯示器。LED顯示器在大型報時屏幕,銀行利率顯示,城市霓虹燈建設中,得到廣泛應用。在這些需要多位LED顯示的場合,怎樣實現系統穩定,價格低廉的顯示,成為決定其成本的關鍵所在。
2 74HC595實現LED靜、動態顯示基本原理
74HC595是美國國家半導體公司生產的通用移位寄存器芯片。并行輸出端具有輸出鎖存功能。與單片機連接簡單方便,只須三個I/O口即可。而且通過芯片的Q7引腳和SER引腳,可以級聯。而且價格低廉.
2.1 靜態顯示
每位LED顯示器段選線和74HC595的并行輸出端相連,每一位可以獨立顯示(見圖1)。在同一時間里,每一位顯示的字符可以各不相同(每一位由一個74HC595的并行輸出口控制段選碼)。
N位LED顯示要求N個74HC595芯片及N+3條I/O口線,占用資源較多,而且成本較高。這對于多位LED顯示很不利。
2.2 動態顯示
在多位LED顯示時,為了簡化電路,降低成本,節省系統資源,將所有的N位段選碼并聯在一起,由一片74HC595控制(見圖2)。由于所有LED的段選碼皆由一個74HC595并行輸出口控制,因此,在每一瞬間,N位LED會顯示相同的字符。想要每位顯示不同的字符,就必須采用掃描的方法,即在每一瞬間只使用一位顯示字符。在此瞬間,74HC595并行輸出口輸出相應字符段選碼,而位選則控制I/O口在該顯示位送入選通電平,以保證該位顯示相應字符。如此輪流,使每位分時顯示該位應顯示字符。由于74HC595具有鎖存功能,而且串行輸入段選碼需要一定時間,因此,不需要延時,即可形成視覺暫留效果。
N位LED顯示時,只需要一片74HC595即可完成,成本最低。但是,此種方法的最大弱點就是當LED的位數大于12位時,出現閃爍現象,這是所有動態LED顯示方式共同的弱點。
3 多位LED顯示方法的實現
74HC595具有一個8位串行輸入并行輸出的移位寄存器和一個8位輸出鎖存器。
;================================================
;74HC595 走馬燈演示程序
;================================================
SDATA_595 EQU P1.0 ;串行數據輸入
SCLK_595 EQU P1.1 ;移位時鐘脈沖
RCK_595 EQU P1.2 ;輸出鎖存器控制脈沖
;================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;================================================
MAIN:
MOV SP,#60H
MOV R0,#0FEH
MAIN1:
CALL OUT_595
CALL DELAY
MOV A,R0
RL A
MOV R0,A
JMP MAIN1
;---------------------------------------------------------------
;輸出鎖存器輸出數據子程序
;---------------------------------------------------------------
OUT_595:
LCALL WR_595
CLR RCK_595
NOP
NOP
SETB RCK_595 ;上升沿將數據送到輸出鎖存器
NOP
NOP
NOP
CLR RCK_595
RET
;--------------------------------------------------------------
;移位寄存器接收數據子程序
;--------------------------------------------------------------
WR_595:
MOV R4,#08H
MOV A,R0
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿發生移位
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;--------------------------------------------------------------
;延時子程序
;--------------------------------------------------------------
DELAY:
MOV R5,#03H
DEL0:
MOV R6,#0FFH
DEL1:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
;---------------------------------------------------------------
END
圖3 多位LED動態顯示驅動電路連線圖
為實現24位或更多位LED顯示,本文提出了一種全新的方法。此方法結合了動態和靜態顯示的優點,可以說是兩者的結合。連線圖如圖3所示。段選碼由三片74HC595控制,段選數據由74HC595的SER引腳串行輸入,由于輸出使能時鐘RCLK并接在一起,因此,三片74HC595并行輸出端同時輸出。而三個LED位選信號也并接在一起,因此,一次可以同時點亮三位LED。此過程類似于靜態顯示。每片74HC595并行輸出端并接8位LED,用于掃描輸出,此過程類似于動態掃描過程。此方法運用3片74HC595,n條位選信號,即可實現3n位LED顯示。成本低廉,而且節省資源。此種方法實現多位LED顯示程序框圖為圖4所示,MCU為89S52。