100% found this document useful (2 votes)
211 views

LCD Interfacing With PIC Microcontroller

This program displays the text "Institute of space technology" on an LCD screen connected to a PIC microcontroller. It initializes the LCD into 4-bit mode and 2 line display. It then uses subroutines to send command and character data to the LCD. Characters are displayed on the first and second line by setting the appropriate address and sending each character value. The program continuously runs this display in a loop.

Uploaded by

Eysha qureshi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
211 views

LCD Interfacing With PIC Microcontroller

This program displays the text "Institute of space technology" on an LCD screen connected to a PIC microcontroller. It initializes the LCD into 4-bit mode and 2 line display. It then uses subroutines to send command and character data to the LCD. Characters are displayed on the first and second line by setting the appropriate address and sending each character value. The program continuously runs this display in a loop.

Uploaded by

Eysha qureshi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

LCD Interfacing with PIC Microcontroller

Task-1

write a program that will display ‘Institute of space technology’ on LCD.

Code:

;EQUATESECTION
TRISB EQU 86H
PORTB EQU 06H
TRISD EQU 88H
PORTD EQU 08H

COUNT1 EQU 22H


COUNT2 EQU 23H
;***************************************
;METACONFIG
LIST P=16F877A
ORG 0
GOTO START

__CONFIG H'3F72'
;***************************************
DELAY
MOVLW .255
MOVWF COUNT1
MOVLW .255
MOVWF COUNT2

A DECFSZ COUNT1,1
GOTO A
DECFSZ COUNT2,1
GOTO A
RETLW 0
;****************************************
;LCD SUBROUTINES
LCD_CMD ;COMMAND MODE
MOVWF PORTB
BCF PORTD,0 ;RS :Telling the RS pin of the LCD, that the
data being sent is a command(for configuration)
BSF PORTD,1; EN :As the data has to be taken as a command and for
that the EN(Enable bit) has to have transition from logic 1 to logic 0
NOP
BCF PORTD,1; Over here Postive to Negative Edge triggered
signal is given to the EN pin of the LCD
CALL DELAY ; Delay so that the LCD finishes its internal operations
RETLW 0
LCD_DIS ;DISPLAY MODE
MOVWF PORTB
BSF PORTD,0 ;RS: Telling the RS pin of the LCD, that the
data being sent is a Data(for display)
BSF PORTD,1 ;EN: As the data has to be taken as a
command and for that the EN(Enable bit) has to have transition from logic 1 to logic 0
NOP
BCF PORTD,1 ;Over here Postive to Negative Edge triggered
signal is given to the EN pin of the LCD
CALL DELAY ;Delay so that the LCD finishes its internal operations
RETLW 0
LCD_INT
MOVLW 38H ;This code i.e. 0011 1000 selects (8 bit
interface) + (2 line mode) + (5x7 dot format)
CALL LCD_CMD

MOVLW 0EH ;This code i.e. 0000 1110 selects


(Display on) + (Cursor Underline on) + (Cursor Blink off)
CALL LCD_CMD

MOVLW 06H ;This code i.e. 0000 0110 selects


(Inrement Cursor) + (Display Shift off)
CALL LCD_CMD

CALL DELAY
RETLW 0
LCD_CLR
MOVLW 01H ;This code i.e. 0000 0001 selects Clear
Display
CALL LCD_CMD
CALL DELAY
RETLW 0
;****************************************
;CONFIG
START
BANKSEL TRISD
CLRF TRISD
CLRF TRISB
BANKSEL PORTD
CLRF PORTD
CLRF PORTB
;*****************************************
;PROGRAM
BEGIN
CALL LCD_INT
CALL LCD_CLR

MOVLW 80H ;This code 80H i.e. the address of the


first bit of the first line of the 2x16 LCD from where it has to start
CALL LCD_CMD

MOVLW 'I'
CALL LCD_DIS
MOVLW 'N'
CALL LCD_DIS
MOVLW 'S'
CALL LCD_DIS
MOVLW 'T'
CALL LCD_DIS
MOVLW 'I'
CALL LCD_DIS
MOVLW 'T'
CALL LCD_DIS
MOVLW 'U'
CALL LCD_DIS
MOVLW 'T'
CALL LCD_DIS
MOVLW 'E'
CALL LCD_DIS
MOVLW ''
CALL LCD_DIS
MOVLW 'O'
CALL LCD_DIS
MOVLW 'F'
CALL LCD_DIS
MOVLW ''
CALL LCD_DIS
MOVLW 'S'
CALL LCD_DIS
MOVLW 'P'
CALL LCD_DIS
MOVLW 'A'
CALL LCD_DIS

MOVLW 0C0H ;This code OC0H i.e. the address of the


first bit of the second line of the 2x16 LCD from where it has to start
CALL LCD_CMD

MOVLW 'C'
CALL LCD_DIS
MOVLW 'E'
CALL LCD_DIS
MOVLW ''
CALL LCD_DIS
MOVLW 'T'
CALL LCD_DIS
MOVLW 'E'
CALL LCD_DIS
MOVLW 'C'
CALL LCD_DIS
MOVLW 'H'
CALL LCD_DIS
MOVLW 'N'
CALL LCD_DIS
MOVLW 'O'
CALL LCD_DIS
MOVLW 'L'
CALL LCD_DIS
MOVLW 'O'
CALL LCD_DIS
MOVLW 'G'
CALL LCD_DIS
MOVLW 'Y'
CALL LCD_DIS
GOTO BEGIN
END
Task-2

Write an assembly language code to show a character on LCD in 4_bit mode.

Code:

PORTB EQU 06H


PORTD EQU 08H

TRISB EQU 86H


TRISD EQU 88H

count1 EQU 20H


count2 EQU 21H

;**********************************

LIST P=16F877A
ORG 0
GOTO START

__CONFIG H'3F72'
;DELAYS

DELAY movlw .255


movwf count1
movlw .255
movwf count2

a decfsz count1,1
goto a

decfsz count2,1
goto a

RETLW 0

;LCD SUBROUTINES

LCD_CMD
MOVWF PORTB
BCF PORTD,0 ;RS
BSF PORTD,1 ;EN
NOP
BCF PORTD,1
CALL DELAY
RETLW 0

LCD_DATA
MOVWF PORTB
BSF PORTD,0 ;RS
BSF PORTD,1 ;EN
NOP
BCF PORTD,1
CALL DELAY
RETLW 0
LCD_CLR
MOVLW 0H
CALL LCD_CMD

MOVLW 1H
CALL LCD_CMD
CALL DELAY
RETLW 0

LCD_INT

MOVLW 3H
CALL LCD_CMD

MOVLW 2H
CALL LCD_CMD

MOVLW 2H
CALL LCD_CMD

MOVLW 8H
CALL LCD_CMD

MOVLW 0H
CALL LCD_CMD

MOVLW 6H
CALL LCD_CMD

MOVLW 0H
CALL LCD_CMD

MOVLW 0EH
CALL LCD_CMD

CALL DELAY
RETLW 0
;CONFIG SECTION

START
BANKSEL TRISD

MOVLW B'00000000'
MOVWF TRISD
MOVWF TRISB
BANKSEL PORTD

CLRF PORTB
CLRF PORTD
;PROGRAM STARTS NOW
CALL LCD_INT
BEGIN CALL LCD_CLR

MOVLW 8H
CALL LCD_CMD

MOVLW 0H
CALL LCD_CMD

MOVLW 4H
CALL LCD_DATA

MOVLW 1H
CALL LCD_DATA

MOVLW 4H
CALL LCD_DATA

MOVLW 0CH
CALL LCD_DATA

MOVLW 4H
CALL LCD_DATA

MOVLW 0CH
CALL LCD_DATA

MOVLW 4H
CALL LCD_DATA

MOVLW 1H
CALL LCD_DATA

MOVLW 4H
CALL LCD_DATA

MOVLW 8H
CALL LCD_DATA

CALL DELAY
GOTO BEGIN

END

You might also like