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

📄 中文显示.asm

📁 中文广告牌,这是我上大学时的毕业论文
💻 ASM
字号:
;*******************************************************************
;*                      中文显示广告牌程序                         *
;*                           amygse                                *
;*                          2004.6.5                               *
;*******************************************************************
;21H~26H--显示内容存储单元
;B  -----每次移入内存单元的数据要左移的次数
;27H------寻址偏址
;28H-----每次移入内存单元的数据要左移的次数临时值
;29H-----扫描还剩几行寄存
;2AH-----左移速度
;2CH-----应该选通那一行寄存
;30H,31H-----延时同步修正寄存器
;堆栈入口40H
RXD1   EQU    P1.4   ;红色串行内容发送
TXD1   EQU    P1.5  ;红色串行CP端
RXD2   EQU    P1.6   ;绿色串行内容发送
TXD2   EQU    P1.7  ;绿色串行CP端
EN1    EQU    P3.7   ;EN1为高电平,关闭显示端口;EN1为低电平时,开放显示端口
;*********中断入口程序****************
ORG     0000H
LJMP    MIAN
ORG     0003H
RETI
ORG     000BH
RETI
ORG     0013H
RETI
ORG     001BH
RETI
ORG     0023H
RETI
;***************主程序****************
MIAN:    MOV  20H,#01H             ;设开始为模式1
STRAT:   SETB   EN1                ;关显示端口
         MOV    SP,#40H            ;堆栈首址
         MOV    R0,#21H            ;初使化寄存显示单元
         MOV    R1,#12H            ;21H~2DH单元清零
         MOV    A,#00H
ST:      MOV    @R0,A
         INC    R0
         DJNZ   R1,ST
         LCALL   STR
         MOV   A,20H
         RL  A
         MOV  20H,A
         JB  ACC.3,  MIAN     ;模式的选择,有5种,红,绿,橙,绿+红,红+绿,现选前4种。
         LJMP  STRAT          ;循环显示内容
;*****左移显示汉字程序************
STR:     MOV    DPTR,#TAB     ;赋查表初址
         MOV    2DH,#2
HH:      MOV    2EH,#32;共有多少个半角字符,一个汉字等于两个字符,个数值为实际字符个数减5
HHH:     LCALL  PLAY        ;运行PLAY一次后,内容左移显示八次,寻址偏址不变.
         CLR    C
         MOV    A,DPL
         ADD    A,#10H
         MOV    DPL,A
         MOV    A,DPH
         ADDC   A,#00H
         MOV    DPH,A
         DJNZ   2EH,HHH
         DJNZ   2DH,HH
         RET
;*********左移一个字符程序**************
PLAY:    MOV   B, #01H      ;每次移入内存单元的数据要左移次数次值
NLINE:   MOV   2AH,#02h    ;左移速度
GG:      LCALL LINE16       ;扫描显示1帧
         DJNZ  2AH,GG
         INC   B
         MOV   A,#09H
         CJNE  A,B,NLINE     ;如果B中的数超过8就完成1个字符的显示,否则继续循环.
         RET
;*********扫描显示1帧行子程序******************
LINE16:  MOV  29H,#10H      ;扫描的行数
FF:      LCALL  LINE1       ;扫描显示1行子程序
         DJNZ   29H,FF
         MOV    A,27H
         SUBB   A,#10H
         MOV    27H,A
         RET
;*********扫描显示一行子程序******************
LINE1:   MOV  28H,B         ;显示内容要左移几次数再显示的赋值给28H单元
         LCALL  SEND        ;发送串行口子程序
         LCALL  XH          ;选通行子程序
         CLR  EN1           ;开显示端口,显示延时开始
         LCALL  DL800US     ;延时显示1ms
         LCALL  MSTR        ;将显示内容移入内存单元21H~26H ,跳出后27H加1
EE:      LCALL  ZY
         DJNZ   28H,EE
         LCALL  ZYXZ        ;左移速度同步修正
         SETB  EN1          ;关显示端口,显示延时结束
         RET
