赞助论坛
  • 3640阅读
  • 0回复

学习单片机之---7219应用 [复制链接]

楼层直达
jswr  
发帖
339
精华
1
金币
264
威望
8
贡献
7
好评
15
注册
2008-06-30
楼主    jswr 发表于: 2008-08-06 16:12:48 
NO_OP EQU 00H;单片7219不用
DIG0 EQU 01H
DIG1 EQU 02H
DIG2 EQU 03H
DIG3 EQU 04H
DIG4 EQU 05H
DIG5 EQU 06H
DIG6 EQU 07H
DIG7 EQU 08H
DECODE_MODE EQU 09H
INTENSITY   BIT 0AH
SCAN_LIMIT   BIT 0BH
SHUTDOWN   BIT 0CH
DISPLAY_TEST EQU 0FH

DIN   EQU P2.0;通讯引脚定义
CLK EQU P2.1
LOAD EQU P2.2;89C51的P2.O,P2.1,P2.2分别与MAX7219的DIN,CLK,LOAD端相连
        ORG 0000H
        LJMP START
        ORG 0500H
    START:
        MOV SP,#60H
        LCALL MAX7219_INITIAL;初始化MAX7219  
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 标号:MAX7219_DISPLAY   功能:MAX7219的显示程序
;+ 入口:27H~20H之间的单元
;+ 备注:从左至右27H~20H分别为DIG8~DIG1的数据缓冲区
;+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MAX7219_DISPLAY:
        ; MOV R0,#20H;20H~27H为待显示数据暂存区
        ;MOV R5,#08H
        ;--------------      
        ;MOV 20H,#2
        ;MOV 21H,#2
        ;--------------
        MOV 22H,#0AH
        ;--------------
        ;MOV 23H,#1
        ;MOV 24H,#2
        ;--------------        
        MOV 25H,#0AH
        ;--------------
        ;MOV 26H,#0
        ;MOV 27H,#2
        ;------------------------------------------------------              
        MOV R3,#DIG7;R2 中存放呆显示数据BCD(低四位有效)
        MOV R4,27H   ;写入8个位显示存储区
        LCALL MAX7219_WRITE
        MOV R3,#DIG6
        MOV R4,26H
        LCALL MAX7219_WRITE
        MOV R3,#DIG5
        MOV R4,25H
        LCALL MAX7219_WRITE
        MOV R3,#DIG4
        MOV R4,24H
        LCALL MAX7219_WRITE
        MOV R3,#DIG3
        MOV R4,23H
        LCALL MAX7219_WRITE
        MOV R3,#DIG2
        MOV R4,22H
        LCALL MAX7219_WRITE
        MOV R3,#DIG1
        MOV R4,21H
        LCALL MAX7219_WRITE
        MOV R3,#DIG0
        MOV R4,20H
        LCALL MAX7219_WRITE
        RET
MAX7219_INITIAL:;初始化7219
        MOV R3,#SHUTDOWN
        MOV R4,#01H
        LCALL MAX7219_WRITE;开机工作
        MOV R3,#DECODE_MODE
        MOV R4,#0FFH
        LCALL MAX7219_WRITE;设置解码方式为BCD
        MOV R3,#INTENSITY
        MOV R4,#05H
        LCALL MAX7219_WRITE;亮度为中
        MOV R3,#SCAN_LIMIT
        MOV R4,#07H
        LCALL MAX7219_WRITE;扫描8位LED
   ;MOV R3,#DISPLAY_TEST
   ;MOV R4,#01H
   ;LCALL MAX7219_WRITE;测试8位LED
        MOV R3,#DISPLAY_TEST
        MOV R4,#00H
        LCALL MAX7219_WRITE;正常显示
        RET
MAX7219_WRITE:PUSH 00H
        MOV A,R3;R3中为控制寄存器的地址,R4中为传送的命令字或待显示的数据
        ;ClR LOAD;片选(MAX7221需加此命令,片选)
        NOP
        LCALL MAX7219_SEND;传送地址
        MOV A,R4
        LCALL MAX7219_SEND;传送数据或命令
        ClR LOAD
        NOP
        SETB LOAD;第16个clk上升沿,LOAD变为高16位数据被锁存到内部寄存器中
        NOP
        NOP
        CLR LOAD
        NOP
        POP 06H
        RET
MAX7219_SEND:MOV R0,#08H;向MAX7219传送8位数据或地址
MAX7219_LOOP:NOP
        NOP
        CLR CLK
        RLC A;移位先送高位
        MOV DIN,C
        NOP
        NOP
        SETB CLK
        DJNZ R0,MAX7219_LOOP
        RET          
         
         
         
;---------------------------------------------------------
         
          END