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

📄 text4.a

📁 LCD1602的C语言显示编程
💻 A
字号:
;A15=E的选通信号,A9=R/W,A8=RS
COM      EQU      20H     ;指令寄存器                         
DAT      EQU      21H     ;数据寄存器             
CW_Add   EQU      8000H   ;指令口写地址           
CR_Add   EQU      8200H   ;指令口读地址           
DW_Add   EQU      8100H   ;数据口写地址            
DR_Add   EQU      8300H   ;数据口读地址
    
;初始化演示程序
 MAIN:  MOV        SP,#60H
        ANL        P3,#0C7H
        LCALL      INT
        LCALL      WRIT
;读BF和AC值
PRO:     PUSH        DPH 
         PUSH        DPL
         PUSH        ACC
         MOV         DPTR,#CR_Add    ;设置指令口读地址
         MOVX	     A,@DPTR         ;读BF和AC值     
         MOV         COM,A           ;存入COM单元
         POP         ACC
         POP         DPL
         POP         DPH
         RET
;写指令代码子程序
PR1:      PUSH     DPH
          PUSH     DPL
          PUSH     ACC
          MOV      DPTR,#CR_Add   ;设置指令口读地址
PR11:     MOVX     A,@DPTR
          JB       ACC.7,PR11     ;判BF=0?是继续
          MOV      A,COM
          MOV      DPTR,#CW_Add   ;设置指令口写地址
          MOVX     @DPTR,A        ;写指令代码
          POP      ACC
          POP      DPL
          POP      DPH
          RET
;写显示数据子程序
PR2:     PUSH     DPH
         PUSH     DPL
         PUSH     ACC
         MOV      DPTR,#CR_Add   ;设置指令口读地址
PR21:    MOVX     A,@DPTR
          JB       ACC.7,PR21     ;判BF=0?是继续
          MOV      A,DAT
          MOV      DPTR,#DW_Add   ;设置数据口写地址
          MOVX     @DPTR,A        ;写数据
          POP      ACC
          POP      DPL
          POP      DPH
          RET
;读显示数据子程序
 PR3:    PUSH     DPH
         PUSH     DPL
         PUSH     ACC
         MOV      DPTR,#CR_Add   ;设置指令口读地址
 PR31:    MOVX     A,@DPTR
          JB       ACC.7,PR31     ;判BF=0?是继续
          MOV      DPTR,#DR_Add   ;设置数据口读地址
          MOVX     A,@DPTR        ;读数据
          MOV      DAT,A          ;存入DAT单元
          POP      ACC
          POP      DPL
          POP      DPH
          RET
;直接访问方式下的初始化子程序
  INT:    MOV     A,#38H          ;此循环必要,不可删除
          MOV     DPTR,#CW_Add    ;指令口地址设置
          MOV     R2,#03H        ;循环量=3 
 INTU1:   MOVX    @DPTR,A         ;写指令代码
          LCALL   DELAY5MS            ;调延时子程序 
          DJNZ    R2,INTU1
          MOV     COM,#38H        ;设置工作方式*
          LCALL   PR1              ;
          MOV     COM,#01H        ;清屏
          LCALL   PR1
          MOV     COM,#06H        ;设置输入方式
          LCALL   PR1
          MOV     COM,#0FH        ;设置显示方式
          LCALL   PR1
          RET
;画面左滚动输入方式演示程序段
WRIT:  MOV      COM,#07H            ; 输入方式设置
           LCALL    PR1
           MOV      COM,#90H           ; 设置DDRAM 地址
           LCALL    PR1        
           MOV      DPTR,#TABL        ; 设置字表首地址
           MOV      R2,#0BH            ; 循环量设置
           MOV      R3,#00H 
L_1:      MOV      A,R3
           MOVC     A,@A+DPTR          ;取字符代码
           MOV      DAT,A            
           LCALL    PR2                 ;写数据
           INC      R3 
           LCALL    DELAY20MS               ;演示用延时
           DJNZ     R2,L_1
           SJMP     $
;注:*工作方式参数根据所使用的字符型液晶显示模块的特性而定。
DELAY5MS:   MOV      R6,#04H         ;延时子程序  
            MOV      R7,#10H
DELAY1:     NOP
            DJNZ       R7,DELAY1 
            DJNZ       R6,DELAY1
            RET
DELAY20MS:  MOV      R6,#0FFH         ;延时子程序  
            MOV      R7,#0FFH
DELAY2:     NOP
            DJNZ       R7,DELAY2
            DJNZ       R6,DELAY2
            RET
TABL:      DB  4CH, 65H, 66H, 74H,20H           ;Left Scroll
           DB  53H, 63H, 72H, 6FH,6CH,6CH         

END

⌨️ 快捷键说明

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