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

📄 6963.asm

📁 t6963驱动程序,汇编语言,可自行修改用于驱动240X128一下点阵的液晶模块.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;T6963C, 240*128 DOTS LCM  6*8 点阵的字库描点子程序例子


	  TXHOME   EQU  40H
	  TXAREA   EQU  41H
	  GRHOME   EQU  42H
	  GRAREA   EQU  43H
	  ADDRPTR  EQU  24H
	  WRSET    EQU  0C4H;data write and ADP novariable
	  INWRSET  EQU  0C0H;data write and ADP increament
	  INRDSET  EQU  0C1H;data write and ADP increament
	  AWRON    EQU  0B0H
	  ARDON    EQU  0B1H
	  AUTOFF   EQU  0B2H
;
	  DATAPORT EQU  6000H
	  CTRLPORT EQU  6002H


;          WR1      EQU    P2.5
;          RD1      EQU    P2.6
;          CD       EQU    P2.4

	  DATA0    EQU  30H
	  DATA1    EQU  31H
	  DATA2    EQU  32H
	  CTRLCODE EQU  33H   ;写液晶显示的控制码
	  X        EQU  34H   ;显示内容的坐标
	  Y        EQU  35H   ;显示内容的坐标
	  TER0     EQU  36H   ;延时用的计数器
	  TER1     EQU  37H   ;延时用的计数器
	  G2       EQU  38H   
	  D1       EQU  39H
	  D2       EQU  3AH
            CHARFLAG  BIT 3H    ;字符反显、正显标志

;
	  ORG   0000H

          AJMP  BEGIN


          ORG   0040H
Main:
BEGIN:    NOP
    CLR  EA
    MOV  SP,#50H

    SETB  CHARFLAG  ;字符标志平时为正显

    SETB  EA;     open interrupter
    SETB  EX1;    open ZD1
    CLR   IT1;    active low level
    CLR RS0
    CLR RS1


    NOP
    LCALL DELAY1S
    LCALL INITIAL
    MOV   CTRLCODE,#9CH;text ON,graphic ON,cursor OFF
    LCALL CMD

    NOP
    LCALL CLRRAM

MAIN0:
          MOV  G2, #08H
          lcall CHAR
          LCALL CLRRAM

          MOV D1,#0FFH
	  MOV D2, #0FFH
          LCALL DISPFULL
          LCALL DELAY1S

          LCALL CLRRAM
          LCALL DELAY1S

          MOV D1,#0FFH
	  MOV D2, #000H
          LCALL DISPFULL
          LCALL DELAY1S

          MOV D1,#0H
	  MOV D2, #0FFH
          LCALL DISPFULL
          LCALL DELAY1S
       	  
          MOV D1,#0AAH
	  MOV D2, #0AAH
          LCALL DISPFULL
          LCALL DELAY1S

          MOV D1,#055H
	  MOV D2, #055H
          LCALL DISPFULL
          LCALL DELAY1S

          MOV D1,#0AAH
	  MOV D2, #055H
          LCALL DISPFULL
          LCALL DELAY1S

          MOV D1,#055H
	  MOV D2, #0AAH
          LCALL DISPFULL
          LCALL DELAY1S

          LCALL CLRRAM
       	  LCALL BOX
          LCALL DISPHZ
          LCALL CLRRAM   
          

       	  LJMP  MAIN0

DISPFULL:
          MOV   DATA1,#00H
	  MOV   DATA2,#08H
	  MOV   CTRLCODE,#ADDRPTR
	  LCALL CMD1
	  MOV   CTRLCODE,#AWRON
	  LCALL CMD

	  MOV R3, #32
FULL3:
          MOV R2,#40
FULL1:
          MOV A, D1
 	  LCALL SEND1
	  DJNZ R2, FULL1

          MOV R2,#40
FULL2:
          MOV A, D2
 	  LCALL SEND1
	  DJNZ R2, FULL2
          DJNZ R3, FULL3

	  MOV   CTRLCODE,#AUTOFF
	  LCALL CMD
          RET
BOX:
          MOV X, #0
	  MOV Y, #80H
	  MOV R2,#240
	  LCALL WLINE2

          MOV X, #0
	  MOV Y, #80H
          MOV R2,#64
	  LCALL WLINE

          MOV X, #0
	  MOV Y, #0BFH
	  MOV R2,#240
	  LCALL WLINE2

          MOV X, #239
	  MOV Y, #80H
	  MOV R2,#64
	  LCALL WLINE

          RET	  

DISPHZ:

          MOV G2, #13H

          MOV X, #23
          MOV Y, #0
	  MOV DPTR, #LINE1
	  LCALL WR_HZL

          MOV X, #23
          MOV Y, #16
	  MOV DPTR, #LINE2
	  LCALL WR_HZL

          MOV X, #23
          MOV Y, #32
	  MOV DPTR, #LINE3
	  LCALL WR_HZL

          MOV X, #30
          MOV Y, #48
	  MOV DPTR, #LINE4
	  LCALL WR_HZL

	  MOV   DATA1,#00H
	  MOV   DATA2,#13H
	  MOV   CTRLCODE,#GRHOME
	  LCALL CMD1;   graphic home address set
          LCALL DELAY1S
	  MOV   DATA1,#00H
	  MOV   DATA2,#08H
	  MOV   CTRLCODE,#GRHOME
	  LCALL CMD1;   graphic home address set

          RET

WLINE:   ;竖线子程序, X, Y:坐标, R2:线长
        
        LCALL WDOT
	INC Y
	DJNZ R2, WLINE
        RET

WLINE2:  ;横线子程序, X, Y:坐标, R2:线长
        LCALL WDOT
	INC X
	DJNZ R2, WLINE2
        RET

;Display a line deppend on R2
;The bit is "1" then display the dot
; 
WLINE3:
	 MOV A, Y
	 PUSH ACC
	 MOV A, X
	 PUSH ACC

	 MOV R3,#8
WLINE30:
         MOV A, R2
	 CLR C
	 RLC A
	 MOV R2,A
         JC   WLINE31
         MOV A, Y
         ANL A, #7FH
         MOV Y, A
         SJMP WLINE32
WLINE31: MOV A, Y
         ORL A, #80H
         MOV Y, A
WLINE32: LCALL WDOT
	 INC X
	 DJNZ R3, WLINE30

         POP ACC
	 MOV X, A
         POP ACC
	 MOV Y, A

         RET

;display a chinese CHAR line
; DPTR: CHINESE code start address
; x, y: position
WR_HZL:
         PUSH ACC

HZL1:	 
	 CLR A
	 MOVC A, @A+DPTR
	 CJNE A, 0FFH, HZL2
	 SJMP HZL_END
HZL2:
	 PUSH DPL
	 PUSH DPH
	 MOV DPTR, #TABHZ  ;TO THE font start address
	 MOV B, #32
	 MUL AB
         ADD A, DPL
	 MOV DPL, A
	 MOV A, B
	 ADDC A, DPH
	 MOV DPH, A      ; To find the char's font

	 LCALL WR_HZ

         POP DPH
	 POP DPL
	 INC DPTR

         MOV  A, X
         ADD A, #16
         MOV X, A


         SJMP HZL1         

HZL_END:

         POP ACC
         RET
;display a chinese 16*16
; DPTR: CHINESE fonts start address
; x, y: position
WR_HZ:   
         PUSH ACC

         MOV R4,#16
HZ1:
         clr a
	 MOVC A, @A+DPTR
	 MOV R2, A
	 LCALL WLINE3
	 INC DPTR
         INC Y
         DJNZ R4, HZ1

         MOV  A, X
         ADD A, #8
         MOV X, A
         
         MOV  A, Y
         SUBB A, #16
         MOV Y, A

         MOV R4,#16
HZ2:
         clr a
	 MOVC A, @A+DPTR
	 MOV R2, A
	 LCALL WLINE3
	 INC DPTR
         INC Y
         DJNZ R4, HZ2

         MOV  A, X
         SUBB A, #8
         MOV X, A
         MOV  A, Y
         SUBB A, #16
         MOV Y, A

         POP ACC
         RET


