⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1616.asm

📁 51系列单片机的汇编程序包
💻 ASM
字号:
;===============16×16点阵显示实验================

HROW    EQU 8a03h;       ;列代码高段(字形)高八位接口地址 273(4)
LROW    EQU 8a00h;       ;列代码低段(字形)低八位接口地址 273(1)
HLINE   EQU 8a02h;       ;行扫描高段(字位)高八位接口地址 273(3)
LLINE   EQU 8a01h;       ;行扫描低段(字位)低八位接口地址 273(2)

        ORG 0

        LJMP XB13

;点阵扫描子程序
X01A:   CLR A           ;清列值
        MOV 0EH,A       ;指向零列
X023:   MOV A,0EH       ;取列值
        CLR C
        SUBB A,#16      ;减16(十进制数)
        JC X0D2         ;末满16列继续扫描下一列
        RET             ;本次扫描完毕返回主程序

X0D2:   MOV 0F0H,#2
        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,#2     ;当前列值与“2”进行十进制调正
        MUL AB
        ADD A,#1        ;调正结果加1送数据指针DPTR
        MOV R7,A
        CLR A
        ADDC A,0F0H
        MOV 82H,R7
        MOV 83H,A
        LCALL  XB1F      ;取与当前列对应的扫描代码

        PUSH DPH         ;扫描代码送低八位锁存器
        PUSH DPL
        MOV DPTR,#LROW
        MOVX @DPTR,A

        MOV A,#1        ;代码扫描从第一行开始
        MOV R6,#0
        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,#HLINE ;当前行码送高八位锁存器
        MOVX @DPTR,A
        MOV DPTR,#LLINE ;当前行码送低八位锁存器
        MOV A,R6
        MOVX @DPTR,A
        MOV R6,#80H     ;当前行锁定显示250u秒
        DJNZ R6,$

        CLR A           ;关闭显示
        MOV DPTR,#LLINE
        MOVX @DPTR,A    ;行高八位锁存器清零
        INC DPTR
        MOVX @DPTR,A    ;行低八位锁存器清零
        POP DPL
        POP DPH

        INC 0EH         ;列指针加1
        AJMP X023       ;继续下1行

X097:   CLR A
        MOV DPTR,#LLINE
        MOVX @DPTR,A
        INC DPTR
        MOVX @DPTR,A

X0A0:   CLR A           ;清扫描个数寄存器
        MOV R5,A        ;从第一个开始扫描
X0A2:   MOV A,R5        ;取当前扫描个数
        CLR C

