#include <msp430g2553.h>
#define RS_HIGH P2OUT |= BIT0 // define RS high RS = 1 —–> Data Register
#define RS_LOW P2OUT &= ~BIT0 // define RS low RS = 0 —–> Command Code Register
#define READ P2OUT |= BIT1 // define Read signal R/W = 1 for reading
#define WRITE P2OUT &= ~BIT1 // define Write signal R/W = 0 for writing
#define ENABLE_HIGH P2OUT |= BIT2 // define Enable high signal
#define ENABLE_LOW P2OUT &= ~BIT2 // define Enable Low signal P2.2
unsigned int i;
unsigned int j;
///P2.0 = RS ,P2.1 = R/W ,P2.2 = enable , P1.7 = Busy flag
void check_busy(void)
{
P1DIR &= ~(BIT7); // make P1.7 as input
ENABLE_LOW; // P2OUT &= ~BIT2
__delay_cycles(1000);
ENABLE_HIGH; //P2OUT |= BIT2
while((P1IN & BIT7)==0x80); // Busy flag
P1DIR |= BIT7; // make P1.7 as output
}
void send_command(unsigned char cmd)
{
WRITE; //for writing command P2OUT &= ~BIT1
RS_LOW; //for sending command P2OUT &= ~BIT0
ENABLE_HIGH; //P2OUT |= BIT2
check_busy();
P1OUT |= (cmd);
__delay_cycles(1000);
ENABLE_LOW;
}
void send_data(unsigned char data)
{
WRITE; //for writing data P2OUT &= ~BIT1
RS_HIGH; // P2OUT |= BIT0
ENABLE_HIGH; //P2OUT |= BIT2
check_busy();
P1OUT |= (data);
__delay_cycles(1000);
ENABLE_LOW;
}
void send_string(char *s)
{
while(*s)
{
send_data(*s);
s++;
}
}
void lcd_init(void)
{
//wait till 1.5ms after providing vcc to go upto 4.5v
P2DIR |= 0xFF;
P1DIR |= 0xFF;
P2OUT &= ~0x00;
P1OUT &= ~0x00;
__delay_cycles(15000);
send_command(0x38); // 8 bit mode //function set reg
//check_busy();
send_command(0x0E); // display on cursor blinking
send_command(0x01); // clear the screen
send_command(0x06); // increment cursor
send_command(0x80); // force cursor to blink in first line
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer
lcd_init();
send_string("vikas Hurgat");
send_command(0xC0); //forcing cursor to begin to second line
send_string("Embin");
while(1){}
}
kindly help me in sorting the issue involved.
Replies are appreciated!!
Thank You