"); //-->
16X16点阵汉字显示89C51
;*****************16*16 LED点阵显示程序*****************
;*MCU: AT89C51
;*MCU-crystal: 12M
;*Version: 1.0
;*Last Updata: 2005-1-1
;*Author: WWW.PICAVR.COM
;*Description: FOR-16*16 LED点阵显示程序, 参考了一本书上做的.
显示"欢迎光临"字符,字符可同时显示两个汉字并且
可上下,左右移动显示.
;**********************************************************
ORG 00H
START: MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
ACALL DISP ;调用显示子程序
ACALL MOVE ;调用左移子程序
AJMP START
;*********************************************************
DISP: MOV R2,#02H ;每个画面2个字,4个字分2次显示
MOV 20H,#00H ;取码指针暂存地址20H初值为00H
D4: MOV R4,#00H ;74154扫描指针初值
MOV R1,#0FFH ;每幕停留的时间
D5: MOV R6,#32 ;每幕2个字,32个数据
MOV R0,20H ;取码指针存入R0
D2: ACALL READ1 ;调用取码子程序
INC R4 ;扫描下一列
DJNZ R6,D2 ;显示1幕?
MOV R4,#00 ;清除74154扫描指针为00
DJNZ R1,D5 ;每幕停留时间到了?
MOV 20H,R0 ;保留取码指针存入20H地址
DJNZ R2,D4 ;2幕显示完毕了?
RET
;********************************************************
READ1: MOV A,R4 ;扫描指针载入A
MOV P1,A ;输出至P1扫描列
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB ;数据指针指到TAB
MOVC A,@A+DPTR ;到TAB取上半部的数据码
MOV P0,A ;输出至P0显示
INC R0 ;取下一个码
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB ;数据指针指到TAB
MOVC A,@A+DPTR ;到TAB取下半部的数据码
MOV P2,A ;输出至P2显示
INC R0 ;取码值加1
MOV R3,#25 ;延时
DJNZ R3,$
MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
DELAY: MOV R3,#01 ;延时
D7: MOV R5,#50
DJNZ R5,$
DJNZ R3,D7
RET
;*************************************************
MOVE:
MOV 20H,#00 ;取码指针暂存地址20H初值为00H
MOV R4,#00H ;74154扫描指针初值
M1: MOV R1,#1FH ;每幕停留的时间
M2: MOV R6,#32 ;每幕2个字,32个数据
MOV R0,20H ;取码指针存入R0
M3: ACALL READ1 ;调用取码子程序
INC R4 ;扫描下一列
DJNZ R6,M3 ;显示1幕?
MOV R4,#00 ;清除74154扫描指针为00
DJNZ R1,M2 ;每幕停留时间到了?
MOV A,20H ;取码指针载入A
ADD A,#02 ;加2
MOV 20H,A ;再存入20H地址取码指针
XRL A,#66 ;4个字是否都左移完毕了?
JNZ M1 ;循环
RET
;*************************************************
DL5S: MOV R6,40H ;delay program
DL1: MOV R5,#200
DL2: MOV R4,#125
DL3: DJNZ R4,$
DJNZ R5,DL2
DJNZ R6,DL1
RET
;************************************************
;"欢迎光临"显示用ROM数据表
TAB: ;欢
DB 00H,20H,3CH,10H
DB 44H,08H,84H,04H
DB 04H,03H,04H,03H
DB 84H,04H,44H,08H
DB 3CH,10H,00H,20H
DB 00H,00H,07H,20H
DB 04H,10H,0F4H,0FH
DB 04H,10H,1CH,20H
;迎
DB 00H,00H,49H,20H
DB 6AH,10H,0DCH,0FH
DB 08H,10H,00H,20H
DB 0FEH,27H,02H,22H
DB 02H,21H,81H,20H
DB 00H,20H,02H,20H
DB 0FEH,2FH,02H,22H
DB 02H,22H,0FEH,21H
;光
DB 00H,00H,00H,20H
DB 22H,20H,24H,20H
DB 28H,10H,30H,08H
DB 0E0H,07H,3FH,00H
DB 20H,00H,0F0H,3FH
DB 28H,20H,24H,20H
DB 22H,20H,20H,20H
DB 00H,38H,00H,00H
;临
DB 00H,00H,0F0H,03H
DB 00H,00H,00H,00H
DB 0FFH,3FH,00H,00H
DB 40H,00H,20H,3FH
DB 10H,21H,0FH,21H
DB 14H,21H,24H,3FH
DB 44H,21H,04H,21H
DB 04H,21H,04H,3FH
DB 00H,00H,00H,00H
END ;程序结束
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。