📄 tlcm101.asm
字号:
;--------------------------------------------------------------------
; PROGRAM FOR TESTING ALL LCM Ver 1.01
; 2000.12.01
;
; MCU TYPE : 80C31 or 89C51
; EPROM : 27C256
; PCB FILE : TEST_LCM.PCB
; SCH FILE : TEST_LCM.S01
;
; LCM CHIP : HD44780,T6963C,SED1520,KS0107,HD44100,HT1621,HT1611 P3.3 P3.5
; | |
; Test Interface : Vss Vdd Vo WR RD A12 A13 E D0 D1 D2 D3 D4 D5 D6 D7 CLK A14 A11 RST
;============================================================================
DISPRAM EQU 10H ; 10H~1FH,16 Byte DISPLAY RAM
DGRAM1 EQU 10H ; Common
DGRAM2 EQU 11H ; Common
DGRAM3 EQU 12H ; Common
DGRAM4 EQU 13H ; Common
DGRAM5 EQU 14H ; Common
DGRAM6 EQU 15H ; Common
DGRAM7 EQU 16H ; Common
DGRAM8 EQU 17H ; Common
DGRAM9 EQU 18H ; Common
DGRAM10 EQU 19H ; Common
DGRAM11 EQU 1AH ; Common
DGRAM12 EQU 1BH ; Common
DGRAM13 EQU 1CH ; Common
DGRAM14 EQU 1DH ; Common
DGRAM15 EQU 1EH ; Common
DGRAM16 EQU 1FH ; Common
;============================================================================
CODERAM EQU 10H ; 10H~19H,10 Byte CODE RAM
;============================================================================
DISPFLG EQU 20H ; 20H is Display control Unit
DISP BIT 00H ; Dispflg.0
ERR0 BIT 01H ; Dispflg.1
ERR1 BIT 02H ; Dispflg.2
DOTP1 BIT 03H ; Dispflg.3
DOTP2 BIT 04H ; Dispflg.4
DOT_C BIT 05H ; Dispflg.5
DOT_S BIT 06H ; Dispflg.6
DOT_X BIT 07H ; Dispflg.7
RUNFLAG EQU 21H ; 21H is Main Program control Unit
SYS_INIT BIT 08H
SYS_WAIT BIT 09H ; Wait TESTPRG Select
RUN_HOME BIT 0AH ; Return TEST_SEL
PAUSE_FG BIT 0BH ; PAUSE_FG = 1, Program pause
FLAG_SW EQU 22H ; 22H is
TIMER BIT 10H
BLANK BIT 11H
SMALL_SCR BIT 12H
;============================================================================
ST1 EQU 28H
ST2 EQU 29H
DISPADR EQU 2AH ; DISP LOCATE Address REG 2AH,2BH
TEPOINT EQU 2CH ; Main
DT_REG1 EQU 2DH ; Main
DT_REG2 EQU 2EH ; Main
DT_REG3 EQU 2FH ; Main
TESTPRG EQU 30H ; Main
SAVEPRG EQU 31H ; Main Common
DATAREG EQU 32H ; Main Common
LOOPREG EQU 33H ; Main Common
COUNTER EQU 34H ; Main Common
DLYTIME EQU 35H ; Main Common
DLY0 EQU 36H ; Main Common
DLY1 EQU 37H ; Main Common
KEY_ST EQU 38H ; Main
SYM EQU 39H ; Main
SECO EQU 3AH ; Main
MINU EQU 3BH ; Main
HOUR EQU 3CH ; Main
;----------------------------------------------------------
PR EQU 3DH ; KS0108B & SED1520
VR EQU 3EH ; KS0108B & SED1520
HR EQU 3FH ; KS0108B & SED1520
IR EQU 40H ; ( T6963C ALL APP )
DTREG1 EQU 41H ; KS0108B & SED1520 & T6963C
DTREG2 EQU 42H ; KS0108B & SED1520 & T6963C
ROW_N EQU 43H ; ( T6963C ALL APP )
COL_N EQU 44H ; ( T6963C ALL APP )
;----------------------------------------------------------
ICS BIT P1.0 ; Main
;IRD BIT P1.3 ; Main
IWR BIT P1.1 ; Main
IDA BIT P1.2 ; Main
;----------------------------------------------------------
SCL BIT P3.5 ; 1002 (HD44100 )
SDA BIT P3.6 ; 1002 (HD44100 )
LAT BIT P3.7 ; 1002 (HD44100 )
CS_ BIT P3.3 ; HT1621 Chip Select signal
WR_ BIT P3.7 ; HT1621 WRITE Signal
RD_ BIT P3.5 ; HT1621 READ Signal
MSG BIT P3.6 ; HT1621 Display Data Bit signal
HK_ BIT P3.3 ; HT1611
DI BIT P3.6 ; HT1611
SK_ BIT P3.7 ; HT1611
;----------------------------------------------------------
RST BIT P3.5 ; Reset Signal for all LCM
CLK12232 BIT P3.3 ; 12232 CLOCK ext_osc
CHR_COM_W EQU 4FFFH ; Character (HD44780A)
CHR_DAT_W EQU 5FFFH ; Character (HD44780A)
CHR_COM_R EQU 6FFFH ; Character (HD44780A)
KSC_COM_W EQU 4FFFH ; KS0108B_APPS (SAMSUNG)
KSC_COM_R EQU 6FFFH ; KS0108B_APPS (SAMSUNG)
KSC_DAT_W EQU 5FFFH ; KS0108B_APPS (SAMSUNG)
KSC_CM1_W EQU 0FFFH ; KS0108B_APPS (SAMSUNG)
KSC_CM2_W EQU 47FFH ; KS0108B_APPS (SAMSUNG)
KSC_CM1_R EQU 2FFFH ; KS0108B_APPS (SAMSUNG)
KSC_CM2_R EQU 67FFH ; KS0108B_APPS (SAMSUNG)
KSC_DT1_W EQU 1FFFH ; KS0108B_APPS (SAMSUNG)
KSC_DT2_W EQU 57FFH ; KS0108B_APPS (SAMSUNG)
EPC_COM_W EQU 07FFH ; SED1520_APPS (EPSON)
EPC_COM_R EQU 27FFH ; SED1520_APPS (EPSON)
EPC_DAT_W EQU 17FFH ; SED1520_APPS (EPSON)
EPC_DT1_W EQU 57FFH ; SED1520_APPS (EPSON)
EPC_DT2_W EQU 1FFFH ; SED1520_APPS (EPSON)
TSC_COM_W EQU 0EFFFH ; T6963C_APPS (TOSHIBA)
TSC_DAT_W EQU 0CFFFH ; T6963C_APPS (TOSHIBA)
B16064C1W EQU 07FFH ; KS0108B_APPS : 16064B
B16064C2W EQU 0FFFH ; KS0108B_APPS : 16064B
B16064C3W EQU 47FFH ; KS0108B_APPS : 16064B
B16064C1R EQU 27FFH ; KS0108B_APPS : 16064B
B16064C2R EQU 2FFFH ; KS0108B_APPS : 16064B
B16064C3R EQU 67FFH ; KS0108B_APPS : 16064B
B16064D1W EQU 17FFH ; KS0108B_APPS : 16064B
B16064D2W EQU 1FFFH ; KS0108B_APPS : 16064B
B16064D3W EQU 57FFH ; KS0108B_APPS : 16064B
;----------------------------------------------------------
DW_ADP_I EQU 0C0H ; 16064A
DR_ADP_I EQU 0C1H ; 16064A
;****************************************************************************
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP E0_INT ; KEY
ORG 000BH
LJMP T0_INT ; TIME
; ORG 0013H
; LJMP E1_INT
ORG 001BH
LJMP T1_INT
; ORG 0023H
; LJMP SIO_INT
; ORG 002BH
; LJMP T2_INT
;--------------------------------------
ORG 0030H
MAIN:
MOV SAVEPRG,#0
MOV FLAG_SW,#0
MOV RUNFLAG,#0
MOV DISPFLG,#0
MOV SP,#50H
; MOV PSW,#00000000B
MOV TMOD,#00000001B
; MOV TCON,#00001100B
; MOV SCON,#
; MOV SMOD,#
MOV IE,#10000001B
MOV IP,#00000010B
MOV SYM,#0
MOV SECO,#0
MOV MINU,#0
MOV HOUR,#0
MOV P1,#0FFH
;----------------------------------------------------------
; Initialize Display Device
;----------------------------------------------------------
SETB ICS ; CS =1
SETB IWR ; WR =1
SETB IDA ; DATA=1
MOV DLYTIME,#1
LCALL DELAY
LCALL LOAD_SYSID
MOV R0,#CODERAM
MOV ST1,#12
LCALL SYS_SBIT
SETB ICS
INC R0
MOV ST1,#12
LCALL SYS_SBIT
SETB ICS
INC R0
MOV ST1,#12
LCALL SYS_SBIT
SETB ICS
INC R0
MOV ST1,#12
LCALL SYS_SBIT
SETB ICS
;--------------------------------------
MOV TL0,#11011100B
MOV TH0,#00001011B
SETB ET0
SETB EA
SETB TR0 ; TIMER0 Interrupt disanble
;--------------------------------------
LCALL LOAD_ADDR
MOV DT_REG1,#1
MOV DT_REG2,#0
MOV DT_REG3,#0
LCALL DIG_FMAT
ORL DGRAM2,#00100000B
LCALL SYS_DISP
MOV DLYTIME,#50
LCALL DELAY
; LCALL READ_FLASH
LCALL DISP_SEL
MOV DLYTIME,#75
LCALL DELAY
SETB SYS_INIT ; System initialization Finished
;--------------------------------------
ORG 0100H
TEP:
NOP
NOP
MOV SP,#50H
MOV A,#00H ; PC 7~1 --> 51H (SP)
PUSH ACC
MOV A,#01H ; PC 15~8 --> 52H (SP)
PUSH ACC
MOV TESTPRG,SAVEPRG
LCALL DISP_PRG
TEST_SEL:
ANL RUNFLAG,#11111111B
JNB SYS_WAIT,$
CLR TR1
CLR ET1
LCALL DISP_PRG
MOV DLYTIME,#25
LCALL DELAY
LCALL DISP_CLR
MOV DLYTIME,#2
LCALL DELAY
LCALL DISP_RUN
MOV A,TESTPRG ; TESTPRG = Flash data
ADD A,TESTPRG
ADD A,TESTPRG
MOV DPTR,#PROGTAB
JMP @A+DPTR ; A+DPTR -> PC
PROGTAB:
LJMP TEST_CHR0 ; HD44780,KS0066U ( Character ) ;0
LJMP TEST_GRA0 ; T6963C ( 240128 ) ;1
LJMP TEST_GRA1 ; T6963C ( 24066 ) ;2
LJMP TEST_GRA2 ; T6963C ( 24064 ) ;3
LJMP TEST_GRA3 ; T6963C ( 16064A ) ;4
LJMP TEST_GRA4 ; KS0108B ( 16064B ) ;5
LJMP TEST_GRA5 ; KS0108B ( 12864A ) ;6
LJMP TEST_GRA6 ; T6963C ( 12864B ) ;7
LJMP TEST_GRA7 ; SED1520F0A 18KHz (12232I) ;8
LJMP TEST_GRA8 ; SED1520FAA 2KHz (12232E) ;9
LJMP TEST_SEG0 ; HD44100 ( 1002 ) ;10
LJMP TEST_SEG1 ; HT1621 ( 1001 ) ;12
LJMP TEST_SEG2 ; HT1611 ( 090* ) ;13
;---------------------------------------------------------------
; Binary convert to Decimal
;---------------------------------------------------------------
BIN2DEC:
MOV A,TESTPRG
MOV B,#10
DIV AB
MOV DT_REG2,A
MOV DT_REG3,B
RET
;---------------------------------------------------------------
; Convert BIN to ASCII code and find & load Disp CHAR module
;---------------------------------------------------------------
DIG_FMAT:
MOV A,DT_REG1
CLR C
RLC A
MOV TEPOINT,A
LCALL DIGIT_1
MOV A,DT_REG2
CLR C
RLC A
MOV TEPOINT,A
LCALL DIGIT_2
MOV A,DT_REG3
CLR C
RLC A
MOV TEPOINT,A
LCALL DIGIT_3
RET
;---------------------------------------------------------------
; Display RAM data Format
;---------------------------------------------------------------
DIGIT_1:
MOV DPTR,#SYS_DCHR
MOV A,TEPOINT ; TEPOINT is CHR_TABLE pointer
MOVC A,@A+DPTR
MOV DGRAM1,A
INC TEPOINT
MOV A,TEPOINT
MOVC A,@A+DPTR
MOV DGRAM2,A
RET
DIGIT_2:
MOV DPTR,#SYS_DCHR
MOV A,TEPOINT
MOVC A,@A+DPTR
SWAP A
MOV DATAREG,A
ANL A,#00001111B
ADD A,DGRAM2
MOV DGRAM2,A
INC TEPOINT
MOV A,DATAREG
ANL A,#11110000B
MOV DATAREG,A
MOV A,TEPOINT
MOVC A,@A+DPTR
SWAP A
ADD A,DATAREG
MOV DGRAM3,A
RET
DIGIT_3:
MOV DPTR,#SYS_DCHR
MOV A,TEPOINT
MOVC A,@A+DPTR
MOV DGRAM4,A
INC TEPOINT
MOV A,TEPOINT
MOVC A,@A+DPTR
MOV DGRAM5,A
RET
;---------------------------------
DISP_PRG:
MOV DT_REG1,#19
LCALL BIN2DEC
LCALL DIG_FMAT
ORL DGRAM2,#00100000B
LCALL SYS_DISP
RET
DISP_RUN:
MOV DT_REG1,#20
MOV DT_REG2,#21
MOV DT_REG3,#22
LCALL DIG_FMAT
LCALL SYS_DISP
RET
DISP_SEL:
MOV DT_REG1,#5
MOV DT_REG2,#14
MOV DT_REG3,#23
LCALL DIG_FMAT
LCALL SYS_DISP
RET
DISP_ATH:
MOV DT_REG1,#23
MOV DT_REG2,#15
MOV DT_REG3,#24
LCALL DIG_FMAT
LCALL SYS_DISP
RET
DISP_CLR:
MOV DT_REG1,#16
MOV DT_REG2,#16
MOV DT_REG3,#16
LCALL DIG_FMAT
LCALL SYS_DISP
RET
;---------------------------------------------------------------
; Write Display Data to Display at Spacery address
;---------------------------------------------------------------
SYS_DISP:
MOV R0,#DISPADR
MOV ST1,#9
LCALL SYS_SBIT
MOV R0,#DISPRAM
MOV ST1,#36
LCALL SYS_SBIT
SETB ICS ; Reset Display, De-select Display
RET
;---------------------------------------------------------------
; Display Device Code and data BIT translate
;---------------------------------------------------------------
SYS_SBIT:
CLR ICS ; CHIP ENABLE
IDTW: MOV ST2,#8
MOV A,@R0
CLR C
IDW_CLK:
CLR IWR
RLC A
MOV IDA,C
NOP
SETB IWR
NOP
DJNZ ST1,ICONT
RET
ICONT: DJNZ ST2,IDW_CLK
INC R0
JMP IDTW
;--------------------------------------
LOAD_SYSID:
MOV LOOPREG,#8
MOV DPTR,#SYS_ID
MOV R0,#CODERAM
LOADSD: MOV A,#00
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ LOOPREG,LOADSD
RET
;----------------------------------------------------------
SYS_ID:
DB 10000000B ; 1 Byte
DB 00100000B ; Turn ON system oscillator
DB 10000011B ; 3 Byte
DB 00000000B ; On-chip RC oscillator
DB 10000100B ; 5 Byte
DB 10000000B ; 1/2 Bias, 1/3 Duty LCD type
DB 10000000B ; 7 Byte
DB 01100000B ; LCD ON
SYS_DCHR:
DB 01101010B ; 0
DB 11000000B
DB 00000000B ; 1
DB 11000000B
DB 00101110B ; 2
DB 10000000B
DB 00001110B ; 3
DB 11000000B
DB 01000100B ; 4
DB 11000000B
DB 01001110B ; 5
DB 01000000B
DB 01101110B ; 6
DB 01000000B
DB 00001000B ; 7
DB 11000000B
DB 01101110B ; 8
DB 11000000B
DB 01001110B ; 9
DB 11000000B
DB 01101100B ; A
DB 11000000B
DB 01100110B ; B
DB 01000000B
DB 00100110B ; C
DB 00000000B
DB 00100110B ; D
DB 11000000B
DB 01101110B ; E
DB 00000000B
DB 01101100B ; F
DB 00000000B
DB 00000000B ; EMPTY ; 16
DB 00000000B
DB 11101110B ; FULL ; 17
DB 11100000B
DB 00000100B ; - ; 18
DB 00000000B
DB 01101100B ; P ; 19
DB 10000000B
DB 01101000B ; R ; 20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -