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

📄 he24.asm

📁 51系列单片机的汇编程序包
💻 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 + -