;***********左移速度同步修正子程序********--
ZYXZ:    MOV   30H,B
         MOV   A,#09H
         SUBB  A,30H
         MOV  31H,A
AA:      LCALL  DL22US
         DJNZ  31H ,AA
         RET
;*******显示内容移入内存单元子程序*********
MSTR:    MOV    R0,#21H
         MOV    R4,#06H
         MOV  A, 27H
BB:      MOVC   A, @A+DPTR
         MOV    @R0,A
         MOV    A,27H
         ADD    A,#10H
         MOV    27H,A
         INC    R0
         DJNZ   R4,BB
         MOV    A,27H
         SUBB   A,#5FH
         MOV    27H,A
         RET
;**********左移一位子程序**************
;21H~26H存入显示内容,
;R0为显示未址,R2为移出高位个数
ZY:      MOV  R0,  #26H    ;显示单元未址
         MOV  R2,  #6H     ;移出高位个数
         CLR  C
CC:      MOV  A,   @R0
         RLC  A            ;将后一字节的最高位移到C里,再移到前一字节的最低位
         MOV  @R0, A
         DEC  R0
         DJNZ R2,  CC
         CLR  C
         RET

;**********发送数据到串口子程序***************

SEND:    MOV  R0,#25H
         MOV  R5,#5H
LOOP:    MOV  R2,#08H
         MOV  A,@R0
         LCALL  DD
         DEC  R0
         DJNZ R5,LOOP
         CLR  C
         RET
DD:      JB 00H,DD1
         JB 01H,DD2
         JB 02H,DD3
         JB 03H,DD4
         JB 04H,DD5
         RET
DD1:     CLR  TXD1
         SETB TXD2
         RRC  A
         MOV  RXD1,C
         SETB TXD1
         SETB TXD2
         DJNZ R2,DD1
         RET
DD2:     CLR  TXD2
         SETB  TXD1
         RRC  A
         MOV  RXD2,C
         SETB TXD2
         SETB TXD1
         DJNZ R2,DD2
         RET
DD3:     CLR  TXD1
         CLR  TXD2
         RRC  A
         MOV  RXD1,C
         MOV  RXD2,C
         SETB TXD1
         SETB TXD2
         DJNZ R2,DD3
         RET
DD4:     CLR  TXD1
         CLR  TXD2
         RRC  A
         MOV  RXD1,C
         CPL  C
         MOV  RXD2,C
         SETB TXD1
         SETB TXD2
         DJNZ R2,DD4
         RET
DD5:     CLR  TXD1
         CLR  TXD2
         RRC  A
         MOV  RXD2,C
         CPL  C
         MOV  RXD1,C
         SETB TXD1
         SETB TXD2
         DJNZ R2,DD5
         RET
;*******选通行子程序*****************
XH:      MOV   2CH,29H    ;29H存运行剩几行数值
         MOV   A,#0fH
         SUBB  A,2CH      ;16列减剩余行数得现在应该扫描行
         MOV   P1,A       ;送P1口
         RET
;******800US延时子程序*****************
DL800US: MOV   R6,#1dH
DL1:     MOV   R5,#18H
DL2:     DJNZ  R5,DL2
         DJNZ  R6,DL1
         RET
;******22US延时子程序*****************
DL22US:  MOV   R6,#19
DL3:     DJNZ  R6,DL3
         NOP
         RET
 tab:
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB    00H,00H,01H,01H,03H,0FH,30H,60H,0F3H,0EFH,0F8H,73H,04H,05H,04H,03H         ;“车”图形
DB    3FH,0CBH,80H,18H,18H,0FFH,00H,00H,0FEH,0FFH,3FH,9FH,4FH,40H,40H,80H
DB    0FFH,0E7H,00H,80H,40H,0F8H,0C0H,0C3H,0C0H,0FFH,0E0H,0CEH,91H,15H,11H,0EH
DB    0C0H,0E0H,30H,10H,18H,04H,26H,0E6H,86H,0EEH,0E6H,64H,38H,00H,00H,00H

