74HC595实际应用-8位数码管循环移位显示
来源: 作者: 时间:2006-12-27 阅读:
;===============================================================
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P0.1 ;移位时钟脉冲
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 ;显示数据
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 ;数据交换
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 ;查表取显示数据
MOV DPTR,#TAB_NU
MOVC A,@A+DPTR
LCALL WR_595 ;移位寄存器接收数据
CLR LS138_G1 ;关闭显示
LCALL OUT_595 ;将数据送到输出锁存器
NOP
NOP
MOV A,P0 ;读P0状态
ANL A,#0FH ;维持低4位状态
ADD A,R2 ;确定显示位
MOV P0,A ;送显示位
SETB LS138_G1 ;开显示
INC R0 ;取下一位显示数据
INC R1 ;
MOV A,R1 ;修改显示位
SWAP A ;高、低四位数据交换
MOV R2,A ;确定下一个显示位
LCALL DELAY ;延时
CJNE R1,#09H,DISPLAY ;8个数码管是否显示完毕?
MOV R0,#30H ;重新初始化寄存器
MOV R1,#00H
MOV R2,#00H
RET
;=============================================================
;输出锁存器输出数据子程序
;=============================================================
OUT_595:
CLR RCK_595
NOP
NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
NOP
NOP
CLR RCK_595
RET
;=============================================================
;移位寄存器接收数据子程序
;=============================================================
WR_595:
MOV R4,#08H
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;=============================================================
;延时子程序
;=============================================================
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

机电专业相关文章
赞助商链接
最新推荐文章
最新热门文章
Hot 11
