#include <REGX52.H>
#define LCD_PORT P0
#define EN P1_0
#define RS P1_2
#define RW P1_1

void delay(unsigned int count);
void lcd_command(char value);
void lcd_data(char value);
void lcd_display(unsigned char locn, char *dat);
void lcd_initial(void);

void lcd_initial(void) {
    delay(20);
    lcd_command(0x38);
    lcd_command(0x01);
    lcd_command(0x06);
    lcd_command(0x0C);
}

void lcd_command(char value) {
    LCD_PORT = value;
    RS = 0; RW = 0; EN = 1;
    delay(2);
    EN = 0;
    delay(2);
}

void lcd_data(char value) {
    LCD_PORT = value;
    RS = 1; RW = 0; EN = 1;
    delay(2);
    EN = 0;
    delay(2);
}

void lcd_display(unsigned char locn, char *dat) {
    lcd_command(locn);
    while (*dat) lcd_data(*dat++);
}

void delay(unsigned int count) {
    unsigned int x, y;
    for (x = 0; x < count; x++)
        for (y = 0; y < 1275; y++);
}

void main(void) {
    lcd_initial();
    lcd_display(0x80, "AJAY.I");
    lcd_display(0xC0, "3rd Year");
    while (1);
}
