查看文章 |
;*****************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 ;程序结束 |
本文引用通告地址:http://aax1985.spaces.eepw.com.cn/articles/trackback/item/22515



