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

📄 tlcm101.asm

📁 lcm测试程序,对LCM设计者有帮助,希望大家能用上.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;--------------------------------------------------------------------
; 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 + -