GCHAR:  ;图形状态下写一个字符的子程序 X, Y: 字符的左上角坐标
        ;A: 字符码
         PUSH ACC
         PUSH DPH
         PUSH DPL

         MOV DPTR, #CCS20       ;初始化DPTR
         CLR   C
         SUBB  A, #20H          ;计算在字符表中的地址
         JZ GCHA5
	 MOV R7, A
GCHA4:   INC DPTR
	 INC DPTR
	 INC DPTR
	 INC DPTR
	 INC DPTR
	 INC DPTR
         DJNZ R7, GCHA4     ;8*6字符,所以 DPTR加6
GCHA5:
          CLR A
	  MOVC A, @A+DPTR
          MOV R5, Y
          MOV R3, #6
GCHAR3:
         CLR A
	 MOVC A, @A+DPTR
	 MOV R4, A
	 INC DPTR
	 MOV R2, #8
	 MOV Y, R5
GCHAR2:
         JNB CHARFLAG, GCHAR6
         CLR C
         MOV A, R4
	 RRC A
	 MOV R4, A
	 JNC GCHAR1
         MOV A, Y
	 ORL A, #80H
	 MOV Y, A     ;置点
	 SJMP GCHAR4
GCHAR1:
         MOV A, Y
	 ANL A, #7FH
	 MOV Y, A     ;清点
GCHAR4:
         LCALL WDOT
         SJMP GCHAR9
GCHAR6:
         CLR C
         MOV A, R4
	 RRC A
	 MOV R4, A
	 JC GCHAR7
         MOV A, Y
	 ORL A, #80H
	 MOV Y, A     ;置点
	 SJMP GCHAR8
GCHAR7:
         MOV A, Y
	 ANL A, #7FH
	 MOV Y, A     ;清点
GCHAR8:
         LCALL WDOT

GCHAR9:
         INC Y
         DJNZ R2, GCHAR2
         INC X
         DJNZ R3, GCHAR3
         MOV Y, R5

         POP DPL
	 POP DPH
         POP ACC

         RET


GCHARL:   ;图形状态下写一个字符行的子程序 X, Y: 字符的左上角坐标; DPTR: 字符行首地址
          PUSH ACC
          PUSH DPH
          PUSH DPL
GCHL1:    MOV   A, #0
          MOVC  A, @A+DPTR
          CJNE  A, #0FFH, GCHL2        ;判断是结束符吗?
          SJMP  GCHLEND
GCHL2:
          INC DPTR
          LCALL GCHAR
          SJMP GCHL1
GCHLEND:
          POP DPL
	  POP DPH
          POP ACC
          RET


WDOT:     NOP       ;写点子程序,Y的D7为1,则置点。否则消点
          PUSH ACC
          MOV A,Y   ;Y为128方向上的坐标,X为240方向上的坐标
          PUSH ACC
          CLR ACC.7
          MOV B,#40   ;图形显示宽40
          MUL AB
	  MOV DATA1,A
	  MOV DATA2,B
	  MOV A,X
	  MOV B,#06H
	  DIV AB       ;B为点数值
          ADD A,DATA1
	  MOV DATA1,A   ;DATA1, DATA2:  display ram address
	  MOV A, G2
	  ADDC A,DATA2
	  MOV  DATA2,A
	  MOV CTRLCODE,#24H
	  LCALL CMD1         ;设置显示RAM地址

          MOV A,B      ;转换位数据
	  CPL A
	  ANL A,#07H
	  DEC A
	  DEC A                 ;8*8字符时,不用减; 6*8时,要减2; 7*8时,减1
	  XCH A,Y
	  SWAP A
	  ANL A,#08H
	  ORL A,#0F0H
	  ORL A,Y
	  MOV CTRLCODE,A
	  LCALL CMD
	  POP ACC
	  MOV Y, A
	  POP ACC

⌨️ 快捷键说明

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