⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max7219.txt

📁 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 + -