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

📄 yjgd.asm

📁 液晶程序
💻 ASM
字号:
;显示为“电子科技大学电信科协-方绍湖”的滚动液晶程序。
          COLUMN  DATA  30H
          PAGE1    DATA  31H
          WORD    DATA  32H
          CODE1     DATA  33H
          COUNT   DATA  34H
          COM     DATA  35H
          DAT     DATA  36H
          PAGE2   DATA  37H
          RS      BIT   P3.3
          RW      BIT   P3.4
          E       BIT   P3.5
          CS1     BIT   P3.6
          CS2     BIT   P3.7
          ORG     00H
          AJMP    MAIN
          ORG   0050H
   MAIN:  MOV   PAGE2,#0C0H          ;写显示初始行
          MOV   COM,PAGE2
          LCALL PR0
          LCALL PR2
   MAIN1: MOV   PAGE1,#00H
          MOV   CODE1, #00H          ;初始化子程序
          MOV   COLUMN ,#00H
         ; CLR   P3.2
          SETB  P3.6
          SETB  P3.7
          MOV   COM,#3FH             ;开液晶显示
          LCALL PR0
          LCALL PR2
          LCALL CLEAR                ; 清显示RAM为零
          MOV PAGE1,#00H             ;写入要显示的字符
          MOV COLUMN,#00
          MOV CODE1,#00
          LCALL DISPLAY
          MOV PAGE1,#00
          MOV COLUMN,#22
          MOV CODE1,#01H
          LCALL DISPLAY
          MOV PAGE1,#00H
          MOV COLUMN,#44
          MOV CODE1,#02
          LCALL DISPLAY
          MOV PAGE1,#00H
          MOV COLUMN,#66
          MOV CODE1,#03
          LCALL DISPLAY
          MOV PAGE1,#00H
          MOV COLUMN,#88
          MOV CODE1,#04
          LCALL DISPLAY
          MOV PAGE1,#00H
          MOV COLUMN,#110
          MOV CODE1,#05
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#00
          MOV CODE1,#06
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#22
          MOV CODE1,#07
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#44
          MOV CODE1,#08
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#66
          MOV CODE1,#09
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#88
          MOV CODE1,#10
          LCALL DISPLAY
          MOV PAGE1,#02H
          MOV COLUMN,#110
          MOV CODE1,#11
          LCALL DISPLAY
          MOV PAGE1,#04H
          MOV COLUMN,#00
          MOV CODE1,#12
          LCALL DISPLAY
          MOV PAGE1,#04H
          MOV COLUMN,#22
          MOV CODE1,#13
          LCALL DISPLAY
      L2: MOV  R5,#250
      L1: MOV  R6,#250            ;起始行每隔一小段时间不断改变,以实现滚动效果.
          DJNZ R6,$
          DJNZ R5,L1
          INC  PAGE2
          MOV  A,PAGE2
          CJNE A,#0FFH,GDONG
          MOV  PAGE2,#0C0H
   GDONG: MOV   COM,PAGE2
          LCALL PR0
          LCALL PR2
          LJMP  L2
 DISPLAY: MOV  A,PAGE1           ;显示每个字符的子程序
          MOV   COUNT,#10H
          MOV   WORD,#00H
          MOV   DPTR, #00H
          ANL  A,#07H            ;写页地址
          ORL  A,#0B8H
          MOV  COM,A
          LCALL PR0
          LCALL PR2
          MOV  DPTR,#TAB1        ;设定每个字符的起始地址
          MOV  A,  CODE1
          MOV  B,  #20H
          MUL  AB
          ADD  A,DPL
          MOV  DPL,A
          MOV  A,B
          ADDC A,DPH
          MOV  DPH,A
          MOV A,COLUMN
          CLR C
          SUBB A,#40H            ;未写满半屏则继续写左屏,写满则转右屏
          JC   LEFT_HALF         ;写左屏
          ORL  A,#40H
          MOV  COLUMN,A          ;写要显示的字符起始列地址
          MOV  COM,COLUMN
          LCALL PR2
  NEXT:   MOV  A,WORD            ;调整查表地址(要送入的字节地址)
          MOVC A,@A+DPTR         ;查表
          MOV  DAT,A             ;送数据
          LCALL PR3
          INC  WORD              ;写入的字节序数递增 (半个字符的字节数逐个写入 )
          DJNZ  COUNT,NEXT       ;未送完半个字符的字节则继续
          MOV   COUNT,#10H
          LJMP  DOWN_PR          ;送完半个字则送字符的下半个字(右屏)
LEFT_HALF: MOV  A,COLUMN         ;写要显示的字符起始列地址(左屏)
          ORL  A,#40H
          MOV  COM,A
          LCALL PR0
   NEXT1: MOV  A,WORD            ;调整查表地址(要送入的字节地址)
          MOVC A,@A+DPTR         ;查表
          MOV  DAT,A             ;送数据
          LCALL PR1
          INC  WORD              ;写入的字节序数递增 (半个字符的字节数逐个写入 )
          DJNZ  COUNT,NEXT1      ;未送完半个字符的字节则继续
          MOV  COUNT,#10H
          AJMP  DOWN_PL          ;送完半个字则送字符的下半个字(左屏)
 DOWN_PR: INC  PAGE1             ;送下半个字符子程序(右屏)
          MOV  A,PAGE1
          ANL  A,#07H
          ORL  A,#0B8H
          MOV  COM,A
          LCALL PR2
          MOV  COM,COLUMN
          LCALL PR2
   NEXT3: MOV  A,WORD
          MOVC A,@A+DPTR
          MOV  DAT,A
          LCALL PR3
          INC  WORD
          DJNZ  COUNT,NEXT3
          RET
 DOWN_PL: INC  PAGE1            ;送下半个字符子程序(左屏)
          MOV  A,PAGE1
          ANL  A,#07H
          ORL  A,#0B8H
          MOV  COM,A
          LCALL PR0
          MOV  A,COLUMN
          ORL  A,#40H
          MOV  COM,A
          LCALL PR0
   NEXT2: MOV  A,WORD
          MOVC A,@A+DPTR
          MOV  DAT,A
          LCALL PR1
          INC  WORD
          DJNZ  COUNT,NEXT2
          RET
TAB1:
;--  文字:  电  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,0F8H,48H,48H,48H,48H,0FFH,48H,48H,48H,48H,0F8H,00H,00H,00H,
DB  00H,00H,0FH,04H,04H,04H,04H,3FH,44H,44H,44H,44H,4FH,40H,70H,00H,

;--  文字:  子  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,02H,02H,02H,02H,02H,0E2H,12H,0AH,06H,02H,00H,80H,00H,00H,
DB  01H,01H,01H,01H,01H,41H,81H,7FH,01H,01H,01H,01H,01H,01H,01H,00H,

;--  文字:  科  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  10H,12H,92H,72H,0FEH,51H,91H,00H,22H,0CCH,00H,00H,0FFH,00H,00H,00H,
DB  04H,02H,01H,00H,0FFH,00H,04H,04H,04H,02H,02H,02H,0FFH,01H,01H,00H,

;--  文字:  技  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  08H,08H,88H,0FFH,48H,28H,00H,0C8H,48H,48H,7FH,48H,0C8H,48H,08H,00H,
DB  01H,41H,80H,7FH,00H,40H,40H,20H,13H,0CH,0CH,12H,21H,60H,20H,00H,

;--  文字:  大  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  20H,20H,20H,20H,20H,20H,0A0H,7FH,0A0H,20H,20H,20H,20H,20H,20H,00H,
DB  00H,80H,40H,20H,10H,0CH,03H,00H,01H,06H,08H,30H,60H,0C0H,40H,00H,

;--  文字:  学  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  40H,30H,10H,12H,5CH,54H,50H,51H,5EH,0D4H,50H,18H,57H,32H,10H,00H,
DB  00H,02H,02H,02H,02H,02H,42H,82H,7FH,02H,02H,02H,02H,02H,02H,00H,

