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

📄 sukong.asm

📁 行列式键盘控制,实现液晶(UM12864B)驱动显示程序.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;LCD液晶监控程序
;8155扩展的PB口,PC口分别作2×8键盘的列线口、行线口
;74LS138的Y7作为8155的片选信号
          FD8155 EQU  00H     ; 8155命令口低8位地址
          FG8155 EQU  0F0H    ; 8155命令口高8位地址
          AD8155 EQU  01H     ; 8155PA口低8位地址
          AG8155 EQU  0F0H    ; 8155PA口高8位地址
          BD8155 EQU  02H     ; 8155PB口低8位地址
          BG8155 EQU  0F0H    ; 8155PB口高8位地址
          CD8155 EQU  03H     ; 8155PC口低8位地址
          CG8155 EQU  0F0H    ; 8155PC口高8位地址
          KEYZHI EQU  2FH     ;键值存放单元

            CSA  EQU  P3.4    ;液晶片选在(左,前)显示
            CSB  EQU  P3.5    ;在(右、后)显示
            E    EQU  P3.3    ;使能信号
            DI   EQU  P3.2    ;选择存指令还是数据单元
        COMSTART EQU  70H     ;液晶的启动
        COMONOFF EQU  71H     ;液晶开显示
        TABADDR  EQU  72H     ;要显示字符的表首地此
        COMDATA  EQU  73H     ;字符数据
        COMSAME  EQU  74H     ;液晶数据与指令的传送
        JCS1CS2  EQU  7FH     ;片选
      COMXSTART  EQU  76H     ;起始页地址存放单元
      COMXEND    EQU  77H     ;终止页地址存放单元
      COMYSTART  EQU  78H     ;起始列地址存放单元
      COMYEND    EQU  79H     ;终止列地址存放单元
         ;SCL     BIT  P3.0     ;24c04控制命令字
         ;SDA     BIT  P3.1     ;24c04传送数据
         ;FFF     EQU  20H.0    ;忙状态标志位
         ;ADDR    EQU  1FH      ;写入24c04的地此
         ;DATA0   EQU  40H      ;要读入24c04数据的首地此
         ;DATA1   EQU  50H      ;读回单片机存放数据的首地此

         STEST   EQU  63H       ;实测数据存放区首地此(60--65H)

           AD0	  EQU	30H
           AD1	  EQU	31H
           AD2	  EQU	32H
           AD3	  EQU	33H
           AD4	  EQU	34H
           AD5	  EQU	35H
           AD6	  EQU	36H
           ADA	  EQU	4FH
           ADB	  EQU	5FH
           ADC	  EQU	4DH
           ADDV	  EQU	5DH
          ORG    0000H
  START:  LJMP   MAIN

          ORG    0030H
  MAIN:   MOV   SP,     #90H;
          MOV   PSW,    #00H;
          MOV   R0,     #20H
          MOV   R7,     #96
          CLR   A
  LOOP:   MOV   @R0,    A
          INC   R0
          DJNZ  R7,     LOOP
          LCALL CSH8155                   ;8155初始化
          LCALL INT                       ;液晶初始化
          MOV   COMXSTART,#0B8H           ;液晶清屏
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #7FH
          LCALL CLEAR1


   tt:    MOV   DPTR,     #TT0
          MOV   COMXSTART,#0B8H
          MOV   COMXEND,  #0B9H
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #4FH
          MOV   JCS1CS2,  #00H
          LCALL DISP



          MOV   DPTR,     #TT0
          MOV   COMXSTART,#0B8H
          MOV   COMXEND,  #0B9H
          MOV   COMYSTART,#70H
          MOV   COMYEND,  #7FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #TT1
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #4FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #TT1
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#70H
          MOV   COMYEND,  #7FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #TT2
          MOV   COMXSTART,#0BEH
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#55H
          MOV   COMYEND,  #64H
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #TT2
          MOV   COMXSTART,#0BEH
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#50H
          MOV   COMYEND,  #5FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM0          ;欢
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#60H
          MOV   COMYEND,  #6FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM1          ;迎
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#70H
          MOV   COMYEND,  #7FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM2          ;使
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #4FH
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM3          ;用
          MOV   COMXSTART,#0BAH
          MOV   COMXEND,  #0BBH
          MOV   COMYSTART,#50H
          MOV   COMYEND,  #5FH
          MOV   JCS1CS2,  #01H
          LCALL DISP



          MOV   DPTR,     #JM4          ;数
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#48H
          MOV   COMYEND,  #57H
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM5          ;控
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#58H
          MOV   COMYEND,  #67H
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM6          ;直
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#68H
          MOV   COMYEND,  #77H
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM71         ;流
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BCH
          MOV   COMYSTART,#77H
          MOV   COMYEND,  #7FH
          MOV   JCS1CS2,  #00H
          LCALL DISP

          MOV   DPTR,     #JM72         ;流
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BCH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #45H
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM73          ;流
          MOV   COMXSTART,#0BDH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#77H
          MOV   COMYEND,  #7FH

          LCALL DISP

          MOV   DPTR,     #JM74          ;流
          MOV   COMXSTART,#0BDH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #45H
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM8          ;电
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#46H
          MOV   COMYEND,  #55H
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM9         ;流
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#56H
          MOV   COMYEND,  #65H
          MOV   JCS1CS2,  #01H
          LCALL DISP

          MOV   DPTR,     #JM10        ;源
          MOV   COMXSTART,#0BCH
          MOV   COMXEND,  #0BDH
          MOV   COMYSTART,#66H
          MOV   COMYEND,  #75H
          MOV   JCS1CS2,  #01H
          LCALL DISP



 TSF0:    LCALL KEY
KEYGN:    MOV   DPTR,     #KEYTAB
          MOV   KEYZHI,   A
          CLR   C
          SUBB  A,        #0BH
          JNC   CLR0
   KK:    MOV   A,        KEYZHI
          MOV   B,        #03H
          MUL   AB
          JMP   @A+DPTR

CLR0:     MOV   R0,       #COMXSTART
          MOV   R1,       #COMYSTART
          MOV   COMXSTART,#0B8H
          MOV   COMXEND,  #0BFH
          MOV   COMYSTART,#40H
          MOV   COMYEND,  #7FH
          LCALL CLEAR1
          LJMP  KK

;键功能转移指令表KEYTAB
 KEYTAB:  LJMP  TSF0
          LJMP  KEY00
          LJMP  KEY01
          LJMP  KEY02
          LJMP  KEY03
          LJMP  KEY04
          LJMP  KEY05
          LJMP  KEY06
          LJMP  KEY07
          LJMP  KEY08
          LJMP  KEY09
          LJMP  KEY0A
          LJMP  KEY0B
          LJMP  KEY0C
          LJMP  KEY0D
          LJMP  KEY0E
          LJMP  KEY0F

;键功能程序区
 KEY00:   LJMP  TSF0

 KEY01:   LJMP  TSF0

 KEY02:   LJMP   TSF0

 KEY03:   LJMP   TSF0

 KEY04:   LJMP   TSF0

 KEY05:   LJMP   TSF0

 KEY06:   LJMP  TSF0

 KEY07:   LJMP  TSF0

 KEY08:   LJMP   TSF0

 KEY09:   LJMP   TSF0

 KEY0A:   LJMP   ZHISU0  ;置给定值
          LJMP   TSF0

 KEY0B:   LJMP   KSS     ;置步进值
          LJMP   TSF0

 KEY0C:   LJMP    TSF0

 KEY0D:   LJMP    TSF0

 KEY0E:
          LJMP    TSF0  ;幅度控制

 KEY0F:   LJMP    TSF0

;液晶初始化子程序
;                 CSA  EQU  P3.4    ;液晶片选在(左,前)显示
;                 CSB  EQU  P3.5    ;在(右、后)显示
;                 E    EQU  P3.3    ;使能信号
;                 DI   EQU  P3.2    ;选择存指令还是数据单元
;             COMSTART EQU  70H     ;液晶的启动
;             COMONOFF EQU  71H     ;液晶开显示
;             TABADDR  EQU  72H     ;要显示字符的表首地此
;             COMDATA  EQU  73H     ;字符数据
;             COMSAME  EQU  74H     ;液晶数据与指令的传送
;             JCS1CS2  EQU  7FH     ;片选
;           COMXSTART  EQU  76H     ;起始页地址存放单元
;           COMXEND    EQU  77H     ;终止页地址存放单元
;           COMYSTART  EQU  78H     ;起始列地址存放单元
;           COMYEND    EQU  79H     ;终止列地址存放单元


INT:      MOV    COMONOFF,    #03FH
          MOV    COMSAME,     COMONOFF
          LCALL  PRL0
          MOV    COMSTART,    #0C0H
          MOV    COMSAME,     COMSTART
          LCALL  PRL0
          RET

;写命令子程序
PRL0:     SETB   CSA
          SETB   CSB                              ;CLR CSB
          CLR    DI
PRL01:    NOP
          NOP
          NOP
          NOP
          MOV    P0,           COMSAME
          SETB   E
          CLR    E
          RET


;液晶清屏子程序
;             COMSTART EQU  70H     ;液晶的启动
;             COMONOFF EQU  71H     ;液晶开显示
;             TABADDR  EQU  72H     ;要显示字符的表首地此
;             COMDATA  EQU  73H     ;字符数据
;             COMSAME  EQU  74H     ;液晶数据与指令的传送
;             JCS1CS2  EQU  7FH     ;片选
;           COMXSTART  EQU  76H     ;起始页地址存放单元
;           COMXEND    EQU  77H     ;终止页地址存放单元
;           COMYSTART  EQU  78H     ;起始列地址存放单元
;           COMYEND    EQU  79H     ;终止列地址存放单元

CLEAR1:    INC    COMXEND                          ; 终止页地址加1
           INC    COMYEND                          ; 终止列地址加1
CLS11:     MOV    A,            @R0                ; 取起始页地址
           MOV    COMSAME,      A                  ; 临时存放页地址
           LCALL  PRL0                             ; 调写清屏命令子程序
           MOV    A,            @R1                ; 取起始列地址
           MOV    COMSAME,      A                  ; 临时存放列地址
           LCALL  PRL0                             ; 调写清屏命令子程序
           MOV    A,            COMYSTART          ; 恢复起始列地址
CLS22:     MOV    COMDATA,      #00H               ; 点灭数据
           LCALL  PRL1                             ; 调写清屏数据子程序
           INC    A                                ; 列地址加1
           CJNE   A,            COMYEND,   CLS22   ; 列写完否?
           INC                  @R0                ; 页地址加1
           MOV    A,            @R0                ; 临时存放页地址
           CJNE   A,            COMXEND,    CLS11  ; 页写完否?
           RET

;写数据子程序
PRL1:      PUSH   A
           SETB   CSA                              ;Write data
           SETB   CSB
PRL101:    NOP
           NOP
           NOP
           NOP
           MOV     P0,          COMDATA
           SETB    DI
           SETB    E
           CLR     E
           POP     A
           RET

;8155初始化子程序CSH8155
 CSH8155: PUSH   DPH
          PUSH   DPL
          PUSH   ACC
          MOV    P2,    #FG8155
          MOV    R1,    #FD8155
          MOV    P0,    R1
          MOV    A,     #03H
          MOVX   @R1,   A
          POP    ACC
          POP    DPL
          POP    DPH
          RET







;液晶显示子程序

⌨️ 快捷键说明

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