新闻| 论坛| 博客| 在线研讨会
16X16点阵汉字显示89C51
张阳| 2008-05-05 16:57:15 阅读:7833 发布文章

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 ;程序结束

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
[ 匿名]  2008-11-15 17:49:03 

xiexie

推荐文章
最近访客