How to interface 16x2 LCD with 8051 microcontroller

online engineering degree/engineering degree online/online engineering courses/engineering technology online/engineering courses online/engineering technician degree online/online engineering technology/electronic engineering online

  • Hex Code
    Command to LCD Instruction Register
    1
    Clear screen display
    2
    Return home
    4
    Decrement cursor
    6
    Increment cursor
    E
    Display ON, Cursor ON
    80
    Force the cursor to the beginning of the 1st line
    C0
    Force cursor to the beginning of the 2nd line
    38
    Use 2 lines and 5x7 matrix










DESCRIBTION
  • It is very important to keep a track of the working of almost all the automated and semi-automated devices, be it a washing machine, an autonomous robot or anything else. This is achieved by displaying their status on a small display module. LCD (Liquid Crystal Display) screen is such a display module and a 16x2 LCD module is very commonly used. These modules are replacing seven segments and other multi segment LEDs for these purposes. The reasons being: LCDs are economical, easily programmable, have no limitation of displaying special & even custom characters (unlike in seven segments), animations and so on. LCD can be easily interfaced with a microcontroller to display a message or status of a device. This topic explains the basics of a 16x2 LCD and how it can be interfaced with AT89C51 to display a character.
CODE
  • /Program to test LCD. Display single character "A"

    #include<reg51.h>
    #define cmdport P3
    #define dataport P2
    #define q 100
    sbit rs = cmdport^0;  //register select pin
    sbit rw = cmdport^1;  // read write pin
    sbit e = cmdport^6;  //enable pin

    void delay(unsigned int msec)  // Function to provide time delay in msec.
    {
    int i,j ;
    for(i=0;i<msec;i++)
    for(j=0;j<1275;j++);
    }

    void lcdcmd(unsigned char item)  //Function to send command to LCD
    {
    dataport = item;
    rs= 0;
    rw=0;
    e=1;
    delay(1);
    e=0;
    }

    void lcddata(unsigned char item)  //Function to send data to LCD
    {
    dataport = item;
    rs= 1;
    rw=0;
    e=1;
    delay(1);
    e=0;
    }

    void main()
    {
    lcdcmd(0x38);  // for using 8-bit 2 row mode of LCD
    delay(100);
    lcdcmd(0x0E);  // turn display ON for cursor blinking
    delay(100);
    lcdcmd(0x01);  //clear screen
    delay(100);
    lcdcmd(0x06);  //display ON
    delay(100);
    lcdcmd(0x86);  // bring cursor to position 6 of line 1
    delay(100);
    lcddata('A');
    }

online civil engineering technology degree/online electrical engineering degree/online electrical engineering degree abet/online electrical engineering technology degree/online engineering courses/online engineering degree/online engineering technology/online engineering technology degree/online engineering technology degree programs/online mechanical engineering technology degree
8:12 AM