?? max7219.txt
字號:
MAX7219的編程非常簡單,只占用系統的3個普通I/O口,本例使用的是P1.5,P1.6與P1.7口,
實際上改用其它任意3個普通I/O口都可以。
(1)從CPU輸出I/O口到MAX7219芯片DIN數據輸入口的基本數據傳輸格式為16位串行數據,
不管是傳送控制數據還是顯示數據,都是按16位串行數據進行的。
(2)對單片MAX7219而言,傳送的順序從DIG0到DIG7,即先送高位,后送低位,而且每一
位所對應的16位串行數據也是從位15開始至位0結束,這一點恰好與常用的單片機系統移位
寄存器74LS164相反。
(3)在多片MAX7219串聯方式下,CPU先最遠端的MAX7219芯片傳送數據,然后依次由遠到
近,最后才傳送相鄰最靠近的CPU的那一片MAX7219。
對兩片MAX7219一次同時傳送數據,即采用32位串行數據移位通信的方法,也可以充分利用
MAX7219的不工作方式寄存器。對兩片MAX7219分別送16位串行數據,這樣程序會更簡潔一些,
而且可讀性更好。
……
MOV 70H,#0FFH ;譯碼方式控制字
MOV 71H,#0F5H ;亮度控制字(可調) MOV 72H,#0F5H ;掃描個數控制字
MOV 73H,#0F1H ;關閉REG控制字
MOV 74H,#0F0H ;顯示測試控制字
MOV R1,#05H ;7219-1初始化
MOV R2,#09H
MOV R5,#00H
MOV R0,#70H
LCALL DIP
MOV R1,#05H ; 7219-2初始化
MOV R2,#09H
MOV R5,#0FH
MOV R0,#70H
LCALL DIP
……
(40H為顯示BCD碼緩沖區首址)
MOV R1,#06H ; 7219-1送數
MOV R2,#01H
MOV R5,#00H
MOV R0,#40H
LCALL DIP
MOV R1,#06H ; 7219-2送數
MOV R2,#01H
MOV R5,#0FH
MOV R0,#46H
LCALL DIP
……
(顯示驅動子程序)
DIP: NOP
PL1: MOV A,R5 ;R5=0 送數據給7219-1
JNZ PL2 ;R5≠0 送數據給7219-2
MOV 21H,#00H ;啟動不工作方式REG
MOV 20H,#00H
LCALL DIP2
PL2: MOV 21H,R2 ;7219REG地址指針送21H
MOV 20H,@R0 ;BCD碼緩沖區指針送20H
INC R2
INC R0
LCALL DIP2
MOV A,R5
JZ PL3
MOV 21H,#00H
MOV 20H,#00H
LCALL DIP2
PL3: SETB P1.5 ;LOAD上升沿鎖存最后移入的16位數
DJNZ R1,PL1 ; 如未完,接著送下一組16位數
RET
(16位數據移位子程序)
DIP2: CLR P1.5
CLR P1.6
MOV R7,#10H
PL4: MOV C,0FH ;16位數的最高位送7219的DIN
MOV P1.7,C
SETB P1.6 ;7219CLK的上升沿鎖存該位數
MOV A,21H ;移位操作
RL A
MOV 21H,A
MOV A,20H
RLC A
MOV 20H,A
MOV 08H,C
CLR P1.6 ;下降沿把數據移出DOUT端口
DJNZ R7,PL4
RET
八位串行LED顯示驅動器MAX7219 7211應用程序.ASM
程序匠人 發表于 2005-8-27 20:08:00 閱讀全文 | 回復(0) | 引用通告 | 編輯
程序清單:
ORG 0000H
MAX7219:DIN BIT P1.1 ;定義變量
CLK BIT P1.2
LOAD BIT P1.1
LED_BF EQU 50H ;顯示數據首址
AJMP MAIN
MAIN: MOV SP.#70H
LCALL PROCESS ;設置MAX7219初始值
LCALL DISPLAY ;顯示
WAIT; ;其他程序省略
SJMP WAIT
;MAX7219初始化子程序
PROCECC :MOV A,#0BH
MOV B,#07H
LCALL W_7219
MOV A,#09H
MOV B,#00H
LCALL W_7219
MOV A,##0AH
MOV B,#09H
LCALL W_7219
MOV A,#0CH
MOV B,#01H
LCALL W_7219
RET
;MAX7219顯示子程序
DISPLAY:MOV R0,#LED_BF
MOV R4,#01H
MOV R3,#08H
C_DISP:MOV A,@R0
MOV B,A
MOV A,R4
LCALL W_7219
INC R0
INC R4
DJNZ R3,C_DISP
RET
W_7219:CLR LOAD
LCALL SD_7219
MOV A,B
LCALL SD_7219
SETB LOAD
RET
SD_7219:MOV R6,#08H
C_SD:NOP
CLR CLK
RLC A
MOV DIN,C
NOP
SETB CLK
DJNZ R6,C_SD
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -