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

📄 pc2002x.asm

📁 字符驅動程序20*2
💻 ASM
字号:

;*******************************************
;file  name:Pst2002X  with touch board
;use  KS0066U control IC
;*****************************************
SET:          .REG  P2.5            ;SET=0,display next a side
ON/OFF:       .REG  P2.6	            ;ON/OFF="L" do auto,"H" do fist use
DATASTRB:     .REG  P3.2
R/W:          .REG  P3.3
ADDRSTB:      .REG  P3.4
DAT1          EQU  7FH
DAT2          EQU  7EH
            ORG     00H
            LJMP    MAIN
           ORG     0200H
MAIN:  
                       
        CALL    INIT_LCD            ;LCD   initial
MM:     CALL    LED
        
        ;CALL    SCAN_KEY            ;scan or step  set
        CALL    DISP1
        CALL    DELAY3
        
        CALL    DISP2
        CALL    DELAY3
        
        CALL    DISP3
        
        
        CALL    DISP4
        CALL    DELAY3
        
        CALL    DISP5
        CALL    DELAY3
        
        CALL    DISP6
        CALL    DELAY3
       
        SJMP    MM
;-----------------------------------------------------------------------
;INITIAL   LCD
;-----------------------------------------------------------------------
INIT_LCD:
       SETB     ADDRSTB
       SETB     DATASTRB
       SETB     R/W    
       MOV      A,#38H     ;set function 2line 5X8dots 8bit display
       CALL     W_COM  
       CALL     DELAY1 
       MOV      A,#0CH     ;turn on display
       CALL     W_COM
       CALL     DELAY1
       MOV      A,#01H     ;clear display
       CALL     W_COM
       CALL     DELAY1
       MOV      A,#06H     ;set entry mode
       CALL     W_COM
       CALL     DELAY1
      
    
       RET
;-----------------------------------------
;write   command word
;-----------------------------------------
W_COM: 
     
        CALL   FLAG      ;write command to IR	
       	CLR    R/W
        MOV    P1,#02H
        CLR    ADDRSTB
        CALL   DELAY3
        SETB   ADDRSTB
        CALL   DELAY3
        CLR    ADDRSTB
        MOV    P1,A
	CLR    DATASTRB
        CALL   DELAY3
	SETB   DATASTRB
        CALL   DELAY3
        MOV    P1,#FFH
        RET        
;--------------------------------------    
;Write   display  data
;--------------------------------------
W_DATA:
        CALL   FLAG  ;write data to  DR
	
        CLR    R/W
        MOV    P1,#03H
        CLR    ADDRSTB
        CALL   DELAY3
        SETB    ADDRSTB
        CALL   DELAY3
        CLR    ADDRSTB
        MOV    P1,A
	CLR    DATASTRB
        CALL   DELAY3
	SETB   DATASTRB
        CALL   DELAY3
        MOV    P1,#FFH
	RET  
;--------------------------------
;read   busy  flag bit
;---------------------------------
FLAG:
        MOV   P1,#FFH		;examine busy flag
        MOV   P1,#02H
        CLR   ADDRSTB
        CALL  DELAY3
        SETB  ADDRSTB
	
	SETB  R/W
        CALL  DELAY3
        SETB  C
        CLR   ADDRSTB
        CLR   DATASTRB
	CALL  DELAY3
	MOV   C,P1.7
        NOP
        NOP
        NOP
        SETB  DATASTRB
        CALL  DELAY3
        JC    FLAG
	RET


;--------------------------------------
;look  for  TAB  data
;--------------------------------------
GET_TAB:
        CLR   A
	MOVC  A,@A+DPTR
        INC   DPTR		
        CALL  W_DATA
        
        DJNZ  R0,GET_TAB
        RET

;-------------------------------------------
 
       
SCAN_KEY:
       CALL   DISP1
       CALL   DELAY
     
       CLR    ADDRSTB
       MOV    P1,#0BH
       CALL   DELAY3
       SETB   ADDRSTB
       MOV    P1,#FFH
       CLR    DATASTRB
       CALL   DELAY3
       CLR    A
       MOV    A,P1
       JB    ACC.2,DISP6
       CALL  LED
       CALL  DELAY
       JB    ACC.0,DISP2
       CALL  LED
       CALL  DELAY
       JB    ACC.3,DISP3
       CALL  LED
       CALL  DELAY
       JB    ACC.1,DISP4
       CALL  LED
       CALL  DELAY
       JB    ACC.4,DISP5
       CALL  LED
       CALL  DELAY
       RET
;-------------------------------------------

CG_WRITE:
       MOV    A,#40H            ;set   CGRAM  address command
       CALL   W_COM
       CALL   DELAY3
       MOV    R0,#64
       MOV    DPTR,#TAB0
       CALL   GET_TAB
       RET
;==================K1 DISPLAY================

DISP1
      CALL   CG_WRITE
      MOV    DAT1,#00H
      MOV    DAT2,#00H
      CALL   W_DD
      RET
;=================K2  DISPLAY================
DISP2
      MOV    DAT1,#01H
      MOV    DAT2,#02H
      CALL   W_DD
      RET
;=================K3  DISPLAY==================
DISP3
      MOV    DAT1,#03H
      MOV    DAT2,#04H
      CALL   W_DD
      RET
;=================K4    DISPLAY================
DISP4
     MOV     DAT1,#05H
     MOV     DAT2,#06H
     CALL    W_DD
     RET
;=================K5    DISPLAY================
DISP5
     MOV     DAT1,#07H
     MOV     DAT2,#01H
     CALL    W_DD
     RET
;================K6    DISPLAY==================
DISP6
    MOV      A,#80H
    CALL     W_COM
    CALL     DELAY3
    MOV      R0,#20
    MOV      DPTR,#TAB1
    CALL     GET_TAB
;
   
    MOV      DAT2,#04H
    CALL     W_DD1
    RET

;=======================================
W_DD
      MOV    A,#80H
      CALL   W_COM
      CALL   DELAY3
      MOV    R2,#20
      MOV    A,DAT1
LOP1  CALL   W_DATA
      DJNZ   R2,LOP1
;
W_DD1
      MOV    A,#C0H
      CALL   W_COM
      CALL   DELAY3
      MOV    R3,#20
      MOV    A,DAT2
LOP2  CALL   W_DATA
      DJNZ   R3,LOP2
      RET  

;----------------------
LED:   MOV    P1,#0BH
       CLR    ADDRSTB
       CALL   DELAY3
       SETB   ADDRSTB
       MOV    P1,#FFH
       CLR    DATASTRB
       CALL   DELAY3
       SETB   DATASTRB
       CALL   DELAY3
       RET
;=================
DELAY3:
      
      MOV     R7,#14H
LAY1  MOV     R6,#64H
LAY   DJNZ    R6,LAY
      DJNZ    R7,LAY1
      
      RET       
;---------------------------------------------------------
TAB0
        .DB   FFH,FFH,FFH,FFH,FFH,FFH,FFH,FFH	;BALCK SCREEN  00H
	.DB   AAH,55H,AAH,55H,AAH,55H,AAH,55H	;snowflake     01H
        .DB   55H,55H,55H,55H,55H,55H,55H,55H	;UPRIGHTLINE   02H         
        .DB   0AH,0AH,0AH,0AH,0AH,0AH,0AH,0AH	;horizontal line 03H
        .DB   1FH,11H,11H,11H,11H,11H,11H,1FH   ;RECELT         04H
        .DB   1FH,15H,15H,15H,15H,15H,15H,1FH   ;character first row  05H
	.DB   1FH,15H,1FH,15H,15H,1FH,15H,1FH   ;06
        .DB   FFH,00H,FFH,00H,FFH,00H,FFH,00H   ;07H
        
TAB1    .DB   "   >>> TEST OK <<<  "
;--------------------------------------------------------

DELAY
DELY:   MOV   R4,#08H            	;1S delay subprogram
DEL:    CALL  DELAY1
        DJNZ  R4,DEL
        DJNZ  R3,DELY
        RET
;
DELAY1: MOV   R7,#01H
DEE0:	MOV   R6,#FFH			;0.125S delay subprogram
DEE1:   MOV   R5,#FFH
DEE2:   DJNZ  R5,DEE2
	DJNZ  R6,DEE1
	DJNZ  R7,DEE0
	RET
DELAY2
        MOV   R4,#04H
PPL     CALL  DELAY1
        DJNZ  R4,PPL
        RET
;-----------------------------------------------------------------
        

⌨️ 快捷键说明

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