作业帮 > 综合 > 作业

关于16*16点阵移动的问题?

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/31 21:16:19
关于16*16点阵移动的问题?
这个设计是利用一片c51,一片74hc154,两片74hc595 ,4片8*8led的汉字显示屏,下面的程序能够实现右向左移动,但就是不知道如何实现从左向右展开和闭合、从上向下展开和闭合,
ORG 0H
LJMP START
START:MOV 20H,#00H
MOV A,#0FFH
MOV P1,A
MOV P3,A
MOV SCON,#0
MOV R7,#20H
MOV DPTR,#TAB
LL1:MOV R6,#8;
MOV R2,#0
MOV 70H,DPH
MOV 71H,DPL
LOOP:CLR P1.6
LCALL Q2
MOV A,R2
MOV P1,A
SETB P1.6
SETB P1.3
INC R2
LCALL DELAY
INC DPTR
INC DPTR
DJNZ R6,LOOP
LL2:MOV R6,#8;
MOV R2,#0
LOOP2:CLR P1.6
LCALL Q2
MOV A,R2
MOV P1,A
SETB P1.6
INC R2
LCALL DELAY
INC DPTR
INC DPTR
DJNZ R6,LOOP2
MOV DPH,70H
MOV DPL,71H
DJNZ R7,LL1
MOV R7,#5
INC DPTR
INC DPTR
LJMP LL1
Q2:MOV A,#0
MOVC A,@A+DPTR;
MOV SBUF,A;
JNB TI,$
CLR TI
MOV A,#1
MOVC A,@A+DPTR;
MOV SBUF,A;
JNB TI,$
CLR TI
RET
DELAY:MOV R3,#1
DE1:MOV R4,#2
DE2:MOV R5,#250
DE3:DJNZ R5,DE3
DJNZ R4,DE2
DJNZ R3,DE1
RET
TAB:
DB 30H,08H,36H,1CH ;欢
DB 37H,38H,31H,0E0H
DB 3FH,0E0H,3CH,32H
DB 02H,06H,0EH,0CH
DB 0FCH,18H,0F3H,0F0H
DB 33H,0E0H,30H,30H
DB 3CH,18H,3CH,0CH
DB 00H,04H,00H,00H
DB 06H,02H,66H,06H ; 迎
DB 77H,0FCH,17H,0F8H
DB 00H,0CH,7FH,0E6H
DB 7FH,0E6H,0E0H,46H
DB 0C0H,06H,7FH,0F6H
DB 7FH,0F6H,60H,46H
DB 7FH,0E6H,7FH,0E6H
DB 00H,06H,00H,00H
电路图如下:
关于16*16点阵移动的问题?
;你这个代码本身有问题,在整个左移动循环结束后,dptr还会继续加,后面代码会飞掉
;给你的代码注释一下,
;加一个右到左,其他的你自己写
ORG 0H
LJMP START
START:

MOV 20H,#00H
MOV A,#0FFH
MOV P1,A
MOV P3,A
MOV SCON,#0
MOV R7,#20H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;改成右到左,修改这里
;MOV DPTR,#TAB
MOV DPTR, #TAB_END - 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LL1: ;LL1,LL2之间是发送左/右半的位也就是*16
MOV R6,#8;
MOV R2,#0
;如果要循环结束后,数据显示不乱码,或者跳飞
;在这里插入比较DPTR有没有超过的句子
MOV 70H,DPH
MOV 71H,DPL
LOOP:
CLR P1.6
LCALL Q2
MOV A,R2
MOV P1,A
SETB P1.6
SETB P1.3
INC R2
LCALL DELAY
;;;;;;;;;;;;;;;;;;;;;
;修改部分
;INC DPTR
;INC DPTR
DEC DPTR
DEC DPTR
;;;;;;;;;;;;;;;;;;;;

DJNZ R6,LOOP
LL2:
MOV R6,#8;
MOV R2,#0
LOOP2:
CLR P1.6
LCALL Q2
MOV A,R2
MOV P1,A
SETB P1.6
INC R2
LCALL DELAY
;;;;;;;;;;;;;;;;;;;;;;;;
;修改部分
;INC DPTR
;INC DPTR
DEC DPTR
DEC DPTR
;;;;;;;;;;;;;;;;;;;;;;;;;
DJNZ R6,LOOP2

MOV DPH,70H
MOV DPL,71H
DJNZ R7,LL1

MOV R7,#5
;;;;;;;;;;;;;;;;;;;;;;;;
;修改部分
;INC DPTR
;INC DPTR
DEC DPTR
DEC DPTR
;;;;;;;;;;;;;;;;;;;;;;;;;
LJMP LL1
Q2: ;发送一个字到595
MOV A,#0
MOVC A,@A+DPTR;
MOV SBUF,A;
JNB TI,$
CLR TI
MOV A,#1
MOVC A,@A+DPTR;
MOV SBUF,A;
JNB TI,$
CLR TI
RET
DELAY:
MOV R3,#1
DE1:
MOV R4,#2
DE2:
MOV R5,#250
DE3:
DJNZ R5,DE3
DJNZ R4,DE2
DJNZ R3,DE1
RET
TAB:
DB 30H,08H,36H,1CH ;欢
DB 37H,38H,31H,0E0H
DB 3FH,0E0H,3CH,32H
DB 02H,06H,0EH,0CH
DB 0FCH,18H,0F3H,0F0H
DB 33H,0E0H,30H,30H
DB 3CH,18H,3CH,0CH
DB 00H,04H,00H,00H
DB 06H,02H,66H,06H ; 迎
DB 77H,0FCH,17H,0F8H
DB 00H,0CH,7FH,0E6H
DB 7FH,0E6H,0E0H,46H
DB 0C0H,06H, 7FH,0F6H
DB 7FH,0F6H,60H,46H
DB 7FH,0E6H,7FH,0E6H
DB 00H,06H,00H,00H
;;;;;;;;;;;;;;;;;;;;;;;
;加入这个
TAB_END:
;;;;;;;;;;;;;;;;;;;;;;;;