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

📄 320240text5.asm

📁 液晶显示器LCM320240驱动程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	CLR	C
	SUBB	A, #55
	JC	KEY2_OK
	MOV	A, 30H
	CLR	C
	SUBB	A, #200
	JC	WAIT_UP
	AJMP	KEY1_OK

KEY1_OK:
	POP	DPH
	POP	DPL
	CLR     LED1
	SETB    00H  ;
	/*POP	41H
	POP	40H
	MOV	A, 40H
	ADD	A, #0BEH
	MOV	40H, A
	MOV	DPL, A
	MOV	A, 41H
	ADDC	A, #25H	                                    ;第一到第六幅画面数据区的首地址之间的差是25BE
	MOV	41H, A
	MOV	DPH, A
	CLR	A
	MOVC	A, @A+DPTR
	CJNE	A, #42H, START1	                            ;
	AJMP	NEXT_SCREEN*/
;START1:	LJMP	START
        LJMP	NEXT_SCREEN
KEY2_OK:
	POP	DPH
	POP	DPL
	CLR     LED2
	CLR     00H  ;
	/*POP	41H
	POP	40H
	MOV	A, 40H
	CLR	C
	SUBB	A, #0BEH
	MOV	40H, A
	MOV	DPL, A
	MOV	A, 41H
	SUBB	A, #25H
	MOV	41H, A
	MOV	DPH, A
	CLR	A
	MOVC	A, @A+DPTR
	CJNE	A, #42H, START1
	AJMP	NEXT_SCREEN  
	*/
        LJMP	NEXT_SCREEN
;************************************************
DEL_20MS:
	MOV	R7, #30
DL2:
	MOV	R6, #200
DL1:
	NOP
	NOP
	NOP
	DJNZ	R6, DL1
	DJNZ	R7, DL2
	RET
;************************************************
GET_ADR:
	PUSH	DPL
	PUSH	DPH
	MOV	A, Y_V
	MOV	B, #40	      ;320=40×8,每一行40 个地址单元
	MUL	AB
	MOV	DPL, A
	MOV	DPH, B
	MOV	A, XH_V
	MOV	B, #32	      ;高位×256 为它的实际值,32=256÷8
	MUL	AB
	ADD	A, DPL
	MOV	DPL, A
	MOV	A, DPH
	ADDC	A, B
	MOV	DPH, A
	MOV	A, X_V
	MOV	B, #8
	DIV	AB
	MOV	TEMP, B
	ADD	A, DPL
	MOV	X_V, A	      ;此时X_V 中存的已经是低位地址
	MOV	TEMP3, A
	MOV	A, DPH
	ADDC	A, #0
	MOV	XH_V, A	      ;存高位地址
	MOV	TEMP4, A
	MOV	DPTR, #COM
	MOV	A, #46H	      ;光标地址归设置
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, X_V
	MOVX	@DPTR, A
	MOV	A, XH_V
	MOVX	@DPTR, A
	MOV	DPTR, #COM
	MOV	A, #42H	      ;开始写数据
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	RET
;************************************************
DISP_KEY:              ;键显示
	LCALL	GET_ADR
	MOV	R7, #32	    ;32 行
N_LINE:
	MOV	R6, #4
N_BWR:
	MOV	A, #00H	    ;4×8=32 列
	MOVC	A, @A+DPTR
	INC	DPTR
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR, #DAT
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	DJNZ	R6, N_BWR   ;至此写完32×32 地址的一行
	PUSH	DPL
	PUSH	DPH
	MOV	A, TEMP3
	ADD	A, #40	    ;转到下一行起始地址
	MOV	TEMP3, A
	MOV	X_V, A
	MOV	A, TEMP4
	ADDC	A, #0	                                    ;
	MOV	XH_V, A
	MOV	TEMP4, A
	MOV	DPTR, #COM
	MOV	A, #46H	    ;重新载入地址
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, X_V
	MOVX	@DPTR, A
	MOV	A, XH_V
	MOVX	@DPTR, A
	MOV	DPTR, #COM   ;写入数据
	MOV	A, #42H
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	DJNZ	R7, N_LINE
	RET
;************************************************
;************************************************
DISP_HZ:                  ;汉字显示
	LCALL	GET_ADR
	MOV	R7, #16	   ;16 行
N_LINE2:
	MOV	R6, #2
N_BWR2:
	MOV	A, #00H	    ;2×8=16 列
	MOVC	A, @A+DPTR
	INC	DPTR
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR, #DAT
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	DJNZ	R6, N_BWR2   ;至此写完16×16地址的一行
	PUSH	DPL
	PUSH	DPH

	MOV	A, TEMP3
	ADD	A, #40	     ;转到下一行起始地址
	MOV	TEMP3, A
	MOV	X_V, A
	MOV	A, TEMP4
	ADDC	A, #0	                                    ;
	MOV	XH_V, A
	MOV	TEMP4, A
	MOV	DPTR, #COM
	MOV	A, #46H	     ;重新载入地址
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, X_V
	MOVX	@DPTR, A
	MOV	A, XH_V
	MOVX	@DPTR, A
	MOV	DPTR, #COM   ;写入数据
	MOV	A, #42H
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	DJNZ	R7, N_LINE2
	RET
ST_ADD:
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR, #COM   ;命令地址
	MOV	A, #46H	     ;光标地址设置为0
	MOVX	@DPTR, A
	MOV	DPTR, #DAT   ;数据地址
	MOV	A, #0
	MOVX	@DPTR, A
	MOV	A, #0
	MOVX	@DPTR, A
	MOV	DPTR, #COM   ;命令地址
	MOV	A, #42H	     ;开始写数据
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	RET
;************************************************
SCREEN:                  ;全屏幕显示
	;MOV	DPL, 40H
	;MOV	DPH, 41H
	LCALL	ST_ADD
	MOV	R6, #240
READ2:
	MOV	R7, #40
READ1:
	MOV	A, #01H
	MOVC	A, @A+DPTR
	INC	DPTR
	PUSH	DPL
	PUSH	DPH
	MOV	DPTR, #DAT
	MOV     A,#0FFH                             
	MOVX	@DPTR, A
	POP	DPH
	POP	DPL
	DJNZ	R7, READ1
	DJNZ	R6, READ2
	RET
;************************************************
DEL:	MOV	R7, #20
DD1:	MOV	R6, #100D
DD2:	MOV	R5, #200D
DD3:	NOP
	NOP
	NOP
	DJNZ	R5, DD3
	DJNZ	R6, DD2
	DJNZ	R7, DD1
	RET
	;*****************************************
DEL_K:
	MOV	R7, #20
D_D1:	MOV	R6, #100D
D_D2:	MOV	R5, #200D
D_D3:
	JNB	P1.5, $
	NOP
	NOP
	DJNZ	R5, D_D3
	DJNZ	R6, D_D2
	DJNZ	R7, D_D1
	RET
	;****************************************
INTI:
INTI_LCD:
	MOV	DPTR, #COM
	MOV	A, #40H	        ;初始化设置
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, #30H	        ;参数1,无边界,单屏,内部CGROM+CGRAM1(8×8 地点阵)
	MOVX	@DPTR, A
	MOV	A, #87H	        ;参数2,WF 每一帧翻转一次,字体宽度为8
	MOVX	@DPTR, A
	MOV	A, #07H	        ;参数3,字体高度为8
	MOVX	@DPTR, A
	MOV	A, #39D	        ;参数4,40 字节,对应320SEG
	MOVX	@DPTR, A
	MOV	A, #44H	        ;参数5,驱动频率的时间常数为68  ;;
	MOVX	@DPTR, A
	MOV	A, #239D	;参数6,扫描驱动的帧参数,扫描240 行
	MOVX	@DPTR, A
	MOV	A, #40D	        ;参数7,8,一个显示行分配40 个字节存储单元
	MOVX	@DPTR, A
	MOV	A, #0
	MOVX	@DPTR, A
	MOV	DPTR, #COM
	MOV	A, #44H	        ;显示域设置
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, #SD1L	;参数1,送入显示1 区地址低8 位
	MOVX	@DPTR, A
	MOV	A, #SD1H	;参数2,送入显示1 区地址高8 位
	MOVX	@DPTR, A
	MOV	A, #240D	;参数3,显示1 区所控制显示屏上的行数为240 行
	MOVX	@DPTR, A
	MOV	A, #SD2L	;参数4,送入显示2 区地址低8 位
	MOVX	@DPTR, A
	MOV	A, #SD2H	;参数5,送入显示2 区地址高8 位
	MOVX	@DPTR, A
	MOV	A, #240D	;参数6,显示2 区所控制显示屏上的行数为240 行
	MOVX	@DPTR, A
	MOV	A, #SD3L	;参数7,送入显示3 区地址高8 位
	MOVX	@DPTR, A
	MOV	A, #SD3H	;参数8,送入显示3 区地址高8 位
	MOVX	@DPTR, A
	MOV	DPTR, #COM
	MOV	A, #5AH	        ;点位移设置
	MOVX	@DPTR, A
	MOV	DPTR, #DAT
	MOV	A, #0
	MOVX	@DPTR, A
	MOV	DPTR, #COM
	MOV	A, #4CH	        ;光标形状设置

⌨️ 快捷键说明

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