;--  文字:  欢  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,0FCH,005H,085H,04AH,028H,010H,018H,018H,024H,024H,041H,086H,038H,000H,
DB  080H,080H,080H,0FEH,004H,048H,040H,040H,040H,060H,0A0H,090H,018H,00EH,004H,000H,

;--  文字:  迎  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  040H,021H,036H,024H,004H,004H,0E4H,024H,025H,026H,024H,020H,020H,050H,08FH,000H,
DB  000H,080H,07CH,044H,044H,044H,044H,044H,044H,054H,048H,040H,040H,000H,0FEH,000H,

;--  文字:  光  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,021H,019H,00DH,009H,001H,07FH,004H,004H,004H,004H,008H,008H,010H,020H,040H,
DB  000H,010H,018H,010H,020H,004H,0FEH,040H,040H,040H,040H,042H,042H,042H,03EH,000H,

;--  文字:  临  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,009H,009H,049H,04AH,04AH,04CH,049H,049H,049H,049H,049H,049H,009H,009H,000H,
DB  000H,080H,000H,0FEH,020H,010H,010H,004H,0FEH,024H,024H,024H,024H,0FCH,004H,000H,

;--  文字:  [  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,01EH,010H,010H,010H,010H,010H,010H,010H,010H,010H,010H,010H,010H,01EH,000H,
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,

;--  文字:  信  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  008H,00CH,018H,017H,030H,033H,050H,093H,010H,013H,012H,012H,012H,013H,012H,000H,
DB  080H,060H,040H,0FEH,000H,0F8H,000H,0F8H,000H,0F8H,008H,008H,008H,0F8H,008H,000H,

;--  文字:  息  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,002H,01FH,010H,01FH,010H,01FH,010H,01FH,000H,009H,028H,028H,068H,007H,000H,
DB  000H,000H,0F0H,010H,0F0H,010H,0F0H,010H,0F0H,000H,000H,084H,092H,012H,0F0H,000H,

;--  文字:  工  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,03FH,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,0FFH,000H,000H,
DB  000H,0FCH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FEH,000H,000H,

;--  文字:  程  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00DH,071H,011H,011H,0FDH,011H,030H,03BH,054H,050H,093H,010H,010H,010H,017H,010H,
DB  0F8H,008H,008H,008H,008H,0F8H,000H,0FCH,040H,040H,0FCH,040H,040H,040H,0FEH,000H,

;--  文字:  学  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,010H,00CH,008H,07FH,040H,08FH,000H,000H,07FH,000H,000H,000H,000H,002H,001H,
DB  008H,08CH,0C8H,090H,0FEH,004H,0E8H,040H,080H,0FEH,080H,080H,080H,080H,080H,000H,

;--  文字:  院  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,0F8H,08FH,094H,0A0H,0A3H,090H,088H,08FH,0A9H,091H,081H,082H,082H,084H,088H,
DB  080H,040H,0FEH,004H,000H,0F8H,000H,000H,0FEH,020H,020H,020H,022H,022H,022H,01EH,

;--  文字:  ]  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,078H,008H,008H,008H,008H,008H,008H,008H,008H,008H,008H,008H,008H,078H,000H,
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,

;--  文字:  第  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  010H,01FH,028H,045H,09FH,000H,01FH,010H,010H,01FH,001H,002H,00CH,070H,000H,000H,
DB  040H,07EH,0A0H,010H,0F8H,088H,0F8H,080H,080H,0FCH,084H,084H,094H,088H,080H,080H,

;--  文字:  三  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,07FH,000H,000H,000H,000H,03FH,000H,000H,000H,000H,000H,07FH,000H,000H,
DB  000H,000H,0FCH,000H,000H,000H,000H,0F8H,000H,000H,000H,000H,000H,0FEH,000H,000H,

;--  文字:  届  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,03FH,020H,020H,03FH,020H,020H,02FH,028H,028H,02FH,028H,048H,04FH,088H,000H,
DB  000H,0FCH,004H,004H,0FCH,080H,080H,0F8H,088H,088H,0F8H,088H,088H,0F8H,008H,000H,

