Uno R3 control LCD1602 display

Uno R3 control LCD1602 display

Overview
Today we will learn how to use a character display device – LCD1602 on the Arduino platform.  Firstly we make the LCD1602 display a scrolling “Hello Geeks!” , and then the statical  “Adeept” and “www.adeept.com”.
Components
– 1 * Adeept UNO R3 Board
– 1 * USB Cable
– 1 * LCD1602 Module
– 1 * 10kΩ Potentiometer
– 1 * Breadboard
– Several jumper wires
Principle

LCD1602 is one kind of character LCD displays. The LCD has a parallel interface, which means that  the microcontroller has to manipulate several interface pins at once to control the display. The interface consists of the following pins:
● A register select (RS) pin that controls where you’re writing data to in the LCD’s memory . You can select either the data register which holds what goes on the screen, or an instruction register where the LCD’s controller looks for instructions on what to do next.
● A Read/Write (R/W) pin that selects reading mode or writing mode
● An Enable pin that enables writing to the registers
● 8 data pins (D0-D7). These pins can be used to write the data to the LCD1602 register and read the data from it.
● There is also a display contrast pin (Vo), power supply pins (+5V and Gnd) and LED Backlight (Bklt+ and BKlt-) pins that you can use to power the LCD as well as control the display contrast and turn on or off the LED backlight respectively.
The process of controlling the display involves putting the data that form the image of what you want to display into the data registers, and putting instructions in the instruction register. The LiquidCrystal Library simplifies this for you so you don’t need to know the low-level instructions.
The Hitachi-compatible LCDs can be controlled in two modes: 4-bit or 8-bit. The 4-bit mode requires seven I/O pins from the Arduino, while the 8-bit mode requires 11 pins.  And you can finish most of the job in in 4-bit mode when display text on the screen. Example will show how to control a 2×16 LCD in 4-bit mode.
The potentiometer , informally a pot, is a three-terminal resistor with a sliding or rotating contact that forms an adjustable voltage divider.  It will act as a variable resistor or rheostat when only two terminals, one end and the wiper are used.
Procedures
Step 1: Pin should be welded to the LCD1602
For detailed soldering steps,please refer to our recorded video:

Step 2: Build the circuit

Step 3: Program

/***********************************************************
File name: AdeeptLCD1602.ino
Description: LCD1602 display a string "Hello Geeks!" scrolling,
             then display “Adeept” and “www.adeept.com” static.
Website: www.adeept.com
E-mail: support@adeept.com
Author: Tom
Date: 2017/01/18 
***********************************************************/

#include <LiquidCrystal.h>

char array1[]="     Adeept     ";                //the string to print on the LCD
char array2[]="  hello geeks!                ";  //the string to print on the LCD
char array3[]=" www.adeept.com ";                //the string to print on the LCD

int tim = 250;  //the value of delay time

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(4, 6, 10, 11, 12, 13);

void setup()
{
  lcd.begin(16, 2);  // set up the LCD's number of columns and rows: 
}

void loop() 
{
    lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner
    lcd.setCursor(15,0);                   // set the cursor to column 15, line 1
    for (int positionCounter2 = 0; positionCounter2 < 30; positionCounter2++)
    {
      lcd.scrollDisplayLeft();             //Scrolls the contents of the display one space to the left.
      lcd.print(array2[positionCounter2]); // Print a message to the LCD.
      delay(tim);                          //wait for 250 microseconds
    }

    lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.   
    
    lcd.setCursor(0,0);                    // set the cursor to column 15, line 0
    for (int positionCounter1 = 0; positionCounter1 < 16; positionCounter1++)
    {
      lcd.print(array1[positionCounter1]); // Print a message to the LCD.
      delay(tim);                          //wait for 250 microseconds
    }
    
    lcd.setCursor(0,1);                    // set the cursor to column 15, line 1
    for (int positionCounter3 = 0; positionCounter3 < 16; positionCounter3++)
    {
      lcd.print(array3[positionCounter3]); // Print a message to the LCD.
      delay(tim);                          //wait for 250 microseconds
    }
}

Step 4: Compile the program and upload to Adeept UNO R3 board
Now, you can see the string “Hello Geeks!” shown on the LCD1602 scrolling, and the string “Adeept” and “www.adeept.com” displayed stay statical.

Leave a Reply