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

📄 lcd display.asm

📁 这是一个PIC单片机的控制LCD1602液晶显示屏显示的汇编程序
💻 ASM
字号:
;/////////// *************** \\\\\\\\\\\\\
;/////////AHTHOR:Q.P.LIU\\\\\\\\\\\\\\\\\\\
;////////DATA:2007.08.02\\\\\\\\\\\\\\\\\\\\\
;/////////****************** \\\\\\\\\\\\        	
                PROCESSOR 16F74
		INCLUDE "E:\COMMON\P16F74.INC"
__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
CBLOCK	20H
DELAY0
DELAY1	
DELAY2	
TMPW	
CHAR	
END_TMPW
TMPW1	
TMPW2
ENDC
#DEFINE RD PORTD
#DEFINE RB PORTB
LCD_DATA	EQU	RD	;PORTD AS LCD DATA INTERFACE	
LCD_CMD	EQU	RB	;PORTB AS LCD COMMAND INTERFACE
EN		EQU	2	;RE,2  AS ENABLE line
RW		EQU	1	;RE,1  AS Read/Write control line
RS		EQU	0	;RE,0  AS Register-Select control line
;------------------------------PROGRAM RESET VECTOR
	ORG	00H
  	GOTO	START 
START: 
        NOP
	NOP
	CALL	PIC_INIT
	NOP
	NOP
	CALL	LCD_DELAY
	NOP
	NOP
	CALL	LCD_INIT	
	NOP
	NOP
	CALL	LCD_DELAY
	NOP
	NOP
STEP1:
ABOUT_LINE1:
	MOVLW	B'10000000'	;SET DD RAM(LINE1)
	CALL	SEND_CMD
	CLRW
DISP11:
	MOVWF	TMPW1
	BSF	PCLATH,3	
	CALL	TEXT1		;DISPLAY LINE 1
	BCF	PCLATH,3
	MOVWF	END_TMPW
	SUBLW	'@'
	BTFSC	STATUS,Z
	GOTO	ABOUT_LINE12
	MOVF	END_TMPW,W
	CALL	SEND_CHAR
	MOVF	TMPW1,W
	ADDLW	.1
	GOTO	DISP11
ABOUT_LINE12:
	MOVLW	B'11000000'
	CALL	SEND_CMD	;LINE2
	CLRW
DISP12:
	MOVWF	TMPW2
	BSF	PCLATH,3
	CALL	TEXT2		;DISPLAY LINE 2
	BCF	PCLATH,3
	MOVWF	END_TMPW
	SUBLW	'@'
	BTFSC	STATUS,Z
	GOTO	STEP2
	MOVF	END_TMPW,W
	CALL	SEND_CHAR
	MOVF	TMPW2,W
	ADDLW	.1
	GOTO	DISP12 
STEP2:
        GOTO   STEP1
PIC_INIT:
              CLRF    STATUS
              CLRF     INTCON
              CLRF     PIR1
              CLRF     PIR2
              BSF       STATUS,RP0
              CLRF     TRISD
              CLRF     TRISB
              MOVLW B'10001001'
              MOVWF  OPTION_REG
              BCF       STATUS,RP0
              MOVLW B'00000100'            ;THIS IS A KEY STEP.
              MOVWF ADCON1
              CLRF     PORTD
              CLRF     PORTB
              BCF	      STATUS,RP0
              CLRF	TMPW
              CLRF	TMPW1
              CLRF	TMPW2
              CLRF	END_TMPW 
              CLRF	CHAR        
              RETURN
LCD_INIT:
	CALL	LCD_DELAY
	CALL	LCD_DELAY	
	CLRF	LCD_CMD
	MOVLW	B'00111000'
	MOVWF	LCD_DATA
	BSF	LCD_CMD,EN
	BCF	LCD_CMD,EN
	CALL	LCD_DELAY
;----COMMAND SEQUENCE FOR 2 LINES OF 5x7 DOTS (FUNCTION)
	MOVLW	38H
	MOVWF	LCD_DATA
	BSF	LCD_CMD,EN
	BCF	LCD_CMD,EN
;----THE OTHERS(display on/off, clear display, entry mode, 
	MOVLW	B'00001100'	; ON, NOT DISPLAY CURSOR, THE CHARACTER THAT CURSOR BELOW NOT FLASH
	CALL	SEND_CMD
	MOVLW	B'00000001'	;CLEAR DISPLAY
	CALL	SEND_CMD
	MOVLW	B'00000110'	;ENTRY MODE
	CALL	SEND_CMD	
	RETURN 
;############# LCD Busy Check 
BUSY_CHECK:
	BSF	STATUS,RP0	;
	MOVLW	0FFH		;
	MOVWF	TRISD		;set RD as input
	BCF	STATUS,RP0	;
	BCF	LCD_CMD,RS	;LCD in command mode
	BSF	LCD_CMD,RW	;LCD in read mode
	BSF	LCD_CMD,EN	;\
	BCF	LCD_CMD,EN	;/ LCD trigger
	MOVF	LCD_DATA,W	;
	MOVWF	TMPW		;
	BTFSC	TMPW,7		;test busy flag
	GOTO	BUSY_CHECK	; busy	
	BCF	LCD_CMD,RW
BSF	STATUS,RP0	;\
	CLRF	TRISD		; \ LCD not busy; / Set RD as output	
	BCF	STATUS,RP0	;/
	RETURN



;############# SEND COMMAND TO LCD 
SEND_CMD:
	MOVWF	CHAR
	CALL	BUSY_CHECK	;
	MOVF	CHAR,W		;  
	MOVWF	LCD_DATA	; 
	BCF	LCD_CMD,RW	;WRITE
	BCF	LCD_CMD,RS	;COMMAND MODE
	BSF	LCD_CMD,EN	;\
	BCF	LCD_CMD,EN	;/ LCD Trigger
	RETURN
;############# SEND CHARACTER TO LCD
SEND_CHAR:
	MOVWF	CHAR
	CALL	BUSY_CHECK	;
	MOVF	CHAR,W
	MOVWF	LCD_DATA	; 
	BCF	LCD_CMD,RW	;WRITE
	BSF	LCD_CMD,RS	;DATA MODE
	BSF	LCD_CMD,EN	;\
	BCF	LCD_CMD,EN	;/ LCD Trigger
	RETURN 
;----------------------- LCD'S DELAY : 5.4ms
LCD_DELAY:
	MOVLW	0XFF
	MOVWF	DELAY1
	MOVWF	DELAY0 
LCD_DELAY_LOOP:
	DECFSZ	DELAY0,F
	GOTO	        LCD_DELAY_LOOP
	DECFSZ	DELAY1,F
	GOTO	        LCD_DELAY_LOOP		
	RETURN
ORG    0X800
TEXT1
             ADDWF   PCL,F
            DT"YOU ARE ONLY ONE IN@"           
ORG    820H
TEXT2
        ADDWF	        PCL,F
	DT"THE WORLD!Q.P.LIU@"
 END

⌨️ 快捷键说明

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