📄 tlcm101.asm
字号:
RET
;----------------------------------
LOAD_ADDR:
MOV LOOPREG,#2
MOV DPTR,#TABLE_AD
MOV R0,#DISPADR
LPLOADAD: MOV A,#00
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ LOOPREG,LPLOADAD
RET
;---------------------------------------------------------------
; Display Device Code and data BIT translate
;---------------------------------------------------------------
SEND_BIT:
CLR CS_ ; CHIP ENABLE
DTW: MOV ST2,#8
MOV A,@R0
CLR C
DW_CLK:
CLR WR_
RLC A
MOV MSG,C
NOP
SETB WR_
NOP
DJNZ ST1,CONT
RET
CONT: DJNZ ST2,DW_CLK
INC R0
JMP DTW
;===============================================================
; CODE and Digital CHAR module TABLE area
;---------------------------------------------------------------
TABLE_ID:
DB 10000000B ; 1 Byte
DB 00100000B ; Turn ON system oscillator
DB 10000011B ; 3 Byte
DB 00000000B ; On-chip RC oscillator
DB 10000101B ; 5 Byte
DB 00100000B ; 1/3 Bias, 1/4 Duty LCD type
DB 10000000B ; 7 Byte
DB 01100000B ; LCD ON
TABLE_AD:
DB 10100000B ; Display first address is 00H
DB 00000000B ; First Output is SEG0
TABLE_DD:
DB 11101011B ; 0 ; 0
DB 01100000B ; 1 ; 1
DB 11000111B ; 2 ; 2
DB 11100101B ; 3 ; 3
DB 01101100B ; 4 ; 4
DB 10101101B ; 5 ; 5
DB 10101111B ; 6 ; 6
DB 11100000B ; 7 ; 7
DB 11101111B ; 8 ; 8
DB 11101101B ; 9 ; 9
DB 00010000B ; DOT ; 10
DB 11101110B ; A ; 11
DB 00101111B ; b ; 12
DB 00000111B ; c ; 13
DB 01100111B ; d ; 14
DB 10001111B ; E ; 15
DB 10001110B ; F ; 16
DB 00000000B ; EMPTY ; 17
DB 11111111B ; FULL ; 18
DB 00000100B ; - ; 19
DB 00100111B ; o ; 20
DB 00000110B ; r ; 21
DB 10101011B ; G ; 22
;=============================================================================
TEST_SEG2: ; Program for Telephone type LCM TEST
; Chip type : HT1611/3/6/A
;=============================================================================
SETB RST
SETB HK_ ; HK =1
SETB SK_ ; SK =1
SETB DI ; DI =1
CLR HK_ ; HK =0
MOV COUNTER,#16
; MOV LOOPREG,#10
; MOV DPTR,#TABLE_T
MOV DPTR,#TABLE
WR_CON: CLR A
MOVC A,@A+DPTR
MOV ST1,#4
CLR C
LOOP:
CPL SK_
RLC A
MOV DI,C
NOP
NOP
CPL SK_
DJNZ ST1,LOOP
MOV DLYTIME,#1
LCALL DELAY
INC DPTR
DJNZ COUNTER,WR_CON
MOV DLYTIME,#25
LCALL DELAY
; INC DPTR
; DJNZ LOOPREG,WR_CON
LJMP TEST_SEL
;--------------------------------------
TABLE_T:
DB 0A0H,10H,20H,30H,40H,50H,60H,70H,80H,90H
TABLE:
DB 0B0H,00H,0F0H,00H,50H,60H,70H,80H
DB 90H,0A0H,10H,40H,80H,10H,10H,90H
;
;***** Chip type COMMON subroutine **********************************
;
T6963C_APPS:
MOV DLYTIME,#1
LCALL DELAY
CLR RST ; Reset T6963C
NOP
NOP
SETB RST
NOP
NOP
MOV IR,#90H ; Turn off Display
LCALL COMMAND_WR
MOV R0,#00H ; Graphic Home Address set 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#42H ; GR_HOME SET_COM
LCALL COMMAND_WR
MOV R0,COL_N ; Graphic area set COLUMNS = 20,30
MOV R1,#00H
LCALL DT2
MOV IR,#43H ; GR_AREA SET_COM
LCALL COMMAND_WR
MOV R0,#00H ; Set Cousor Pointer LOCATE 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#21H ; CS_PT SET_COM
LCALL COMMAND_WR
MOV IR,#80H ; Mode Set (OR Internal CHR_Gen Mode)
LCALL COMMAND_WR
MOV IR,#93H ; Display Mode Set (T_on,G_on,C_on)
LCALL COMMAND_WR
;--------------------------------------; Only Graphic mode
MOV DATAREG,#0FFH
LCALL ALLSCR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
MOV DATAREG,#000H
LCALL ALLSCR
MOV DATAREG,#0AAH
LCALL ALLSCR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
MOV DATAREG,#055H
LCALL ALLSCR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
MOV DATAREG,#000H
LCALL ALLSCR
;--------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0000H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H ; Write address
LCALL COMMAND_WR
MOV R6,ROW_N
H1_LOOT: MOV R7,COL_N
H1_LOO1: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H1_LOO1
MOV R7,COL_N
H1_LOO2: MOV A,#000H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H1_LOO2
DJNZ R6,H1_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
;--------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,ROW_N
H2_LOOT: MOV R7,COL_N
H2_LOO1: MOV A,#000H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H2_LOO1
MOV R7,COL_N
H2_LOO2: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H2_LOO2
DJNZ R6,H2_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
;--------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,ROW_N
X1_LOOT: MOV R7,COL_N
X1_LOO1: MOV A,#0AAH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X1_LOO1
MOV R7,COL_N
X1_LOO2: MOV A,#055H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X1_LOO2
DJNZ R6,X1_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
;--------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,ROW_N
X2_LOOT: MOV R7,COL_N
X2_LOO1: MOV A,#055H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X2_LOO1
MOV R7,COL_N
X2_LOO2: MOV A,#0AAH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X2_LOO2
DJNZ R6,X2_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
LCALL DISP_BMP
JB PAUSE_FG,$ ; Pause_flag = 1 , Wait
LJMP TEST_SEL
;----------------------------------------------------------
; Display Bitmap
;----------------------------------------------------------
DISP_BMP:
MOV A,TESTPRG
XRL A,#1
JZ GRA240128
MOV A,TESTPRG
XRL A,#2
JZ GRA24066A
MOV A,TESTPRG
XRL A,#3
JZ GRA24064A
MOV A,TESTPRG
XRL A,#4
JZ GRA16064A
MOV A,TESTPRG
XRL A,#7
JZ GRA12864B
AJMP EXITBMP
GRA240128:
MOV DPTR,#BM240128
AJMP WR_BMP
GRA24066A:
MOV DPTR,#BM24066A
AJMP WR_BMP
GRA24064A:
MOV DPTR,#BM24064A
AJMP WR_BMP
GRA16064A:
MOV DPTR,#BM16064A
AJMP WR_BMP
GRA12864B:
MOV DPTR,#BM12864B
WR_BMP:
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#00H ; ADDRESS POINTER 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,ROW_N
LOP1: MOV R7,COL_N
LOP2: CLR A
MOVC A,@A+DPTR
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
INC DPTR
DJNZ R7,LOP2
JB SMALL_SCR,SJNEXT
INC DPTR
INC DPTR
SJNEXT: DJNZ R6,LOP1
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
CLR SMALL_SCR
EXITBMP: RET
;----------------------------------------------------------
ALLSCR:
MOV IR, #90H ; Turn off Display
LCALL COMMAND_WR
;------------------------------------------------
MOV R0,#00H ; Address pointer 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
;------------------------------------------------
MOV R6, ROW_N ; R6*R7*8 Dots
SLOOP1: MOV R7, COL_N ; R6*R7 DDRAM Units
SLOOP2: MOV A,DATAREG
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,SLOOP2
DJNZ R6,SLOOP1
;------------------------------------------------
MOV IR,#98H
LCALL COMMAND_WR
;------------------------------------------------
RET
;----------------------------------------------------------
;SubRoutine:COMMMAND WRITE,1&2-BYTE DATA WRITE,AUTO WRITE MODE,DELAY&DELAYA
;----------------------------------------------------------
COMMAND_WR:
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#TSC_COM_W
MOV A,IR
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
DT1: ; Data WR ( 1 Byte )
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#TSC_DAT_W
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
DT2: ; Data WR ( 2 Byte )
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#TSC_DAT_W
MOV A,R0
MOVX @DPTR,A
MOV A,R1
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
;----------------------------------------------------------
; Clear screen ; T6963C
;----------------------------------------------------------
CLRSCR:
MOV R0,#00H
MOV R1,#00H ; SET ADDRESS POINTER TO 0000H
LCALL DT2 ; (GRAPHIC HOME ADDRESS)
MOV IR,#24H ; ADPSET
LCALL COMMAND_WR
MOV IR,#0B0H ; (Data Auto WR Set)
LCALL COMMAND_WR
MOV R2,#01FH ; Clear ALL 8K
CLR1: MOV R3,#0FFH
CLR2: MOV A,#DATAREG ; DATA WRITE
LCALL ADT ; (BLANK CODE WRITE)
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV IR,#0B2H ; (Auto Reset)
LCALL COMMAND_WR
RET
ADT: ; Auto WR Mode
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#TSC_DAT_W
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
;********************************************************************
; Display Data Area (BITMAP)
;********************************************************************
;----------------------------
ORG 3000H
A1286401:
ORG 3400H
A1286402:
ORG 3800H
A1286403:
ORG 3C00H
;----------------------------
ORG 4000H
BM240128:
ORG 5000H
BM24066A:
ORG 5840H
BM24064A:
ORG 6040H
BM16064A:
ORG 6540H
BM16064B:
ORG 6A40H
BM12864A:
ORG 6E40H
BM12864B:
ORG 7240H
BM12232A:
ORG 7428H
BM12232B:
ORG 7610H
CHRTABLE:
ORG 7C50H
SEGTABLE:
;
;********************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -