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

📄 xiwenzi.asm

📁 lcm2401282液晶模块的调试程序
💻 ASM
字号:
WR       BIT     P2.4          ;DEFINE LCM WRITE PIN
RD       BIT     P2.5          ;DEFINE LCM READ PIN
CE       BIT     P2.7          ;DEFINE LCM CHIP ENABLE PIN
CD       BIT     P2.3          ;DEFINE LCM COMMAND/DATA PIN
FS       BIT     P2.2          ;DEFINE LCM WORD PIN
RST      BIT     P3.3          ;DEFINE LCM RESET PIN
SLK      BIT     P3.4
DB0      BIT     P0.0          ;DEFINE LCM DATA BUS PIN
DB1      BIT     P0.1
DB2      BIT     P0.2
DB3      BIT     P0.3
DB4      BIT     P0.4
DB5      BIT     P0.5
DB6      BIT     P0.6
DB7      BIT     P0.7

COUNT    DATA     30H
;CGTAB    DATA     31H
O_X      DATA     32H
O_Y      DATA     33H
CODE1    DATA     34H
CODE2    DATA     35H
MAIN:
;//=========================
;//初始化
;//=========================
               CLR      EA

               MOV      IE,#00H
	       MOV      IP,#00H
               MOV      TCON, #00H              ;//清零
 	       MOV      SP,#80H                     ;//堆栈指针

               CLR      RS0
               CLR      RS1                         ;//(00~07)
               MOV      R0,#00H
INTIAL:        MOV      @R0,#00H
               INC      R0
               CJNE     R0,#0FFH,INTIAL
               MOV      @R0,#00H
               MOV      R0,#00H                    ;//RAM清零
               SETB     EA

WAIT:   CLR     RST            ;RESET
        NOP
        SETB     RST
        CLR      FS           ;SET FS=0
	SETB	 SLK
        LCALL    INTIAL1
        LCALL    CLEAR
        MOV      CODE2,#012H
        MOV      O_X,#02H
        MOV      O_Y,#03H
        LCALL    WRI_XWC
        LCALL    DELAY
        LCALL    DELAY
        JMP      WAIT


;//==================================================
;TEXT HOME ADDRESS SET
INTIAL1: MOV     R2,#00H      ;//设置文本显示区首地ZHI
         MOV     R3,#00H
         MOV     R4,#40H
         LCALL   PR1
;TEXT AREA SET
         MOV     R2,#20H         ;//设置文本显示区宽度
         MOV     R3,#00H         ;//即一行显示所占字节宽度
         MOV     R4,#41H
         LCALL   PR1
;GRAPHIC HOME ADDRESS SET
         MOV     R2,#00H         ;//设置徒刑显示区域首地址
         MOV     R3,#08H         ;//或为文本属性区域宽度
         MOV     R4,#42H
         LCALL   PR1
;GRAPHIC AREA SET
         MOV     R2,#20H         ;//设置图形显示区域宽度
         MOV     R3,#00H         ;//或为文本属性区域宽度
         MOV     R4,#43H
         LCALL   PR1
         MOV     R4,#80H         ;//显示方式设置,"OR" MODE
          LCALL   PR12
         MOV     R4,#0A7H        ;//光标形状,正方形
         LCALL   PR12
         MOV     R4,#9FH         ;//显示开关设置,开文本图形显示
         LCALL   PR12
         RET

;//==================================================
DELAY:  MOV     40H,#0FFH        ;DELAY TIME
DELAY1: MOV     41H,#0FFH
DELAY2: DJNZ    41H,DELAY2
        DJNZ    40H,DELAY1
	RET

;//==================================================
;READ BUSY_SIGNAL
PR0:    CLR     CE            ;SET CE=L
        SETB    CD            ;SET CD=H
        SETB    WR            ;SET WR=H
        ORL     P0,#0FFH
        CLR     RD            ;SET RD=L
        MOV     A,P0
        SETB    RD            ;SET RD=H
        RET

;READ BUSY_SIGNAL ,OK OR NOT ?
PR01:   CALL   PR0
        JNB     ACC.0,PR01      ;STA0 OK?
        JNB     ACC.1,PR01      ;STA1 OK?
        RET
PR02:   CALL   PR0
        JNB     ACC.2,PR03      ;STA2 OK?
        RET
PR03:   CALL   PR0
        JNB     ACC.3,PR03      ;STA3 OK?
        RET
PR06:   CALL   PR0
        JB      ACC.6,ERR
        RET
ERR:    LJMP    PR06
        RET
;SEND OUT INSTRUCTION AND DATA TO LCM
PR1:    CALL    PR01            ;DOUBLE BYTE PARAMETER INST. PORT
        MOV     A,R2
        CALL    PR14
PR11:   CALL    PR01            ;SINGLE BYTE PARAMETER INST. PORT
        MOV     A,R3
        CALL    PR14
PR12:   CALL    PR01            ;NO PARAMETER INST. PORT
        MOV     A,R4
        JMP     PR15
PR14:   CLR     CE            ;//SET CE=L
        CLR     CD            ;//SET CD=L
        JMP     PR16
PR15:   CLR     CE            ;//SET CE=L
        SETB    CD            ;//SET CD=H
PR16:   SETB    RD            ;//SET RD=H
        CLR     WR            ;//SET WR=L
        MOV     P0,A
        SETB    WR            ;//SET WR=H
        RET

;//==================================================
;//清屏
;//==================================================
CLEAR:  MOV     R2,#00H         ;//设置显示存储器首地址
        MOV     R3,#00H
        MOV     R4,#24H
        LCALL   PR1
        MOV     R3,#00H        ;//设置循环量
        MOV     R7,#20H
        MOV     R4,#0B0H       ;//设置自动写命令
        LCALL   PR12
        MOV     R6,#0A2H
CLEAR1: LCALL   PR03           ;//判断状态位S3
        MOV     A,#00H         ;//清0
        LCALL   PR14
        DJNZ    R3,CLEAR1
        DJNZ    R7,CLEAR1
        MOV     R4,#0B2H       ;//设置自动写结束命令
        LCALL   PR12
        RET

;//====================================================
WRI_XWC:
       MOV      A,O_Y           ;//
       MOV      B,#20H          ;//
       MUL      AB
       ADD      A,O_X
       MOV      R2,A
       MOV      A,B
       ADDC     A,#00H
       MOV      R3,A
       PUSH     ACC             ;//
       MOV      R4,#24H         ;//
       LCALL    PR1
       MOV      R3,CODE2         ;//
       MOV      R4,#0C4H
       LCALL    PR11
       POP      ACC
       RET
       END


⌨️ 快捷键说明

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