[9]
4-bit Initialization:
/**********************************************************/
void command(char i)
{
P1 = i; //put data on o
utput Port
D_I =0; //D/I=LOW : sen
d instruction
R_W =0; //R/W=LOW : Wri
te
Nybble(); //Send lower 4
bits
i = i<<4; //Shift over by
4 bits
P1 = i; //put data on o
utput Port
Nybble(); //Send upper 4
bits
}
/**********************************************************/
void write(char i)
{
P1 = i; //put data on o
utput Port
D_I =1; //D/I=HIGH : se
nd data
R_W =0; //R/W=LOW : Wri
te
Nybble(); //Clock lower 4
bits
i = i<<4; //Shift over by
4 bits
P1 = i; //put data on o
utput Port
Nybble(); //Clock upper 4
bits
}
/**********************************************************/
void Nybble()
{
E = 1;
Delay(1); //enable pulse
width >= 300ns
E = 0; //Clock enable:
falling edge
}
/**********************************************************/
void init()
{
P1 = 0;
P3 = 0;
Delay(100); //Wait >15 msec
after power is applied
P1 = 0x30; //put 0x30 on t
he output port
Delay(30); //must wait 5ms
, busy flag not available
Nybble(); //command 0x30
= Wake up
Delay(10); //must wait 160
us, busy flag not available
Nybble(); //command 0x30
= Wake up #2
Delay(10); //must wait 160
us, busy flag not available
Nybble(); //command 0x30
= Wake up #3
Delay(10); //can check bus
y flag now instead of delay
P1= 0x20; //put 0x20 on t
he output port
Nybble(); //Function set:
4-bit interface
command(0x28); //Function set:
4-bit/2-line
command(0x10); //Set cursor
command(0x0F); //Display ON; B
linking cursor
command(0x06); //Entry Mode se
t
}
/**********************************************************/