求助:这是个显示单个字的16*16LED显示屏的程序,怎么让字移动?

来源:百度知道 编辑:UC知道 时间:2024/05/06 22:23:16
START: MOV 20H,#00H
MOV A,#0FFH
MOV P1,A
MOV P3,A
MOV SCON,#0
MOV R0,#0
LL1: MOV R6,#8;
MOV R2,#0
MOV DPTR,#TAB
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
LJMP LL1
Q2: MOV A,#0 ;第一个字
MOVC A,@A+DPTR;
MOV SBUF,A;
JNB TI,$
CLR TI
MOV A,#1
MOVC A,@A+DPTR;

由于“欢迎”两字是16*16 的点阵组成的,可以想象一下这两个字的移动其实就是点阵的平移,说白了在程序中可以使用左移或者右移来实现,其实是一个字一个字的移动,而且是每个字也是一行一行的移动,由于我们的眼睛有个迟钝的反应过程,所以我们根本看不出来它是一个一个移动的,给我们的效果是很平滑的移动,而且要控制好每次移动的时间差,如果很短,那么你看到的文字就是一闪而过,一般移动一次的时间差都应该在眼睛的迟钝时间的范围内,大概0.5S吧。
这是思路,具体自己去写吧,如果点阵足够多,分辨率足够高可以使用各行扫描,电视就是隔行扫描的。

取段码表数据每次进行左移计算,循环