;--  文字:  电  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,0F8H,48H,48H,48H,48H,0FFH,48H,48H,48H,48H,0F8H,00H,00H,00H,
DB  00H,00H,0FH,04H,04H,04H,04H,3FH,44H,44H,44H,44H,4FH,40H,70H,00H,

;--  文字:  信  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  80H,40H,30H,0FCH,07H,0AH,0A8H,0A8H,0A9H,0AEH,0AAH,0A8H,0A8H,08H,08H,00H,
DB  00H,00H,00H,7FH,00H,00H,7EH,22H,22H,22H,22H,22H,7EH,00H,00H,00H,

;--  文字:  科  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  10H,12H,92H,72H,0FEH,51H,91H,00H,22H,0CCH,00H,00H,0FFH,00H,00H,00H,
DB  04H,02H,01H,00H,0FFH,00H,04H,04H,04H,02H,02H,02H,0FFH,01H,01H,00H,

;--  文字:  协  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  10H,10H,0FFH,10H,10H,10H,0C8H,08H,08H,0FFH,08H,08H,0F8H,80H,00H,00H,
DB  00H,00H,7FH,00H,00H,43H,20H,18H,07H,00H,20H,40H,3FH,00H,03H,00H,

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

;--  文字:  方  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  08H,08H,08H,08H,08H,08H,0F9H,4AH,4CH,48H,48H,0C8H,08H,08H,08H,00H,
DB  40H,40H,20H,10H,0CH,03H,00H,00H,20H,40H,40H,3FH,00H,00H,00H,00H,

;--  文字:  绍  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  20H,30H,0ACH,63H,10H,00H,80H,42H,32H,0EH,02H,42H,82H,7EH,00H,00H,
DB  22H,23H,22H,12H,12H,00H,00H,7FH,21H,21H,21H,21H,21H,7FH,00H,00H,

;--  文字:  湖  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  10H,21H,86H,60H,90H,90H,0FFH,90H,90H,00H,0FEH,92H,92H,0FEH,00H,00H,
DB  04H,0FCH,03H,00H,1FH,10H,10H,90H,5FH,30H,0FH,40H,80H,7FH,00H,00H,
    PR00: SETB  RW                 ;写字令时序子程序
          CLR   RS
          SETB  E
          MOV   A ,P2
          CLR   E
          JB    ACC.7,PR00
          CLR   RW
          MOV   A,COM
          MOV   P2,A
          SETB  E
          CLR   E
          RET
   PR01:  SETB  RW               ;写数据时序子程序
          CLR   RS
          SETB  E
          MOV   A,P2
          CLR   E
          JB    ACC.7,PR01
          CLR   RW
          SETB  RS
          MOV   A,DAT
          MOV   P2,A
          SETB  E
          CLR   E
          RET
    PR0:  CLR   CS1                ;写子令子程序(左)
          LCALL PR00
          SETB  CS1
          RET
    PR1:  CLR   CS1                ;写数据子程序(左)
          LCALL PR01
          SETB  CS1
          RET
    PR2:  CLR   CS2                ;写子令子程序(右)
          LCALL PR00
          SETB  CS2
          RET
    PR3:  CLR   CS2               ;写数据子程序(右)
          LCALL PR01
          SETB  CS2
          RET
   CLEAR: MOV   R4,#00H             ;清显示RAM子程序
  CLEAR1: MOV   A,R4
          ANL   A,#07H
          ORL   A,#0B8H
          MOV   COM,A
          LCALL PR0
          LCALL PR2
          MOV   COM,#40H
          LCALL PR0
          LCALL PR2
          MOV   R3,#40H
  CLEAR2: MOV   DAT,#00H
          LCALL PR1
          LCALL PR3
          DJNZ  R3,CLEAR2
          INC   R4
          CJNE  R4,#08H,CLEAR1
          RET
          end


⌨️ 快捷键说明

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