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

📄 hz240128.asm

📁 240128液晶程序
💻 ASM
字号:
;                    SMG240128接口程序(MCS51总线方式)
;***************************************************************************
;*  Title : Accessing to LCD-CONTROLLER                                    *
;*  Date :  2000.4.27                                                      *
;*  Support telephone:  0731-4167806,4167808(CHANGSHA SUNMAN)              *
;*  Support fax :0731-4167807  Support E-mail:www@sunman.cn                *
;*  Create by :褚建军(chujianjun),朱长春(zhuchangchun)                     *
;*  DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER  *
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031*
;        *DB0---P0.0* *DB4---P0.4* *C/D-------------P2.0* */RD---------P3.7*
;        *DB1---P0.1* *DB5---P0.5* *CE--------------P2.1* 
;        *DB2---P0.2* *DB6---P0.6* */RW-------------P3.6
;        *DB3---P0.3* *DB7---P0.7* */RST------------VDD       (详见说明书)
;注:8031的晶振频率为12MHz
;**************************************************************************
XPOS    EQU     20H             ;列方向地址指针(用于LCDPOS子程序)
YPOS    EQU     21H             ;行方向地址指针(用于LCDPOS子程序)
;CEPIN		P2.1
;C/DPIN		P2.0		0:DATA 	1:COMMAND
CADDR	EQU	0100H
DADDR	EQU	0000H

        ORG     0000H
        JMP     START
START:  MOV     SP,#60H
MAIN:        
        CALL    LCDRESET
        MOV     A,#55H
        CALL    LCDFILL
        MOV	DPTR,#STRING1
        CALL	PUTSTR
        CALL	PUTSTR
        JMP     START 
DELAY400MS:
        MOV     R0,#20              ;延时子程序(400MS)
DL4_PA: MOV     R1,#100
DL4_PB: MOV     R2,#100
        DJNZ    R2,$
        DJNZ    R1,DL4_PB
        DJNZ    R0,DL4_PA
        RET
DELAY:
	MOV	R6,#2
DLY_PA:	MOV	R5,#0
DLY_PB:	MOV	R4,#0
	DJNZ	R4,$
	DJNZ	R5,DLY_PB
	DJNZ	R6,DLY_PA
	RET        
GETSTRCHAR:        
GSC_PA:	
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	MOV	B,A
	INC	A
	CLR	C
	JZ	GSC_LAX
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	SETB	C
GSC_LAX:	
	RET
PUTSTR:
	CALL	DELAY
	CALL	GETSTRCHAR
	PUSH	DPL
	PUSH	DPH
	JNC	PSR_LAX
	JNB	B.7,PSR_LBY
;CHINESE:
	CALL	HZKPOS
	CALL	PUTCHARDOT
	CALL	PUTCHARDOT
	JMP	PSR_LBX
PSR_LBY:
;ENGLISH:
	CALL	HZKPOS
	CALL	PUTCHARDOT
PSR_LBX:
	POP	DPH
	POP	DPL
	JMP	PUTSTR
PSR_LAX:POP	DPH
	POP	DPL	
	RET
PUTCHARDOT:
	MOV	R7,#16
PAC_PA:
	CLR	A
	MOVC	A,@A+DPTR
	CALL	LCDWRITE
	INC	YPOS
	INC	DPTR
	DJNZ	R7,PAC_PA
	CLR	C
	MOV	A,XPOS
	SUBB	A,#29
	JNZ	PAC_LAY
	MOV	XPOS,#0
	JMP	PAC_LAX
PAC_LAY:INC	XPOS	
	CLR	C
	MOV	A,YPOS
	SUBB	A,#16
        MOV	YPOS,A
PAC_LAX:	
	RET
HZKPOS:
	MOV	R2,#5
HTP_PA:	
	CLR	C
	RLC	A
	XCH	A,B
	RLC	A
	XCH	A,B
	DJNZ	R2,HTP_PA
	
	MOV	DPTR,#HZKDOT
	ADD	A,DPL
	MOV	DPL,A
	MOV	A,B
	ADDC	A,DPH
	MOV	DPH,A
	RET	
LCDFILL:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        CALL    LCDWRITE        ;定位并写数据
        CALL    CUSORNEXT
        MOV     A,XPOS
        JNZ     LFL_PA          ;XPOS<128则循环(128列)
        MOV     A,YPOS
        JNZ     LFL_PB          ;YPOS<8则循环(8页)
        RET
DEMO:
	MOV	XPOS,#0
	MOV	YPOS,#0
	MOV	R7,#128
DMO_PB:	
	MOV	R6,#30
DMO_PA:	
	CLR	A
	MOVC	A,@A+DPTR
	CALL	LCDWRITE
	CALL	NEXTADDR
	INC	DPTR
	DJNZ	R6,DMO_PA
	DJNZ	R7,DMO_PB
	RET
NEXTADDR:
	INC	XPOS
	MOV	A,XPOS
	CJNE	A,#30,NTL_LAX
	MOV	XPOS,#0
	INC	YPOS
	ANL	YPOS,#7FH
NTL_LAX:	
	RET	
LCDWRITE:                    ;定位并写数据子程序
        CALL    LCDPOS       ;内部写数指针定位
        CALL    LCDWDATA        ;写数据
        RET

CUSORNEXT:
	INC	XPOS
	MOV	A,XPOS
	CJNE	A,#30,NTR_LAX
	MOV	XPOS,#0
	INC	YPOS
	ANL	YPOS,#7FH
NTR_LAX:	
	RET	
LCDPOS:
	PUSH	ACC
	PUSH	B
	MOV	A,YPOS		;R2R3=30*YPOS+XPOS
	MOV	B,#30
	MUL	AB
	ADD	A,XPOS
	MOV	R2,A
	MOV	A,B
	ADDC	A,#0
	MOV	R3,A
   	MOV	A,#24H
   	CALL	LCDWC3
   	POP	B
   	POP	ACC
   	RET	
LCDWDATA:                         ;WRITE DATA(ADDRESS+1) 
	PUSH	ACC
	MOV	R2,A
	MOV	A,#0C0H
	CALL	LCDWC2
	POP	ACC
	RET   	
LCDRESET:  
	MOV	A,#80H                ;OR MODE
	CALL	LCDWC
 	MOV     A,#98H                ;GRAPHICS MODE
	CALL    LCDWC
	MOV     R2,#00H               
	MOV     R3,#00H
	MOV     A,#42H
	CALL    LCDWC3 
	MOV     R2,#30      
	MOV     R3,#00H
	MOV     A,#43H
	CALL    LCDWC3 
	RET
LCDREAD:
	CALL	LCDPOS
	CALL	LCDRDATA
	RET
LCDRDATA:
	MOV	A,#0C1H
	CALL	LCDWC
	CALL	LCDRD
	RET	
LCDWBIT:
	ORL	A,#0F0H
	MOV	ACC.3,C
	CALL	LCDWC
	RET	
WTI_PB:
	NOP
	JMP	WTI_PA

WAITIDLE:
	PUSH	ACC
WTI_PA:	CALL	LCDRC
	JNB	ACC.0,WTI_PB
	JNB	ACC.1,WTI_PB
	POP	ACC
	RET	
WAITAIDLE:
	PUSH	ACC
WTW_PA:	CALL	LCDRC
	JNB	ACC.2,WTW_PA
	JNB	ACC.3,WTW_PA
	POP	ACC
	RET	
LCDWC3:	PUSH	ACC
	MOV	A,R2
	CALL	LCDWD
	MOV	A,R3
	CALL	LCDWD
	POP	ACC
	CALL	LCDWC
	RET
LCDWC2:	PUSH	ACC
	MOV	A,R2
	CALL	LCDWD
	POP	ACC
	CALL	LCDWC
	RET
LCDWC:	CALL	WAITIDLE
	PUSH	DPH
	PUSH	DPL
	MOV	DPTR,#CADDR
	MOVX	@DPTR,A
	POP	DPL
	POP	DPH
	RET	
LCDWD:	CALL	WAITIDLE
	PUSH	DPH
	 PUSH	DPL
	MOV	DPTR,#DADDR
	MOVX	@DPTR,A
	POP	DPL
	POP	DPH
	RET	
LCDRC:	
	PUSH	DPH
	PUSH	DPL
	MOV	DPTR,#CADDR
	MOVX	A,@DPTR
	POP	DPL
	POP	DPH
	RET      
LCDRD:	CALL	WAITIDLE
	PUSH	DPH
	PUSH	DPL
	MOV	DPTR,#DADDR
	MOVX	A,@DPTR
	POP	DPL
	POP	DPH
	RET	
SDELAY:	
SDLY_PA:	
	MOV	R5,#30
SDLY_PB:	
	MOV	R4,#100
	DJNZ	R4,$
	DJNZ	R5,SDLY_PB
	DJNZ	R6,SDLY_PA
	RET        

HZKDOT:	
	INCLUDE "HZKLIB.ASM"
	INCLUDE "HZKSTR.ASM"
        END



⌨️ 快捷键说明

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