;--  文字:  电  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,001H,001H,03FH,021H,021H,03FH,021H,021H,021H,03FH,021H,001H,001H,000H,000H,
DB  000H,000H,000H,0F8H,008H,008H,0F8H,008H,008H,008H,0F8H,008H,002H,002H,0FEH,000H,

;--  文字:  子  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,03FH,000H,000H,000H,001H,001H,001H,0FFH,001H,001H,001H,001H,001H,005H,002H,
DB  000H,0F0H,020H,040H,080H,000H,000H,004H,0FEH,000H,000H,000H,000H,000H,000H,000H,

;--  文字:  设  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  040H,021H,031H,021H,001H,001H,0E2H,025H,021H,021H,020H,020H,028H,030H,023H,00CH,
DB  000H,0F0H,010H,010H,010H,010H,00EH,0F8H,008H,008H,090H,090H,060H,090H,00EH,004H,

;--  文字:  计  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  040H,020H,030H,020H,000H,0F3H,010H,010H,010H,010H,010H,012H,014H,018H,010H,000H,
DB  020H,020H,020H,020H,020H,0FEH,020H,020H,020H,020H,020H,020H,020H,020H,020H,020H,

;--  文字:  制  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  024H,034H,024H,03FH,044H,004H,07FH,004H,03FH,024H,024H,024H,024H,027H,005H,004H,
DB  004H,004H,024H,0A4H,024H,024H,0A4H,024H,0A4H,0A4H,0A4H,0A4H,084H,084H,014H,008H,

;--  文字:  作  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  008H,00CH,009H,013H,012H,034H,050H,090H,010H,010H,010H,010H,010H,010H,010H,010H,
DB  080H,080H,000H,0FEH,080H,088H,0FCH,080H,080H,084H,0FEH,080H,080H,080H,080H,080H,

;--  文字:  大  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,001H,001H,001H,001H,0FFH,001H,002H,002H,002H,004H,004H,008H,010H,020H,040H,
DB  000H,000H,000H,000H,000H,0FEH,000H,080H,080H,040H,040H,020H,010H,018H,00EH,004H,

;--  文字:  赛  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,07FH,044H,0BFH,004H,03FH,004H,07FH,008H,03FH,0C9H,009H,009H,002H,00CH,030H,
DB  000H,0FEH,044H,0F0H,040H,0F8H,040H,0FCH,030H,0EEH,024H,020H,020H,0C0H,038H,010H,

;--  文字:  颁  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  010H,029H,024H,024H,042H,042H,0BCH,014H,014H,014H,024H,024H,024H,054H,08BH,000H,
DB  000H,0FEH,020H,040H,0FCH,084H,0A4H,0A4H,0A4H,0A4H,0A4H,0A4H,050H,08CH,004H,000H,

;--  文字:  奖  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  004H,044H,024H,014H,005H,016H,024H,044H,005H,0FFH,001H,002H,004H,008H,030H,0C0H,
DB  040H,07EH,084H,084H,068H,050H,020H,040H,000H,0FEH,000H,080H,040H,030H,00EH,004H,

;--  文字:  晚  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,079H,04AH,04CH,04BH,07AH,04AH,04BH,04AH,048H,078H,001H,006H,038H,000H,
DB  080H,080H,0F8H,010H,020H,0FCH,044H,044H,0FCH,040H,0A0H,0A0H,022H,022H,01EH,000H,

;--  文字:  会  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  001H,001H,002H,004H,008H,010H,06FH,080H,000H,03FH,002H,004H,008H,011H,03FH,010H,
DB  000H,000H,080H,040H,020H,018H,0EEH,004H,000H,0F8H,000H,020H,010H,0F8H,018H,010H,

;--  文字:  !  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  000H,000H,000H,000H,010H,010H,010H,010H,010H,010H,010H,010H,010H,000H,010H,000H,
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,


DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,

DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
DB  00H, 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,
         END





⌨️ 快捷键说明

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