Many people face a lot of problems in interfacing LCD with 8051 micro controller, but in reality it is very easy and even fun to interface an LCD!!
16*2 LCD LM0161 |
WHAT DOES DIFFERENT PINS STAND FOR IN LCD????
First of all we will need to understand what does the pins in the LCD means...
VSS: To be provided with Ground.
VDD: To be provided with Source voltage.
VEE: Can be grounded or a potentiometer can be used to adjust the contrast of LCD.
RS: Is the register select pin decide either to write comment or data
RW: Is the read write pin decide either to write or read data
E: Is the enable pin used as clock
D0-D7 : Are the data pins messages are send on these pins.
There are two things to be written on LCD
1) Command
2) Data
What is a Command???
A command is a code for LCD that order it to set itself as per our requirements.
for example:
01H will clear your LCD
06H cursor will be incremented by 1 unit
How to write command?
In order to write a command we will need to :
- clear the RS pin (RS=0)
- clear the RW pin (RW=0)
- Give clock on E pin with some delay
For clearing LCD:
mov DATA,#01H
clr RS
clr RW
setb E
nop
nop
clr E
this code will clear you LCD many commands are available on internet.
Now What is a Data???
The data is simply the message we want to display on LCD.
How to write Data?
In order to write a data we will need to :
- High the RS pin (RS=1)
- clear the RW pin (RW=0)
- Give clock on E pin with some delay
For displaying letter 'A' on LCD:
mov DATA,#'A'
setb RS
clr RW
setb E
nop
nop
clr E
this code will display letter A on the LCD.
WRITING ON LCD!!!
As you are familiar with coding of LCD let us write our topic name on LCD!!!
SCHEMATIC:
CODE:
;---INIITIALIZING PORTS AND BITS----
rs bit P3.0 ; initializing port 3.0 as register select pin
rw bit P3.1 ; initializing port 3.1 as read/write pin
en bit P3.2 ; initializing port 3.2 as enaable pin
dat equ P2 ; initializing port 2 as data bus
org 00h
jmp 30h
org 30h
;---WRITING COMMANDS ON LCD ----
mov A,#38h ;Use 2 lines and 5×7 matrix for LCD
acall com_wrt ; calling function to enter command on LCD
mov A,#0Fh ; LCD ON, Cursor ON, Cursor blinking ON
acall com_wrt ; calling function to enter command on LCD
mov A,#01h ; clearing the LCD
acall com_wrt ; calling function to enter command on LCD
mov A,#80h ; Force cursor to the beginning of 1st line
acall com_wrt ; calling function to enter command on LCD
;---CLEARING/SETTING PORTS/PINS----
mov P2,#00H ; clearing port 2 to eleminate garbage value
;---START OF PROGRAM----
START:
call clear ; calling function to clear LCD
DISPLAY_MSG:
mov dptr,#msg ; copy message in data pointer to be displayed on LCD
call dmsg ; calling function to display message on LCD
DISPLAY_MSG1:
call nline
mov dptr,#msg1
call dmsg
jmp exit
clear: ; LCD clearing module
mov a,#01h ; clearing LCD
acall com_wrt ; calling function to enter command on LCD
ret ; returning back
dmsg:
call delay ; calling some time delay
clr A
movc a,@a+dptr ; moves code byte of data located in program code ROM into Accumulator A
call char_wrt ; calling function to write character
inc dptr ; incriment the value of data pointer by 1
jz display_msg1
jmp dmsg
;---CHARACTER DISPLAYING MODULE----
char_wrt:
acall delay ; calling some time delay
setb rs ; setting bit register select high
clr rw ; clearing bit to write data on LCD
mov dat,A ; moving character to data port
setb en ; setting bit enable for starting clock
nop ; time delay
nop ; time delay
clr en ; clearing bit enable for ending clock
ret ; return back
;---COMMAND DISPLAYING MODULE----
com_wrt:
acall delay ; calling some time delay
clr rs ; rs=0 for writting comment
clr rw ; rw=0 for writting comment
mov dat,A ; copying acumulator in data port (p2)
setb en ; en=1 for clock
nop ; time delay
nop ; time delay
clr en ; en=0 for clock
ret ; return to previous position
;---DELAY MODULE----
delay:
mov r6,#088h
loop:
djnz r5,$
djnz r6,loop
ret
nline:
mov a,#0c1h ;next line
call com_wrt ; calling function write comment on LCD
mov a,#0c0h ;2nd line 1st position
call com_wrt ; calling function write comment on LCD
ret
msg: db'LCD INTERFACING ',0
msg1: db' WITH OUR BLOG',0
Exit:
jmp msg1
end
No comments:
Post a Comment