74HC595和74LS164一樣,也是串入并出的移位寄存器。
它們經常出現(xiàn)在單片機系統(tǒng)中,用來擴充并行輸出接口。
看過一些資料,送往74HC595的串行信號,基本上都是用單片機并行接口的某個位,模擬SPI的時序,輸出出來的。
這種方法,靈活性是它的優(yōu)點,速度低是它的缺點。
如果使用51單片機的串口方式0,就可以得到更高的速度和更簡練的編程方法。
在一般的單片機教材上,講到串口方式0的時候,都給出了用164擴充并口的方法。但是對595這個后起之秀,介紹甚少。
其實,595和164的功能是一樣的,只是多了一個“更新輸出”的控制引腳。
下面,做而論道介紹使用四片74HC595擴充四個8位接口、驅動數(shù)碼顯示器的方法。
電路如下所示:
注意:電路圖中省略了限流電阻。實際制作時,在每個段,串聯(lián)1K左右的電阻即可。
這個顯示電路,是屬于靜態(tài)顯示的方法,不需要經常的調用顯示子程序,使用起來非常方便。
這個顯示電路,僅僅畫出了四片595,實際上,可以仿照現(xiàn)在電路的結構,繼續(xù)級連下去。當然,級連過多,會導致信號不穩(wěn)定,那就要加上驅動電路了。
這個顯示電路,實際上也就是LED點陣屏幕上,“顯示一行”的驅動電路。如果配上16行的譯碼電路,就可以驅動16×32的點陣屏幕了。
用74HC595驅動數(shù)碼管的程序如下。
;用595并行輸出帶動4個數(shù)碼顯示器.
;=============================================
ORG 0000H
SJMP START
;-----------------------------------------------------------------
START:
MOV SCON, #0 ;設置串口方式0
MOV 30H, #1 ;在顯示緩沖區(qū)寫入數(shù)字:8031
MOV 31H, #3
MOV 32H, #0
MOV 33H, #8
CALL TXD_595 ;顯示
LJMP $ ;此處可以執(zhí)行其它程序,不必經常調用顯示程序
;-----------------------------------------------------------------
;串口發(fā)送到595的子程序.
;-----------------------------------------------------------------
TXD_595:
MOV R0, #30H ;顯示緩沖區(qū)首址
TXD_B:
MOV A, @R0 ;取來待顯示的數(shù)據
ADD A, #(TAB - $ - 3)
MOVC A, @A+PC ;查出七段碼
MOV SBUF, A ;串口輸出8位數(shù)
INC R0
JNB TI, $ ;等待輸出完畢
CLR TI ;很快,8us(@12MHz)即可輸出完8位數(shù)
CJNE R0, #34H, TXD_B ;共輸出4字節(jié)
CLR P3.2 ;令595更新顯示
SETB P3.2 ;用164,這兩行就免了
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H ;共陽極0-7顯示代碼
DB 80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH ;共陽極8-F顯示代碼
;=============================================





