📄 he24.asm
字号:
;===============硬件实验二十四 16×16点阵显示实验=============
;本程序使用扩展锁存器方式,I/O口方式程序详见asm51\he24_89.asm
;注意:Dais-89H+只能使用I/O方式的程序:asm51\he24_89.asm
;===========27个汉字移位循环显示主程序=====================
ORG 0000H
LJMP XB13
;==========点阵扫描子程序====================
X01A: CLR A ;清列值
MOV 0EH, A ;指向零列
X023: MOV A, 0EH ;取列值
CLR C
SUBB A, #10H ;减16(十进制数)
JC X0D2 ;末满16列继续扫描下一列
RET ;本次扫描完毕返回主程序
X0D2: MOV 0F0H, #02H
MOV A, 0EH
MUL AB ;当前列值与“2”进行十进制调正
MOV 82H, A ;调正结果送数据指针DPTR
MOV 83H, 0F0H
LCALL XB1F ;取与当前列对应的扫描代码
MOV 20H, A
;=====================
LCALL XB4E ;扫描代码送高八位锁存器
;=====================
MOV A, 0EH ;取列值
MOV 0F0H, #02H ;当前列值与“2”进行十进制调正
MUL AB
ADD A, #01H ;调正结果加1送数据指针DPTR
MOV R7, A
CLR A
ADDC A, 0F0H
MOV 82H, R7
MOV 83H, A
LCALL XB1F ;取与当前列对应的扫描代码
;====================
PUSH DPH ;扫描代码送低八位锁存器
PUSH DPL
MOV DPTR,#0FFE0H
MOVX @DPTR,A
;====================
MOV A, #01H ;代码扫描从第一行开始
MOV R6, #00H
MOV R0, 0EH ;取与当前代码扫描对应的列值
INC R0 ;列指针加1
SJMP X083
X07E: CLR C ;当前代码扫描对应行的查找
RLC A ;行高八位左移一位
XCH A, R6
RLC A ;行低八位带进位左移一位
XCH A, R6
X083: DJNZ R0, X07E ;不为当前代码扫描对应行返上继续调正
;====================
MOV DPTR,#0FFE2H ;当前行码送高八位锁存器
MOVX @DPTR,A
MOV DPTR,#0FFE1H ;当前行码送低八位锁存器
MOV A,R6
MOVX @DPTR,A
MOV R6,#80H ;当前行锁定显示250u秒
DJNZ R6,$
;====================
CLR A ;关闭显示
MOV DPTR,#0FFE1H
MOVX @DPTR,A ;行高八位锁存器清零
INC DPTR
MOVX @DPTR,A ;行低八位锁存器清零
POP DPL
POP DPH
;====================
INC 0EH ;列指针加1
AJMP X023 ;继续下1行
;====================
X097: CLR A
MOV DPTR,#0FFE1H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
;====================
X0A0: CLR A ;清扫描个数寄存器
MOV R5, A ;从第一个开始扫描
X0A2: MOV A, R5 ;取当前扫描个数
CLR C
;========= 确定要显示的汉字个数===========; 用户可自定义汉字个数
SUBB A, #19H ;共扫描83个汉字
JNC X0A0 ;扫描个数满83个返回从第一个开始
MOV A, R5
;========= 确定显示为循环方式============;用户可自定义为移位循环方式
MOV DPTR,#STLS ;指向汉字表首址
MOV 0F0H, #20H ; 设定以完整的一个汉字为最小循环单位
MUL AB
ADD A, dpl
MOV 0ah, A
MOV A, dph
ADDC A, 0F0H
MOV 09H, A
CLR A
MOV R4, A
X0BD: MOV A, R4
CLR C
SUBB A, #64H ;每个汉字扫描64次
JNC X0CF ;当前汉字扫描次数满64次转
MOV R2,09H
MOV R1, 0AH
ACALL X01A
INC R4 ;扫描次数加1
SJMP X0BD
X0CF: INC R5 ;扫描个数加1指向下一个汉字
SJMP X0A2
;============ 汉字代码表======================================
STLS:
;欢
DB 00H,80H,00H,80H,0FCH,80H,04H,0FCH,45H,04H,46H,48H,28H,40H,28H,40H,10H,40H,28H,40H,24H,0A0H,44H,0A0H,81H,10H,01H,08H,02H,0EH,0CH,04H
;迎
DB 00H,00H,41H,84H,26H,7EH,14H,44H,04H,44H,04H,44H,0F4H,44H,14H,0C4H,15H,44H,16H,54H,14H,48H,10H,40H,10H,40H,28H,46H,47H,0FCH,00H,00H
;选
DB 00H,40H,42H,40H,32H,48H,13H,0FCH,02H,40H,04H,44H,0F7H,0FEH,10H,0A0H,10H,0A0H,10H,0A0H,11H,22H,11H,22H,12H,1EH,2CH,00H,44H,06H,03H,0FCH
;用
DB 00H,08H,3FH,0FCH,21H,08H,21H,08H,21H,08H,3FH,0F8H,21H,08H,21H,08H,21H,08H,3FH,0F8H,21H,08H,21H,08H,21H,08H,41H,08H,41H,28H,80H,10H
;启
DB 01H,00H,00H,84H,1FH,0FEH,10H,04H,10H,04H,10H,04H,1FH,0FCH,10H,00H,10H,04H,1FH,0FEH,18H,04H,28H,04H,28H,04H,48H,04H,8FH,0FCH,08H,04H
;东
DB 02H,00H,02H,00H,02H,04H,0FFH,0FEH,04H,00H,09H,00H,09H,00H,11H,10H,3FH,0F8H,01H,00H,09H,40H,09H,20H,11H,10H,21H,18H,45H,08H,02H,00H
;达
DB 00H,80H,40H,80H,20H,80H,20H,80H,00H,88H,0FH,0FCH,0E0H,80H,21H,00H,21H,40H,22H,20H,22H,10H,24H,18H,28H,08H,50H,06H,8FH,0FCH,00H,00H
;爱
DB 00H,78H,3FH,80H,11H,10H,09H,20H,7FH,0FEH,42H,02H,82H,04H,7FH,0F8H,04H,00H,07H,0F0H,0AH,20H,09H,40H,10H,80H,11H,60H,22H,1CH,0CH,08H
;思
DB 00H,08H,3FH,0FCH,21H,08H,21H,08H,21H,08H,3FH,0F8H,21H,08H,21H,08H,21H,08H,3FH,0F8H,20H,08H,02H,00H,51H,88H,50H,96H,90H,12H,0FH,0F0H
;计
DB 00H,40H,20H,40H,10H,40H,10H,40H,00H,40H,00H,44H,0F7H,0FEH,10H,40H,10H,40H,10H,40H,10H,40H,12H,40H,14H,40H,18H,40H,10H,40H,00H,40H
;算
DB 20H,80H,3EH,0FCH,49H,20H,9FH,0F0H,10H,10H,1FH,0F0H,10H,10H,1FH,0F0H,10H,10H,1FH,0F0H,08H,24H,0FFH,0FEH,08H,20H,08H,20H,10H,20H,20H,20H
;机
DB 10H,00H,10H,10H,11H,0F8H,11H,10H,0FDH,10H,11H,10H,31H,10H,39H,10H,55H,10H,51H,10H,91H,10H,11H,10H,11H,12H,12H,12H,14H,0EH,18H,00H
;有
DB 02H,00H,02H,04H,0FFH,0FEH,04H,00H,04H,10H,0FH,0F8H,08H,10H,18H,10H,2FH,0F0H,48H,10H,88H,10H,0FH,0F0H,08H,10H,08H,10H,08H,50H,08H,20H
;限
DB 00H,08H,7DH,0FCH,45H,08H,49H,08H,49H,0F8H,51H,08H,49H,08H,49H,0F8H,45H,04H,45H,88H,45H,50H,69H,20H,51H,10H,41H,4EH,41H,84H,41H,00H
;公
DB 00H,00H,00H,80H,04H,80H,04H,40H,08H,40H,08H,20H,11H,10H,21H,0EH,0C2H,04H,02H,00H,04H,00H,08H,40H,10H,20H,1FH,0F0H,00H,10H,00H,00H
;司
DB 00H,08H,3FH,0FCH,00H,08H,00H,48H,0FFH,0E8H,00H,08H,00H,88H,3FH,0C8H,20H,88H,20H,88H,20H,88H,20H,88H,3FH,88H,20H,88H,00H,28H,00H,10H
;D
DB 00H,00H,7FH,0E0H,20H,10H,20H,08H,20H,08H,20H,08H,20H,08H,20H,08H,20H,08H,20H,08H,20H,10H,7FH,0E0H,00H,00H,00H,00H,00H,00H,00H,00H
;a
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0FH,80H,10H,40H,00H,40H,0FH,0C0H,10H,40H,10H,50H,0FH,0A0H,00H,00H,00H,00H,00H,00H,00H,00H
;i
DB 00H,00H,01H,00H,01H,00H,00H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;s
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,07H,80H,08H,40H,08H,00H,07H,80H,00H,40H,08H,40H,07H,80H,00H,00H,00H,00H,00H,00H,00H,00H
;系
DB 00H,38H,7FH,0C0H,04H,00H,04H,10H,08H,20H,3FH,0C0H,01H,00H,02H,20H,04H,10H,3FH,0F8H,01H,08H,09H,20H,09H,10H,11H,08H,25H,08H,02H,00H
;列
DB 01H,04H,7FH,84H,10H,24H,10H,24H,1FH,24H,21H,24H,21H,24H,52H,24H,8AH,24H,04H,24H,04H,24H,08H,24H,10H,04H,20H,04H,40H,14H,00H,08H
;产
DB 02H,00H,01H,00H,01H,08H,7FH,0FCH,08H,10H,04H,20H,04H,48H,1FH,0FCH,10H,00H,10H,00H,10H,00H,10H,00H,20H,00H,20H,00H,40H,00H,80H,00H
;品
DB 00H,10H,1FH,0F8H,10H,10H,10H,10H,10H,10H,1FH,0F0H,10H,10H,02H,04H,7FH,0FEH,42H,84H,42H,84H,42H,84H,42H,84H,42H,84H,7EH,0FCH,42H,84H
;。
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,18H,00H,24H,00H,24H,00H,18H,00H,00H,00H,00H,00H
;======================================================================
XB13: MOV R0, #7FH
CLR A
XB16: MOV @R0, A
DJNZ R0, XB16
MOV 81H, #20H
JMP X097
;============查找与当前列对应的汉字代码子程序====================
XB1F: MOV A, 82H ;本次扫描首址与当前列值相加
ADD A, R1 ;低八位相加
MOV 82H, A ;送DPL
MOV A, 83H ;高八位相加
ADDC A, R2 ;再加低八位进位位CY
MOV 83H, A ;送DPH
CLR A
MOVC A, @A+DPTR ;取汉字代码
RET ; 返回
;=====================
XB4E: MOV C, 07H
MOV ACC.0, C
MOV C, 06H
MOV ACC.1, C
MOV C, 05H
MOV ACC.2, C
MOV C, 04H
MOV ACC.3, C
MOV C, 03H
MOV ACC.4, C
MOV C, 02H
MOV ACC.5, C
MOV C, 01H
MOV ACC.6, C
MOV C, 00H
MOV ACC.7, C
;=================
PUSH DPH
PUSH DPL
MOV DPTR,#0FFE3H
MOVX @DPTR,A
POP DPL
POP DPH
RET
;-------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -