📄 max7219串行驱动led数码管.asm
字号:
ORG 00H
AJMP MAIN
MAIN: MOV SP,#70H
LCALL START ;设置MAX7129初始值
LCALL DISP ;调显示子程序
; MAX7219初始化子程序
START: MOV A,#0FBH ;设置扫描限制
MOV B,#07H ;可接8个LED数码管
LCALL WRite ;写扫描限制初始值
MOV A,#0F9H ;设置译码模式
MOV B,#00H ;不译码
LCALL WRite ;写译码模式
MOV A,#0FAH ;设置亮度值
MOV B,#0CH ;亮度设为25/32
LCALL WRite
MOV A,#0FCH ;设置正常工作状态
MOV B,#01H
LCALL WRite
RET
;MAX7219驱动LED显示子程序
DISP: MOV DPTR,#TABLE ;装入显示数据
MOV A,#00H
MOV R3,#01H ;第一个LED
MOV R2,#09H ;显示8个LED
DISP1: MOVC A,@A+DPTR
MOV B,A ;需显示的数据暂存B寄存器中
MOV A,R3
LCALL WRite ;LED显示数据
LCALL DELAY
INC DPTR
INC R3
DJNZ R2,DISP1
RET
WRite: CLR P2.1 ;LOAD="0"
LCALL SEND ;传送MAX7219的地址
MOV A,B
LCALL SEND ;传送数据
SETB P2.1 ;装载数据
RET
;MAX7219地址或数据串行写子程序
SEND: MOV R5,#08H ;向MAX7219送地址或数据
SEND1: RLC A
MOV P2.0,C ;移位装载
CLR P2.2
NOP
NOP
NOP
NOP
NOP
SETB P2.2
DJNZ R5,SEND1
RET
TABLE: DB 7EH,30H,6D,79H,33H,5BH,5FH,70H
RET
DELAY: MOV R7,#14H
DEL: MOV R6,#8AH
DJNZ R6,$
DJNZ R7,DEL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -