*********LED 点阵显示示例程序***********************
CSLED EQU 8000H
CSc1 EQU CSLED 列1~8 273
CSc2 EQU CSLED+1H 列9~16 273
CSr1 EQU CSLED+2H 行1~8 374
CSr2 EQU CSLED+3H 行9~16 374
ORG 0000H
MOV SP,#60H
INIT: MOV A,#0H 关闭LED列显示
MOV DPTR,#CSc1
MOVX @DPTR,A
MOV DPTR,#CSc2
MOVX @DPTR,A
MOV A,#0FFH 关闭LED行显示
MOV DPTR,#CSr1
MOVX @DPTR,A
MOV DPTR,#CSr2
MOVX @DPTR,A
D: MOV R5,#00H 设定汉字表格初始值
MOV R4,#01H 设定列扫描初始值,从第一列开始
DISP:
MOV A,R5
RL ACC
MOV DPTR,#HZKE 此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC 代码取反,决定显示的阴阳
MOV DPTR,#CSr1
MOVX @DPTR,A
MOV A,R5
RL ACC
INC ACC
MOV DPTR,#HZKE 此处设定所要显示的悄散字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr2
MOVX @DPTR,A
MOV DPTR,#CSc1
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H 清上次显示值
MOVX @DPTR,A 关闭行、列
MOV A,#0FFH
MOV DPTR,#CSR1
MOVX @DPTR,A
CJNE R5,#8H,DISP判是否显示到第八列
MOV R5,#08H 设定汉字表格初始值
MOV R4,#01H 设定列扫描初始值,从第九列开始
DISP2:
MOV A,R5
RL ACC
MOV DPTR,#HZKE 此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr1
MOVX @DPTR,A
MOV A,R5
RL ACC
INC ACC
MOV DPTR,#HZKE 此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr2
MOVX @DPTR,A
MOV DPTR,#CSc2
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H 清上次显示值
MOVX @DPTR,A 关闭行、列
MOV A,#0FFH
MOV DPTR,#CSR2
MOVX @DPTR,A
CJNE R5,#10H,DISP2 判是否扫描到则宽第十六列
SJMP D
******** 延时子程序,协调字符显示速度 *************
DELAY: MOV R7,#1H
DL1: MOV R6,#00H
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
********字符点阵字库 ***************
HZ16 字符编码排列
数 D7 R1 (0 2 --28 30)
| |
| |
据 D0 R8 (1 3 --29 31)
运行zimo.exe程序,在参数设置里选择“纵向取模启盯氏”,16*16点阵,宋体、小四号(12)
取模方式为A51格式
取完模之后,将16~32字节间隔插入1~15字节,详见下面示例字模。
*****************************************************
ZIMO程序生成的字模
显示“爱迪克”
HZAI:
DB 00H,02H,4DH,69H,59H,49H, 6FH,59H, 0C9H,89H,99H,0E9H,89H,09H,0CH,00H
DB 02H,04H,05H,09H,32H,0E2H,54H,54H, 48H, 58H,64H,44H, 02H,03H,02H,00H
HZDI:
DB 02H,82H,73H, 20H,00H,0FH, 09H,09H, 09H,0FFH,09H,09H,09H,0FH,00H,00H
DB 02H,04H,0F8H,04H,02H,0FAH,12H,12H, 12H,0F2H,12H,12H,12H,0FAH,02H,00H
HZKE:
DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH ;片
DB 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0FFH
******************************************************
转换后的字模
HZAI:
DB 00H,02H,02H,04H,4DH,05H,69H,09H,59H,32H,49H,0E2H,6FH,54H,59H,54H
DB 0C9H,48H,89H,58H,99H,64H,0E9H,44H,89H,02H,09H,03H,0CH,02H,00H,00H
HZDI:DB 02H,02H,82H,04H,73H,0F8H,20H,04H,00H,02H,0FH,0FAH,09H,12H,09H,12H
DB 09H,12H,0FFH,0F2H,09H,12H,09H,12H,09H,12H,0FH,0FAH,00H,02H,00H,00H
HZKE:DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH 片
DB 0EFH,0EFH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,0BFH,0EFH,07FH,0FFH,0DFH,0EFH,0DFH,0EFH
****************************************************
END
这是程序请求帮忙修改
这不仅仅是简单的移位,我也做过,你生成字型码的时候是横着扫描吗?如果是,移位也会横向,如果不是,移位的话会乱码。存放字型码的最好是Uchar code,这样占用数据空间会减小。你移位的老中时候用中间变量和指针进滑含扰行 *** 作。还有,你扫信旦码方式,我做的是1/4行扫。你的如果是逐行扫描就不太一样 了。
不知什么字,上一个6
个字的。
16X16LED点阵流动显示
逐列、逆向(低位开始)扫描
ORG
0000H
AJMP
MAIN
ORG
0030H
MAIN:
MOV
DPTR,#TAB
字码表初址赋值哪蠢
MOV
R1,#00H
列控制码
MOV
R4,#96
移动"
"及"机电工程系"6个字符,共96列
CM:
MOV
R5,#5
每屏反复显示5次
MOV
R3,#16
列桐渗数
C1:
MOV
R2,#0
取码指针
C16:
MOV
P0,#00H
MOV
P2,#00H
关显示
CLR
P3.0
MOV
A,R2
MOVC
A,@A+DPTR
取当前列显示字码的第一个字节
MOV
P0,A
送1~8行控制口
INC
R2
MOV
A,R2
MOVC
A,@A+DPTR
取当前列的显示字码的第二个字节
MOV
P2,A
送9~15行控制口
INC
R2
MOV
P1,R1
送列控制码
INC
R1
ACALL
D1MS
显示2MS
ACALL
D1MS
DJNZ
R3,C16
一屏16列是否显示完
MOV
R3,#16
DJNZ
R5,C1
未显示5次,继续
INC
DPTR
一屏反复显示5次完,字码表初值加2
INC
DPTR
DJNZ
R4,CM
96列未移动完,继续
AJMP
MAIN
96列移动完,返回,重新从"
"开始显示
D1MS:
MOV
R6,#2
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,$-4
RET
TAB:
(0)
(1)
机(2)
电(3)
工(4)
程(5)
系(6)
DB
000H,
000H,
000H,
000H,
000H,
000H,
000H,
000H
DB
000H,
000H,
000H,
000H,
000H,
000H,
000H,
000H"
",0
DB
000H,
000H,
000H,
000H,
000H,
000H,
000H,
000H
DB
000H,
000H,
000H,
000H,
000H,
000H,
000H,
000H"局缓脊
",1
DB
000H,
008H,
040H,
00CH,
040H,
006H,
0FEH,
07FH
DB
0FEH,
07FH,
020H,
023H,
020H,
032H,
000H,
01CH
DB
0E0H,
00FH,
0F0H,
003H,
0D0H,
00FH,
0F0H,
01FH
DB
030H,
010H,
000H,
010H,
000H,
01CH,
000H,
01CH"机",2
DB
000H,
000H,
000H,
000H,
0E0H,
001H,
0E0H,
007H
DB
020H,
007H,
020H,
005H,
0FEH,
03FH,
0FEH,
07FH
DB
090H,
042H,
010H,
042H,
0F0H,
043H,
0F0H,
041H
DB
000H,
040H,
000H,
078H,
000H,
038H,
000H,
000H"电",3
DB
000H,
000H,
000H,
010H,
000H,
010H,
000H,
010H
DB
020H,
010H,
020H,
010H,
020H,
010H,
0E0H,
01FH
DB
0F0H,
00FH,
010H,
008H,
010H,
008H,
010H,
008H
DB
000H,
008H,
000H,
008H,
000H,
008H,
000H,
000H"工",4
DB
080H,
010H,
080H,
018H,
090H,
00CH,
090H,
006H
DB
0F8H,
0FFH,
0FCH,
0FFH,
04CH,
026H,
040H,
024H
DB
070H,
025H,
078H,
025H,
048H,
03FH,
0E8H,
03FH
DB
0B8H,
012H,
0B8H,
012H,
000H,
010H,
000H,
010H"程",5
DB
000H,
000H,
000H,
000H,
000H,
040H,
008H,
074H
DB
048H,
034H,
068H,
006H,
078H,
047H,
0D8H,
0FDH
DB
0CCH,
0FEH,
066H,
002H,
026H,
00BH,
000H,
01BH
DB
000H,
032H,
000H,
020H,
000H,
000H,
000H,
000H"系",6
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)