You are on page 1of 5

Exercise (Delay Method):

#include<p18f4580.h>
#pragma config OSC=HS,LVP=OFF,DEBUG=OFF,WDT=OFF,PBADEN=OFF
#define rs PORTCbits.RC0
#define rw PORTCbits.RC1
#define en PORTCbits.RC3
#define ldata PORTD

void lcdcmd(unsigned char value);


void lcddata(unsigned char value);
void MSDelay(unsigned int itime);

void main(void)
{
TRISD=0;
TRISC=0;
en=0;
MSDelay(250);
lcdcmd(0x38);
MSDelay(250);
lcdcmd(0x0E);
MSDelay(15);
lcdcmd(0x01);
MSDelay(15);
lcdcmd(0x06);
MSDelay(15);
lcdcmd(0x84);
MSDelay(15);
lcddata('L');
MSDelay(15);
lcddata('E');
MSDelay(15);
lcddata('E');
MSDelay(15);
lcddata('\n');
MSDelay(15);
lcddata('H');
MSDelay(15);
lcddata('U');
MSDelay(15);
lcddata('I');
MSDelay(15);
lcddata('\n');
MSDelay(15);
lcddata('L');
MSDelay(15);
lcddata('I');
MSDelay(15);
lcddata('N');
MSDelay(15);
lcddata('G');
while(1);
}

void lcdcmd(unsigned char value)


{
ldata=value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
}

void lcddata(unsigned char value)


{
ldata=value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
}

void MSDelay(unsigned int itime)


{
unsigned int i,j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}
Exercise1 (Monitoring busy flag):

#include<p18f4580.h>
#pragma config OSC=HS,LVP=OFF,DEBUG=OFF,WDT=OFF,PBADEN=OFF
#define rs PORTCbits.RC0
#define rw PORTCbits.RC1
#define en PORTCbits.RC3
#define ldata PORTD
#define busy PORTDbits.RD7

void lcdcmd(unsigned char value);


void lcddata(unsigned char value);
void lcdready(void);
void MSDelay(unsigned int itime);

void main(void)
{
TRISD=0;
TRISC=0;
en=0;
MSDelay(250);
lcdcmd(0x38);
MSDelay(250);
lcdcmd(0x0E);
lcdready();
lcdcmd(0x01);
lcdready();
lcdcmd(0x06);
lcdready();
lcdcmd(0x84);
lcdready();
lcddata('L');
lcdready();
lcddata('E');
lcdready();
lcddata('E');
lcdready();
lcddata('\n');
lcdready();
lcddata('H');
lcdready();
lcddata('U');
lcdready();
lcddata('I');
lcdready();
lcddata('\n');
lcdready();
lcddata('L');
lcdready();
lcddata('I');
lcdready();
lcddata('N');
lcdready();
lcddata('G');
while(1);
}

void lcdcmd(unsigned char value)


{
ldata=value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
}

void lcddata(unsigned char value)


{
ldata=value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
}

void lcdready(void)
{
TRISD=0XFF;
rs=0;
rw=1;
do
{
en=1;
MSDelay(1);
en=0;
}
while(busy==1);
TRISD=0;
}

void MSDelay(unsigned int itime)


{
unsigned int i,j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}

Schematic Diagram:

You might also like