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

📄 st7066.asm

📁 基于IC ST7066液晶驱动显示程序
💻 ASM
字号:
;----------------------------------------
;Module name	:ZCV4162B&D&E&F.asm
;Date		:08 JUN 05
;----------------------------------------
RS		EQU	P1.0
RW		EQU	P1.1
E		EQU	P1.2
DATA_IO		EQU	P3

;R5,R6		:Delay
;R2		:CGRAM and DDRAM
;R3		:Display Screen
;----------------------------------------
		ORG	0000H
		JMP	START
		ORG	0100H

START:		MOV	SP,#4FH
		MOV	TMOD,#00H
		MOV	IE,#00H
		CALL	T0_SET
		CALL	T1_SET
		ANL	PCON,#01111110B
		SETB	PT0
		SETB	TR0
		SETB	EA
		
MAIN:		CALL	HWINIT
		CALL	INIT_IC

		MOV	DPTR,#CGTAB1
		CALL	W_CG
		MOV	DPTR,#DAT_0	;CGRAM
		CALL	DISPLAY
		ACALL	DELAY

		CALL	CLEAR
		MOV	DPTR,#CGTAB2
		CALL	W_CG
		MOV	DPTR,#DAT_1	;Full Display
		CALL	DISPLAY
		MOV	R5,#70		;3.5s
		LCALL	DELAY_L

		MOV	R3,#5
		MOV	DPTR,#DAT_2	;CGROM
LOOP1:		CALL	DISPLAY
		ACALL	DELAY
		DJNZ	R3,LOOP1
		
		CALL	CLEAR
		MOV	DPTR,#DAT_7
		MOV	R2,#16		;Cycle Times
		MOV	A,#10000000B
		CALL	W_CMD
SCR1:		CLR	A
		MOVC	A,@A+DPTR
		CALL	W_DAT
		MOV	R6,#7FH		;Delay
		CALL	DELAY_S
		INC	DPTR
		DJNZ	R2,SCR1
		
		MOV	R2,#16
		MOV	A,#11000000B
		CALL	W_CMD
SCR2:		CLR	A
		MOVC	A,@A+DPTR
		CALL	W_DAT
		MOV	R6,#7FH
		CALL	DELAY_S
		INC	DPTR
		DJNZ	R2,SCR2
		MOV	R5,#60
		CALL	DELAY_L

		LJMP	MAIN
;==========================================================		
INIT_IC:	MOV	R6,#100		;Power On,Wait For More Than 30ms
		CALL	DELAY_S

		MOV	A,#30H
		ACALL	W_CMD
		MOV	R6,#10		;Wait Time > 4.1ms
		CALL	DELAY_S

		MOV	A,#30H
		ACALL	W_CMD
		MOV	R6,#1		;Wait Time > 100us
		CALL	DELAY_S

		MOV	A,#00110000B
		CALL	W_CMD

		MOV	A,#00111000B	;Two Line Display
		CALL	W_CMD

		MOV	A,#08H		;Display Off
		CALL	W_CMD

		CALL	CLEAR		;Clear

		MOV	A,#00000110B	;Cursor Increase "1"
		CALL	W_CMD

		MOV	A,#00001110B	;Display On/Cursor On
		CALL	W_CMD

CLEAR:		MOV	A,#01H		;Clear
		CALL	W_CMD
		RET
;==========================================================
DISPLAY:	;MOV	A,#00111000B	;Two Line Display
		;CALL	W_CMD
		MOV	A,#10000000B	;Set Line1 Address
		CALL	W_CMD
		CALL	DISP

		;MOV	A,#00111000B	;Two Line Display
		;CALL	W_CMD
		MOV	A,#11000000B	;Set Line2 Address
		CALL	W_CMD
		CALL	DISP
		RET
;==========================================================
W_CG:		MOV	A,#01000000B	;Set CGRAM Address
		CALL	W_CMD
		MOV	R2,#64
CG_LOOP:	CLR	A
		MOVC	A,@A+DPTR
		CALL	W_DAT
		INC	DPTR
		DJNZ	R2,CG_LOOP
		RET
CGTAB1:
DB	00EH,011H,013H,015H,015H,019H,011H,00EH	;0
DB	004H,00CH,004H,004H,004H,004H,004H,00EH	;1
DB	00EH,011H,001H,002H,004H,008H,010H,01FH	;2
DB	01FH,002H,004H,002H,001H,001H,011H,00EH	;3
DB	002H,006H,00AH,012H,012H,01FH,002H,002H	;4
DB	01FH,010H,010H,01EH,001H,001H,011H,00EH	;5
DB	006H,008H,010H,01EH,011H,011H,011H,00EH	;6
DB	01FH,001H,002H,002H,004H,004H,008H,008H	;7
CGTAB2:
DB	01FH,01FH,01FH,01FH,01FH,01FH,01FH,01FH	
;DB	000H,000H,000H,000H,000H,000H,000H,000H	
;==========================================================
DISP:		MOV	R2,#16		;20 Chars
DIS_LOOP:	CLR	A
		MOVC	A,@A+DPTR
		CALL	W_DAT
		INC	DPTR
		DJNZ	R2,DIS_LOOP
		RET
;----------------------------------------------------------
W_CMD:		CLR	RS		;RS=0,Command Register
		CLR	RW		;R/W=0,Write
		MOV	DATA_IO,A
		CALL	LCM_E		;Generate E Pulse
		MOV	R6,#03H
		CALL	DELAY_S
		RET
;----------------------------------------------------------
W_DAT:		SETB	RS		;RS=1,Data Register
		CLR	RW		;R/W=0,write
		MOV	DATA_IO,A
		CALL	LCM_E
		MOV	R6,#03H
		CALL	DELAY_S
		RET
;----------------------------------------------------------
LCM_E:		SETB	E
		NOP
		NOP
		CLR	E
		NOP
		NOP
		RET
;--------------------------------------------------------
DELAY:		MOV	R5,#40
DELAY_L:	MOV	TH1,#03CH	;50ms*R5
		MOV	TL1,#0B0H
		SETB	TR1
DL_LOOP1:	JBC	TF1,DL_LOOP2
		SJMP	DL_LOOP1
DL_LOOP2:	DJNZ	R5,DELAY_L
		CLR	TR1
		RET
;--------------------------------------------------------
DELAY_S:	MOV	TH1,#0FCH	;1ms*R6
		MOV	TL1,#18H
		SETB	TR1
DS_LOOP1:	JBC	TF1,DS_LOOP2
		SJMP	DS_LOOP1
DS_LOOP2:	DJNZ	R6,DELAY_S
		CLR	TR1
		RET
;--------------------------------------------------------
T0_SET:		ORL	TMOD,#01H
		MOV	TH0,#0FCH
		MOV	TL0,#18H
		ORL	IE,#02H
		RET
;--------------------------------------------------------
T1_SET:		ORL	TMOD,#10H
		RET
;--------------------------------------------------------
; HARDWARE INITIALIZAION
;--------------------------------------------------------
HWINIT:		CLR	A
		MOV	DATA_IO,A
		MOV	P3,A
		SETB	RS
		SETB	RW
		RET
;--------------------------------------------------------
DAT_0:	DB	000H,000H,001H,001H,002H,002H,003H,003H,004H,004H,005H,005H,006H,006H,007H,007H
        DB  000H,000H,001H,001H,002H,002H,003H,003H,004H,004H,005H,005H,006H,006H,007H,007H
DAT_1:	DB	000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
	    DB	000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DAT_7:	DB  059H,059H,05AH,05AH,03DH,03DH,0A4H,0A4H,0A5H,0A5H,0A6H,0A6H,0A7H,0A7H,0A8H,0A8H
        DB  059H,059H,05AH,05AH,03DH,03DH,0A4H,0A4H,0A5H,0A5H,0A6H,0A6H,0A7H,0A7H,0A8H,0A8H
DAT_2:	DB	'////////////////'
    	DB	'////////////////'
DAT_3:	DB	'1122334455667788'
     	DB	'1122334455667788'
DAT_4:	DB	'AABBCCDDEEFFGGHH'
	    DB	'AABBCCDDEEFFGGHH'
DAT_5:	DB	'IIJJKKLLMMNNOOPP'
    	DB	'IIJJKKLLMMNNOOPP'
DAT_6:	DB	'QQRRSSTTUUVVWWXX'
     	DB	'QQRRSSTTUUVVWWXX'

;--------------------------------------------------------
		END

⌨️ 快捷键说明

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