lcd8bit2.asm

来自「Library for the 8051 microcontroller. s」· 汇编 代码 · 共 118 行

ASM
118
字号

;-----------------------LCD 8-bit--------------------------
;LCD Connections to microcontroller
E		EQU	P2.0		; PIN 6 enable
RS 		EQU	P2.1		; /register select

DATANE		EQU	P0		; data lines
;----------------------------------------------------------
ORG 0000H
	JMP on_reset
;----------------------------------------------------------
ORG 00FFH
on_reset:	
		MOV DPTR,#init_data
		CALL disp_init
		
		MOV DPTR,#message1
		CALL disp_string
		
		CALL disp_line2
		
		MOV DPTR,#message2
		CALL disp_string

ENDLESS:
		JMP ENDLESS	
;----------------------------------------------------------
; display char in A
disp_char:
		SETB RS			; desable register select
		MOV DATANE,A
		SETB E			; give E pulse
		ACALL delay_data
		CLR E
		ACALL delay_data
RET
;----------------------------------------------------------
; used registers A,R1,R7
disp_string:
		MOV A,#00H
		MOV R1,#00h
next_char:
		INC R1			
		MOVC A,@A+DPTR
			MOV DATANE,A
			ACALL disp_char
			MOV A,R0
		CJNE R1,#0Fh,next_char			
RET
;----------------------------------------------------------
; used registers A,R1,R7
disp_init:
		CLR RS			; enable /register select
		MOV A,#00H
		MOV R1,#00h
next_chari:
		INC R1			
		MOVC A,@A+DPTR
			MOV DATANE,A
			SETB E		; give E pulse
			ACALL delay_init
			CLR E
			ACALL delay_init
			MOV A,R0
		CJNE R1,#02h,next_chari	
		

RET
;----------------------------------------------------------
disp_line1:
		CLR RS			; register select
		MOV DATANE,#80H		; first line address
		SETB E			; give E pulse
		ACALL delay_init
		CLR E
		ACALL delay_init
RET
;----------------------------------------------------------
disp_line2:
		CLR RS			; register select	
		MOV DATANE,#0A8H		; next line address
		SETB E			; give E pulse
		ACALL delay_init
		CLR E
		ACALL delay_init
RET
;----------------------------------------------------------
;2 msec delay
delay_data:
		MOV R7,#0FFH
del:		NOP
		NOP
		DJNZ R7, del	
RET
;----------------------------------------------------------
;20 msec delay
delay_init:
		MOV R7,#0FFH
del1:		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		DJNZ R7, del1	

RET
;----------------------------------------------------------
message1:
DB "Testing 123.... "
message2:
DB "It's working    "
init_data:
DB 0FH ; Display On, Cursor On,Cursor Blink On(1)/Off(0)
DB 01H ; Clear Display
DB 38H ; Set Interface Length
END

⌨️ 快捷键说明

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