DJNzR6,LP1;8次结束,否则
循环LPL
RET;“写8位数据子程序”子程
序返回
END;程序结束
几个注意事项
1.用单片机的串口与MAX7219
的DIN连接时,注意数据传送的方向。
2.数码管是共阴极的。
3.数码管可以换成64个发光二极
管或者LCD。
如果在实际应用中需要更多的数
码管,大于8个,还可以利用DOUT
进行多片MAX7219的连接,感兴趣
的读者可试一下。
MAX7219子程序”
MOVA,#09H;译码方式寄存器
地址以数据形式送累加器A
NOVB,#OFFH;译码方式(译码)
送寄存器B
LCALLWRITE:调用“写
HAX7219子程序”
NOVA,#OAH;亮度控制寄存器
地址以数据形式送累加器A
NOVB,#09H;亮度调节(10级)
送寄存器B
LCALLWRITE;调用“写
NAX7219子程序”
MOVA,#OCH;关断寄存器地址
以数据形式送累加器A
MOVB,#01H;待机开关(关)送
寄存器B
LCALLWRITE;调用“写
MAX7219子程序”
START:NOVR3,#08H;显示数据循
环次数送寄存器R3
NOVRO,#OOH;寄存器RO存放
TAB表格间接指针
LOOP:M0VDPTR,#TAB;送TAB首
地址入DPTR
MOVR4,#01H;数位寄存器0的
地址(01H)以数据形式入R4
LP:M0VA,RO;TAB表格间接指针入A
MOVCA,@A+DPTR;取TAB首地
址中的显示数据入A
NOVB,A;TAB首地址中的显示
数据入B
M0VA,R4;数位寄存器0的地址
入A
LCALLWRITE:调用“写
MAX7219子程序”
INCRO;RO加一(TAB表格间接
指针指向下一个)
INCR4:R4加一(换下一个数位
寄存器)
DJNZR3,LP;循环八次结束
LJMPSTART;重新开始显示0~
7
TAB:DB00H,01H,02H,U3H,
04H,05H,06H,07H;前面对“译码
方式寄存器”采用了BCD译码方式,所
以TAB数据这么写
WRlTE:;写MAX7219子程序(写
16位,前8位地址,后8位数据)
CLRLOAD:设置LOAD无效
LCALLWRITE8:调用写8位数
据子程序
HOVA,B;B中内容送A
LCALLWRITE8:调用写8位数
据子程序
SETBLOAD;使LOAD产生上升
沿,把刚送入的16位串行数据锁存到
数据或控制寄存器中。
RET;WRITE子程序返回
WRITE8:;“写8位数据子程序”
开始
NOVR6,#08H:数据位写入次
数.8次
LP1:CLRCLK:CLK无效
RLCA;取累加器A的最高位
MOVDIN,C;将累力口器A的最高
位送DIN
NOP;等待,为了有足够的时间传
送数据,可省略
SETBCLK;CLK产生上升沿,数
据被移入内部移位寄存器
DJNzR6,LP1;8次结束,否则
循环LPL
RET;“写8位数据子程序”子程
序返回
END;程序结束
几个注意事项
1.用单片机的串口与MAX7219的DIN连接时,注意数据传送的方向。
2.数码管是共阴极的。
3.数码管可以换成64个发光二极管或者LCD。
如果在实际应用中需要更多的数码管,大于8个,还可以利用DOUT进行多片MAX7219的连接,感兴趣的可试一下。
本文关键字:单片机 元器件特点及应用,元器件介绍 - 元器件特点及应用