|
|
| |  |  |  | | | 74HC595實(shí)際應(yīng)用-8位數(shù)碼管循環(huán)移位顯示 | 
| | | 作者:佚名 文章來(lái)源:網(wǎng)絡(luò)收集 點(diǎn)擊數(shù): 2665 更新時(shí)間:2007-3-1 0:50:13 | <!--插入廣告JS代碼--> | ;===============================================================
SDATA_595 EQU P0.0 ;串行數(shù)據(jù)輸入
SCLK_595 EQU P0.1 ;移位時(shí)鐘脈沖
RCK_595 EQU P0.2 ;輸出鎖存器控制脈沖
LS138_G1 EQU P0.3 ;使能端
LS138_A EQU P0.4 ;
LS138_B EQU P0.5 ;
LS138_C EQU P0.6 ;
;=====================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;=====================================================
MAIN:
MOV SP,#60H
MOV P0,#00H
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R0,#30H ;初始化寄存器
MOV R1,#00H
MOV R2,#00H
MOV 30H,#01H ;顯示數(shù)據(jù)
MOV 31H,#02H
MOV 32H,#03H
MOV 33H,#04H
MOV 34H,#05H
MOV 35H,#06H
MOV 36H,#07H
MOV 37H,#08H
CLR LS138_G1 ;禁止74LS138使能
MOV R5,#7FH
MAIN1:
LCALL DISPLAY
DJNZ R5,MAIN1
MOV A,30H ;數(shù)據(jù)交換
XCH A,31H
XCH A,32H
XCH A,33H
XCH A,34H
XCH A,35H
XCH A,36H
XCH A,37H
XCH A,30H
MOV R5,#7FH
JMP MAIN1
;=============================================================
;顯示子程序
;=============================================================
DISPLAY:
MOV A,@R0 ;查表取顯示數(shù)據(jù)
MOV DPTR,#TAB_NU
MOVC A,@A+DPTR
LCALL WR_595 ;移位寄存器接收數(shù)據(jù)
CLR LS138_G1 ;關(guān)閉顯示
LCALL OUT_595 ;將數(shù)據(jù)送到輸出鎖存器
NOP
NOP
MOV A,P0 ;讀P0狀態(tài)
ANL A,#0FH ;維持低4位狀態(tài)
ADD A,R2 ;確定顯示位
MOV P0,A ;送顯示位
SETB LS138_G1 ;開(kāi)顯示
INC R0 ;取下一位顯示數(shù)據(jù)
INC R1 ;
MOV A,R1 ;修改顯示位
SWAP A ;高、低四位數(shù)據(jù)交換
MOV R2,A ;確定下一個(gè)顯示位
LCALL DELAY ;延時(shí)
CJNE R1,#09H,DISPLAY ;8個(gè)數(shù)碼管是否顯示完畢?
MOV R0,#30H ;重新初始化寄存器
MOV R1,#00H
MOV R2,#00H
RET
;=============================================================
;輸出鎖存器輸出數(shù)據(jù)子程序
;=============================================================
OUT_595:
CLR RCK_595
NOP
NOP
SETB RCK_595 ;上升沿將數(shù)據(jù)送到輸出鎖存器
NOP
NOP
NOP
CLR RCK_595
RET
;=============================================================
;移位寄存器接收數(shù)據(jù)子程序
;=============================================================
WR_595:
MOV R4,#08H
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿發(fā)生移位
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;=============================================================
;延時(shí)子程序
;=============================================================
DELAY:
MOV R6,#02H
DEL1:
MOV R7,#200
DJNZ R7,$
DJNZ R6,DEL1
RET
;=============================================================
TAB_NU:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
;=============================================================
END
實(shí)驗(yàn)源理圖如下:
