51单片机驱动单片机驱动16×16LED点阵显示动画汉字汇编程序点阵显示动画汉字汇编程序
这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子。
ORG 0000H
ST: MOV A,#0FFH ;初始化
MOV P1,A
MOV P2,A
MOV P3,A
MOV P0,A
CLR A
MOV R0,#50H ;显示缓存清0
MOV R1,#20H ;控制清0的次数
ST0: MOV @R0,A
INC R0
DJNZ R1,ST0
;正文显示
CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1
LCALL HZ
;结束动画
SCREE:
MOV DPTR,#TAB2;查表指针指向TAB2
ACALL DD
MOV DPTR,#TAB3;查表指针指向TAB3
ACALL DD
MOV DPTR,#TAB4;查表指针指向TAB4
ACALL DD
LJMP CHINESE
;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)
DD: MOV B,#00H
MOV R0,#08H ;显示8幅画面
AJMP CC
CC0: MOV A,B
ADD A,#20H ;指向下一幅画面
MOV B,A
CC: MOV R7,#08H ;画面停留时间
MOV R3,B
MOV 37H,R0
LCALL ENTER
DIS00: LCALL DISPLAY
DJNZ R7,DIS00
MOV R0,37H
DJNZ R0,CC0
RET
;汉字上移子程序,可显示8个汉字,(表必须深256字节)
HZ: MOV R3,#00H ;查表偏移量
MOV R5,#81H ;查表128次
MOVBACK: MOV R4,#10H ;使显示完一个汉字
MOVBACK0: MOV R7,#02H ;一桢画面显示时间
MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换
MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换
MOV R2,#10H ;内存后移的次数
DJNZ R5,MOVBACK1
RET ;显示完该表,返回
MOVBACK1: MOV A,@R0 ;低8位被后移的内存单元数据暂存入A
INC R0 ;后移两字节
INC R0
MOV @R0,A ;放入要移的低8位数据
MOV A,R0 ;R0指向下一个要后移的内存单元
SUBB A,#04H
MOV R0,A
MOV A,@R1 ;高8位被后移的内存单元数据暂存入A
INC R1 ;后移两字节
INC R1
MOV @R1,A ;放入要移高8位的数据
MOV A,R1 ;R1指向下一个要后移的内存单元
SUBB A,#04H
MOV R1,A ;R1指向下一个要后移的内存单元
DJNZ R2,MOVBACK1 ;显示缓存数据依次后移
MOV A,R3 ;从表TAB1读入要移进50H,51H的数据
MOVC A,@A+DPTR;先给50H读数据
MOV 50H,A
MOV A,R3 ;指向下一字节
INC A
MOV R3,A
MOVC A,@A+DPTR;再给51H读数据
MOV 51H,A
MOV A,R3 ;指向下一字节