;确定要显示的汉字个数
        SUBB A,#25      ;共扫描25个汉字
        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       ;欢
        db 45H,04H,46H,48H,28H,40H,28H,40H
        db 10H,40H,28H,40H,24H,0A0H,44H,0A0H
        db 81H,10H,01H,08H,02H,0EH,0CH,04H

        db 00H,00H,41H,84H,26H,7EH,14H,44H         ;迎
        db 04H,44H,04H,44H,0F4H,44H,14H,0C4H
        db 15H,44H,16H,54H,14H,48H,10H,40H
        db 10H,40H,28H,46H,47H,0FCH,00H,00H

        db 00H,40H,42H,40H,32H,48H,13H,0FCH        ;选
        db 02H,40H,04H,44H,0F7H,0FEH,10H,0A0H
        db 10H,0A0H,10H,0A0H,11H,22H,11H,22H
        db 12H,1EH,2CH,00H,44H,06H,03H,0FCH

        db 00H,08H,3FH,0FCH,21H,08H,21H,08H        ;用
        db 21H,08H,3FH,0F8H,21H,08H,21H,08H
        db 21H,08H,3FH,0F8H,21H,08H,21H,08H
        db 21H,08H,41H,08H,41H,28H,80H,10H

        db 01H,00H,00H,84H,1FH,0FEH,10H,04H        ;启
        db 10H,04H,10H,04H,1FH,0FCH,10H,00H
        db 10H,04H,1FH,0FEH,18H,04H,28H,04H
        db 28H,04H,48H,04H,8FH,0FCH,08H,04H

        db 02H,00H,02H,00H,02H,04H,0FFH,0FEH       ;东
        db 04H,00H,09H,00H,09H,00H,11H,10H
        db 3FH,0F8H,01H,00H,09H,40H,09H,20H
        db 11H,10H,21H,18H,45H,08H,02H,00H

        db 00H,80H,40H,80H,20H,80H,20H,80H         ;达
        db 00H,88H,0FH,0FCH,0E0H,80H,21H,00H
        db 21H,40H,22H,20H,22H,10H,24H,18H
        db 28H,08H,50H,06H,8FH,0FCH,00H,00H

        db 00H,78H,3FH,80H,11H,10H,09H,20H         ;爱
        db 7FH,0FEH,42H,02H,82H,04H,7FH,0F8H
        db 04H,00H,07H,0F0H,0AH,20H,09H,40H
        db 10H,80H,11H,60H,22H,1CH,0CH,08H

        db 00H,08H,3FH,0FCH,21H,08H,21H,08H        ;思
        db 21H,08H,3FH,0F8H,21H,08H,21H,08H
        db 21H,08H,3FH,0F8H,20H,08H,02H,00H
        db 51H,88H,50H,96H,90H,12H,0FH,0F0H

        db 00H,40H,20H,40H,10H,40H,10H,40H         ;计
        db 00H,40H,00H,44H,0F7H,0FEH,10H,40H
        db 10H,40H,10H,40H,10H,40H,12H,40H
        db 14H,40H,18H,40H,10H,40H,00H,40H

        db 20H,80H,3EH,0FCH,49H,20H,9FH,0F0H       ;算
        db 10H,10H,1FH,0F0H,10H,10H,1FH,0F0H
        db 10H,10H,1FH,0F0H,08H,24H,0FFH,0FEH
        db 08H,20H,08H,20H,10H,20H,20H,20H

        db 10H,00H,10H,10H,11H,0F8H,11H,10H        ;机
        db 0FDH,10H,11H,10H,31H,10H,39H,10H
        db 55H,10H,51H,10H,91H,10H,11H,10H
        db 11H,12H,12H,12H,14H,0EH,18H,00H

        db 02H,00H,02H,04H,0FFH,0FEH,04H,00H       ;有
        db 04H,10H,0FH,0F8H,08H,10H,18H,10H
        db 2FH,0F0H,48H,10H,88H,10H,0FH,0F0H
        db 08H,10H,08H,10H,08H,50H,08H,20H

        db 00H,08H,7DH,0FCH,45H,08H,49H,08H        ;限
        db 49H,0F8H,51H,08H,49H,08H,49H,0F8H
        db 45H,04H,45H,88H,45H,50H,69H,20H
        db 51H,10H,41H,4EH,41H,84H,41H,00H

        db 00H,00H,00H,80H,04H,80H,04H,40H         ;公
        db 08H,40H,08H,20H,11H,10H,21H,0EH
        db 0C2H,04H,02H,00H,04H,00H,08H,40H
        db 10H,20H,1FH,0F0H,00H,10H,00H,00H

        db 00H,08H,3FH,0FCH,00H,08H,00H,48H        ;司
        db 0FFH,0E8H,00H,08H,00H,88H,3FH,0C8H
        db 20H,88H,20H,88H,20H,88H,20H,88H
        db 3FH,88H,20H,88H,00H,28H,00H,10H

        db 00H,00H,7FH,0E0H,20H,10H,20H,08H        ;D
        db 20H,08H,20H,08H,20H,08H,20H,08H
        db 20H,08H,20H,08H,20H,10H,7FH,0E0H
        db 00H,00H,00H,00H,00H,00H,00H,00H

        db 00H,00H,00H,00H,00H,00H,00H,00H         ;a
        db 00H,00H,0FH,80H,10H,40H,00H,40H
        db 0FH,0C0H,10H,40H,10H,50H,0FH,0A0H
        db 00H,00H,00H,00H,00H,00H,00H,00H

        db 00H,00H,01H,00H,01H,00H,00H,00H         ;i
        db 01H,00H,01H,00H,01H,00H,01H,00H
        db 01H,00H,01H,00H,01H,00H,01H,00H
        db 00H,00H,00H,00H,00H,00H,00H,00H

        db 00H,00H,00H,00H,00H,00H,00H,00H         ;s
        db 00H,00H,07H,80H,08H,40H,08H,00H
        db 07H,80H,00H,40H,08H,40H,07H,80H
        db 00H,00H,00H,00H,00H,00H,00H,00H

        db 00H,38H,7FH,0C0H,04H,00H,04H,10H        ;系
        db 08H,20H,3FH,0C0H,01H,00H,02H,20H
        db 04H,10H,3FH,0F8H,01H,08H,09H,20H
        db 09H,10H,11H,08H,25H,08H,02H,00H

        db 01H,04H,7FH,84H,10H,24H,10H,24H         ;列
        db 1FH,24H,21H,24H,21H,24H,52H,24H
        db 8AH,24H,04H,24H,04H,24H,08H,24H
        db 10H,04H,20H,04H,40H,14H,00H,08H

        db 02H,00H,01H,00H,01H,08H,7FH,0FCH        ;产
        db 08H,10H,04H,20H,04H,48H,1FH,0FCH
        db 10H,00H,10H,00H,10H,00H,10H,00H
        db 20H,00H,20H,00H,40H,00H,80H,00H

        db 00H,10H,1FH,0F8H,10H,10H,10H,10H        ;品
        db 10H,10H,1FH,0F0H,10H,10H,02H,04H
        db 7FH,0FEH,42H,84H,42H,84H,42H,84H
        db 42H,84H,42H,84H,7EH,0FCH,42H,84H

        db 00H,00H,00H,00H,00H,00H,00H,00H         ;!
        db 10H,00H,10H,00H,10H,00H,10H,00H
        db 10H,00H,10H,00H,10H,00H,10H,00H
        db 10H,00H,00H,00H,10H,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,#HROW
        MOVX @DPTR,A
        POP DPL
        POP DPH
        RET

        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -