📄 he24_89.asm
字号:
org 1000h
;===========================================================
;16X16点阵模块实验指导:
;一、接口连接
; 用一40芯扁平电缆把点阵模块接口与MCS-51仿真接口对应连接
;二、工作方式设置
; 1.在连机(PC)状态下,点击设置栏中“仿真模式”项,型号选“Dais-52”、
; 片外RAM选“用户”、片外ROM选“系统”。
; 2.在脱机(闪动的“P”)状态下,直接按“增址”命令键,六位LED显示“P......”,
; 当前工作方式为“内程序/外数据”
;三 文件的装载与运行
; 1.连机(PC)状态下,打开ASM51\HE24_89.ASM 源文件,按Ctrl+F9键迸行编译、
; 连接和装载,再按F9键连续运行
; 2.脱机(闪动的“P”)状态下输入:0→[F1]→4→[F2]→0→[EV/UN]装载实验程序,
; 再输入程序入口地址“0A32”,按[EXEC]键运行“汉字”循环显示程序。
;==========================================================
;===========27个汉字移位循环显示主程序=====================
XB13: MOV R0, #7FH
CLR A
XB16: MOV @R0, A
DJNZ R0, XB16
MOV 81H, #20H
AJMP 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 P0,A
POP DPL
POP DPH
RET
;==========点阵扫描子程序====================
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 ;扫描代码高八位送 P0 口
;=====================
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 ;扫描代码低八位送 P2 口
PUSH DPL
MOV P2,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 P1,A
MOV A,R6
MOV P3,A
MOV R6,#80H ;当前行锁定显示250u秒
DJNZ R6,$
;====================
CLR A ;关闭显示
MOV P1,A ;行高八位清零 P1 口
INC DPTR
MOV P3,A ;行低八位清零 P3 口
POP DPL
POP DPH
;====================
INC 0EH ;列指针加1
AJMP X023 ;继续下1行
;====================
X097: CLR A
mov p1,a
mov p3,a
;====================
X0A0: CLR A ;清扫描个数寄存器
MOV R5, A ;从第一个开始扫描
X0A2: MOV A, R5 ;取当前扫描个数
CLR C
;========= 确定要显示的汉字个数===========; 用户可自定义汉字个数
SUBB A, #19H ;共扫描83个汉字
JNC X0A0 ;扫描个数满83个返回从第一个开始
MOV A, R5
;========= 确定显示为循环方式============;用户可自定义为移位循环方式
MOV 0F0H, #20H ;设定以完整的一个汉字为最小循环单位
MUL AB
MOV DPTR,#STLS ;指向汉字表首址
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:
;-- 文字: 欢 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,80H,00H,80H,0FCH,80H,05H,0FEH,85H,04H,4AH,48H,28H,40H,10H,40H
DB 18H,40H,18H,60H,24H,0A0H,24H,90H,41H,18H,86H,0EH,38H,04H,00H,00H
;-- 文字: 迎 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 40H,00H,21H,80H,36H,7CH,24H,44H,04H,44H,04H,44H,0E4H,44H,24H,44H
DB 25H,44H,26H,54H,24H,48H,20H,40H,20H,40H,50H,00H,8FH,0FEH,00H,00H
;-- 文字: 选 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,40H,22H,40H,12H,40H,13H,0F8H,04H,40H,00H,40H,0F7H,0FCH,11H,20H
DB 11H,20H,12H,24H,12H,24H,14H,1CH,10H,00H,28H,00H,47H,0FEH,00H,00H
;-- 文字: 用 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,1FH,0FCH,10H,84H,10H,84H,10H,84H,1FH,0FCH,10H,84H,10H,84H
DB 10H,84H,1FH,0FCH,10H,84H,10H,84H,20H,84H,20H,84H,40H,94H,80H,88H
;-- 文字: 启 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 01H,00H,00H,0C0H,00H,80H,1FH,0FCH,10H,04H,10H,04H,1FH,0FCH,10H,00H
DB 10H,00H,17H,0FCH,14H,04H,24H,04H,24H,04H,47H,0FCH,84H,04H,00H,00H
;-- 文字: 东 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 02H,00H,02H,00H,7FH,0FCH,04H,00H,08H,80H,08H,80H,10H,80H,1FH,0F8H
DB 00H,80H,08H,0A0H,0CH,90H,18H,88H,10H,8CH,22H,84H,01H,80H,00H,80H
;-- 文字: 达 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,40H,80H,30H,80H,10H,80H,0FH,0FCH,00H,80H,00H,80H,0E0H,80H
DB 21H,40H,21H,20H,22H,18H,24H,0CH,28H,08H,50H,02H,8FH,0FCH,00H,00H
;-- 文字: 爱 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,0F8H,3FH,90H,12H,10H,09H,20H,3FH,0FEH,22H,02H,42H,00H,3FH,0FCH
DB 04H,00H,07H,0F0H,0CH,20H,0BH,40H,10H,0C0H,63H,30H,8CH,0EH,30H,04H
;-- 文字: 思 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,1FH,0F8H,11H,08H,11H,08H,1FH,0F8H,11H,08H,11H,08H,1FH,0F8H
DB 00H,00H,01H,00H,08H,88H,48H,84H,48H,16H,0C8H,12H,07H,0F0H,00H,00H
;-- 文字: 计 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 40H,20H,20H,20H,30H,20H,20H,20H,00H,20H,0F3H,0FEH,10H,20H,10H,20H
DB 10H,20H,10H,20H,10H,20H,12H,20H,14H,20H,18H,20H,10H,20H,00H,20H
;-- 文字: 算 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 40H,40H,7EH,7EH,48H,90H,0BFH,0F8H,20H,10H,3FH,0F0H,20H,10H,3FH,0F0H
DB 20H,10H,3FH,0F0H,08H,40H,0FFH,0FEH,08H,40H,10H,40H,10H,40H,20H,40H
;-- 文字: 机 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 10H,00H,10H,0F8H,10H,88H,0FEH,88H,10H,88H,10H,88H,38H,88H,34H,88H
DB 54H,88H,50H,88H,91H,08H,11H,0AH,12H,0AH,12H,0AH,14H,06H,10H,00H
;-- 文字: 有 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 01H,00H,01H,00H,7FH,0FEH,02H,00H,04H,00H,0FH,0F0H,18H,10H,28H,10H
DB 4FH,0F0H,88H,10H,08H,10H,0FH,0F0H,08H,10H,08H,90H,08H,70H,08H,20H
;-- 文字: 限 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,0FBH,0F8H,92H,08H,93H,0F8H,0A2H,08H,0A2H,08H,93H,0F8H,8AH,80H
DB 8AH,48H,0AAH,50H,92H,20H,82H,20H,82H,10H,82H,8EH,83H,04H,82H,00H
;-- 文字: 公 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,04H,40H,06H,40H,04H,40H,08H,20H,08H,10H,10H,18H,22H,0EH
DB 43H,04H,02H,00H,04H,20H,08H,10H,11H,0F8H,3FH,18H,10H,10H,00H,00H
;-- 文字: 司 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,3FH,0FCH,00H,04H,00H,04H,7FH,0E4H,00H,04H,00H,04H,3FH,0C4H
DB 20H,44H,20H,44H,3FH,0C4H,20H,44H,20H,04H,00H,14H,00H,08H,00H,00H
;-- 文字: D --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,7FH,0E0H,20H,10H,20H,08H,20H,08H,20H,08H,20H,08H,20H,08H
DB 20H,08H,20H,08H,20H,10H,7FH,0E0H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: a --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,0FH,80H,10H,40H,00H,40H,0FH,40H
DB 10H,0C0H,10H,40H,10H,50H,0FH,0A0H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: i --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,01H,00H,01H,00H,00H,00H,01H,00H,01H,00H,01H,00H,01H,00H
DB 01H,00H,01H,00H,01H,00H,01H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: s --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,07H,80H,08H,40H,08H,00H
DB 07H,80H,00H,40H,08H,40H,07H,80H,00H,00H,00H,00H,00H,00H,00H,00H
;-- 文字: 系 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,7CH,3FH,80H,02H,20H,04H,20H,08H,40H,1FH,80H,03H,20H,0CH,10H
DB 3FH,0F8H,10H,8CH,04H,0A0H,08H,90H,10H,88H,20H,84H,42H,84H,01H,00H
;-- 文字: 列 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,04H,0FFH,84H,08H,04H,11H,24H,1FH,0A4H,11H,24H,21H,24H,52H,24H
DB 8AH,24H,04H,24H,04H,24H,08H,04H,10H,04H,20H,14H,0C0H,08H,00H,00H
;-- 文字: 产 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 01H,00H,00H,80H,7FH,0FEH,08H,10H,06H,20H,24H,44H,3FH,0FEH,20H,00H
DB 20H,00H,20H,00H,20H,00H,20H,00H,40H,00H,40H,00H,80H,00H,00H,00H
;-- 文字: 品 --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,0FH,0F0H,08H,10H,08H,10H,08H,10H,0FH,0F0H,08H,10H,00H,00H
DB 7EH,0FCH,42H,84H,42H,84H,42H,84H,42H,84H,7EH,0FCH,42H,84H,00H,00H
;-- 文字: ! --
;-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --
DB 00H,00H,00H,00H,00H,00H,00H,00H,10H,00H,10H,00H,10H,00H,10H,00H
DB 10H,00H,10H,00H,10H,00H,10H,00H,10H,00H,00H,00H,10H,00H,00H,00H
;==================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -