Skip to content
Home » Arduino 2004 Lcd I2C Code | Lcd 2004 Kèm Module I2C

Arduino 2004 Lcd I2C Code | Lcd 2004 Kèm Module I2C

How to use IIC I2C 2004 204 20 x 4 Character LCD with Arduino

Giải thích code


LiquidCrystal_I2C lcd(0x3F,16,2);

  • Đặt địa chỉ LCD là 0x3F cho màn hình LCD 16×2.
  • 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
  • 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.


lcd.init();

Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.


lcd.backlight();

Bật đèn nèn LCD


lcd.setCursor(2,0);

Đưa con trỏ tới hàng 1, cột 3.

Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1.


lcd.print("tcl47.blogspot.com");

Xuất ra dòng chữ tcl47.blogspot.com tại vị trí con trỏ ở hàng 1, cột 3.


lcd.setCursor(0,1); lcd.print("Xin chao cac ban");

Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chao cac ban”tại vị trí con trỏ ở hàng 2, cột 1.

Bây giờ thì các bạn upload chương trình và xem kết quả nhé.

LCD 2004 kèm module I2C

LCD Display LCD2004 Module Green Screen with I2C

Mã sản phẩm: 7R16

Sản phẩm hiện đang còn hàng.

Xem chi nhánh còn hàng

LCD 2004 kèm module I2C điện áp hoạt động là 5V. Kích thước: 98 x 60 x 13.5 mm

  • Cộng thêm 10 điểm tích lũy
  • TP.HCM: Miễn phí vận chuyển đơn hàng từ 300k

    Tỉnh thành khác: Miễn phí vận chuyển đơn hàng từ 500k

    Xem thêm các khuyến mãi vận chuyển khác.

  • Bảo hành: 7 ngày

Code mẫu

#include

#include LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print(“Arduinokit.vn”); lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”); } void loop() { }

Giải thích code

LiquidCrystal_I2C lcd(0x3F,16,2);

  • Đặt địa chỉ LCD là 0x3F cho màn hình LCD 16×2.
  • 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
  • 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.

lcd.init();

Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.

lcd.backlight();

Bật đèn nền LCD 16×2.

lcd.setCursor(2,0);

Đưa con trỏ tới hàng 1, cột 3.

Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1.

lcd.print(“Arduinokit.vn”);

Xuất ra dòng chữ Arduinokit.vn tại vị trí con trỏ ở hàng 1, cột 3.

lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”);

Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chao cac ban” tại vị trí con trỏ ở hàng 2, cột 1.

Bây giờ thì các bạn upload chương trình và xem kết quả nhé.

How to use IIC I2C 2004 204 20 x 4 Character LCD with Arduino
How to use IIC I2C 2004 204 20 x 4 Character LCD with Arduino

How to find the I2C address of my LCD?

Most I2C LCDs ship with the default address ‘0x27’, but it can be different depending on the batch/manufacturer. If this is the case, you will need to find the actual address of the LCD before you can start using it. On the Arduino website, you can find a simple example sketch that scans the I2C-bus for devices. If a device is found, it will display the address in the serial monitor.

/*I2C_scanner This sketch tests standard 7-bit addresses. Devices with higher bit address might not be seen properly. */ #include “Wire.h” void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); Serial.println(“\nI2C Scanner”); } void loop() { byte error, address; int nDevices; Serial.println(“Scanning…”); nDevices = 0; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print(“I2C device found at address 0x”); if (address < 16) Serial.print(“0″); Serial.print(address, HEX); Serial.println(” !”); nDevices++; } else if (error == 4) { Serial.print(“Unknown error at address 0x”); if (address < 16) Serial.print(“0”); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println(“No I2C devices found\n”); else Serial.println(“done\n”); delay(5000); }

If you upload this sketch to the Arduino and run it, you should see the following output in the Serial Monitor (Ctrl + Shift + M).

Write down the address you find, you will need it later when programming the LCD.

Supplies

Hardware components

16×2 character I2C LCD × 1 Amazon
20×4 character I2C LCD (alternative) × 1 Amazon
Arduino Uno Rev3 × 1 Amazon
Jumper wires (male to female) × 4 Amazon
USB cable type A/B × 1 Amazon

Tools

Small screwdriver Amazon

Software

Arduino IDE

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.

How to Use I2C LCD with Arduino | Very Easy Arduino LCD I2C Tutorial | Arduino 16x2 LCD I2C Tutorial
How to Use I2C LCD with Arduino | Very Easy Arduino LCD I2C Tutorial | Arduino 16×2 LCD I2C Tutorial

Recommended articles

  • How to use an HC-SR04 Ultrasonic Distance Sensor with Arduino
  • How to use DHT11 and DHT22 Sensors with Arduino
  • LM35 analog temperature sensor with Arduino tutorial
  • TMP36 analog temperature sensor with Arduino tutorial

(I also have an article on How To Control A Character I2C LCD with ESP32 if you want to work with an ESP32 microcontroller instead).

Chi tiết sản phẩm

Màn hình text LCD 2004 kèm module I2C sử dụng driver HD44780, có khả năng hiển thị 4 dòng với mỗi dòng 20 ký tự, màn hình có độ bền cao, rất phổ biến, nhiều code mẫu và dễ sử dụng thích hợp cho những người mới học và làm dự án.

Màn hình LCD được hàn sẵn module giao tiếp I2C giúp việc giao tiếp được dễ dàng và nhanh chóng hơn rất nhiều, người dùng không phải tốn công hàn i2c, mà giá thành lại rẻ hơn mua từng món.

THÔNG SỐ LCD 2004 KÈM MODULE I2C

  • Điện áp hoạt động là 5 V.
  • Kích thước: 98 x 60 x 13.5 mm

Sơ đồ kết nối i2C với Arduino UNO:

VCC : 5V

GND : GND

SCL : A5

SDA : A4

CODE MẪU LCD 2004 KÈM MODULE I2C

Thư viện LiquidCrystal_I2C.h : https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c

/* * Kết nối: * I2C Uno Mega * GND GND GND * VCC 5V 5V * SDA A4 (SDA) SDA * SCL A5 (SCL) SCL * */ #include

#include LiquidCrystal_I2C lcd(0x3F, 16, 2); //0X3F thay đổi tùy theo địa chỉ I2C, có thể là 0x3F hoặc 0x27 void setup() { // initialize the LCD lcd.begin(); lcd.backlight(); lcd.print(” Dien Tu NSHOP “); lcd.setCursor(0,1); lcd.print(” Xin Kinh Chao “); } void loop() { // Do nothing here… }

Nshopvn.com · 07/03/2019 10:50 AM

LCD 2004 kèm module I2C giá chỉ 103.000₫

Vậy cách để hiển thị các ký tự các thông số lên LCD 16×2 như thế nào?

Có dễ dàng hay không?

Qua bài viết hôm nay chúng ta sẽ đi sâu vào tìm hiểu các sử dụng LCD và giao tiếp với module IC2 nhé.

{916} i2c LCD configuration with Arduino UNO in Tinkercad
{916} i2c LCD configuration with Arduino UNO in Tinkercad

How to connect the I2C LCD to Arduino UNO

The wiring diagram below shows you how to connect the I2C LCD to the Arduino. Wiring an I2C LCD is a lot easier than connecting a standard LCD. You only need to connect 4 pins instead of 12.

The connections are also given in the table below.

I2C LCD Connections

I2C Character LCD Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location.

Note that an Arduino Uno with the R3 layout (1.0 pinout) also has the SDA (data line) and SCL (clock line) pin headers close to the AREF pin. Check the table below for more details.

Board SDA SCL
Arduino Uno A4 A5
Arduino Nano A4 A5
Arduino Micro
Arduino Mega 2560 20 21
Arduino Leonardo
Arduino Due 20 21

Installing the LiquidCrystal_I2C Arduino library

In this tutorial, I will be using the LiquidCrystal_I2C library. This library has many built-in functions that make programming the LCD quite easy.

The latest version of this library can be found here on GitHub or click the download button below.

Make sure that you have this exact library installed and delete any other libraries that have the same name (LiquidCrystal_I2C). Other libraries will probably work as well but might use slightly different names for the different functions.

The LiquidCrystal_I2C library works in combination with the Wire.h library which allows you to communicate with I2C devices. This library comes pre-installed with the Arduino IDE.

To install this library, go to Tools > Manage Libraries (Ctrl + Shift + I on Windows) in the Arduino IDE. The Library Manager will open and update the list of installed libraries.

Now search for ‘liquidcrystal_i2c’ and look for the library by Frank de Brabander. Select the latest version and then click Install.

The library does include some examples that you can use, but you will have to modify them to match your hardware setup. I have included many example codes below that you can use with the wiring setup I have shown earlier.

First I will show you some basic example code and then I will explain the functions in more detail.

Introduction to LCD2004 LCD display with I2C module for Arduino
Introduction to LCD2004 LCD display with I2C module for Arduino

Code scan địa chỉ i2c


// -------------------------------------- // i2c_scanner // -------------------------------------- #include

void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { int nDevices = 0; Serial.println("Scanning..."); for (byte address = 1; address < 127; ++address) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); byte error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) { Serial.print("0"); } Serial.print(address, HEX); Serial.println(" !"); ++nDevices; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) { Serial.print("0"); } Serial.println(address, HEX); } } if (nDevices == 0) { Serial.println("No I2C devices found\n"); } else { Serial.println("done\n"); } delay(5000); // Wait 5 seconds for next scan }

Các lỗi thường gặp khi sử dụng I2C LCD

  • Hiển thị một dãy ô vuông.
  • Màn hình chỉ in ra một ký tự đầu.
  • Màn hình nhấp nháy.

Các lỗi này chủ yếu là do sai địa chỉ bus, để fix lỗi các bạn thay địa chỉ mặc định là “0x27” thành “0x3F.

Trong trường hợp vẫn không được các bạn fix lỗi bằng cách nạp code tìm địa chỉ bus của I2C.

Sau khi tìm xong các bạn thay địa chỉ vừa tìm được vào vị trí “0x27” là xong.

  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.
I2C LCD not showing Text | I2C LCD Errors Fixing || 16x2 LCD not displaying Text || 1602 LCD
I2C LCD not showing Text | I2C LCD Errors Fixing || 16×2 LCD not displaying Text || 1602 LCD

Giao tiếp I2C LCD Arduino

Module I2C LCD 16×2

Arduino UNO

GND

GND

VCC

5V

SDA

A4/SDA

SCL

A5/SCL

Sơ đồ đấu nối

Sơ đồ đấu nối giao tiếp IC2 với LCD 16×2.

Các linh kiện cần thiết cho dự án:

  • Arduino UNO: Xem sản phẩm tại đây.
  • Màn hình LCD 16×2: Xem sản phẩm tại đây.
  • Module I2C LCD 16×2: Xem sản phẩm tại đây.

Giao tiếp I2C LCD Arduino

Module I2C LCD 16×2 Arduino UNO
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án:

Tên linh kiện Số lượng Shopee
Arduino UNO R3 Mua ngay
Dây cáp nạp Mua ngay
Màn hình LCD 16×2 Mua ngay
Module I2C LCD 16×2 Mua ngay
Dây cắm (Đực – Cái) Mua ngay

Bạn sẽ học được gì

  • Có kiến thức cơ bản về Robotics
  • Chế tạo Robot dò đường thông minh
  • Đánh thức nhà khoa học bên trong bạn
  • Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
  • Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
  • Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế
Arduino LCD I2C - Tutorial with Arduino Uno
Arduino LCD I2C – Tutorial with Arduino Uno

Specifications

The specifications of the 16×2, 20×4, and other sized LCDs are mostly the same. They all use the same HD44780 Hitachi LCD controller, so you can easily swap them. You will only need to change the size specifications in your Arduino code.

The specifications of a typical 16×2 I2C display can be found in the table below.

16×2 I2C LCD Specifications

Operating voltage 5 V
Controller Hitachi HD44780 LCD controller
Default address 0x27
Screen resolution 2-lines × 16 characters
Character resolution 5 × 8 pixels
Module dimensions 80 × 36 × 12 mm
Viewing area dimensions 64.5 × 16.4 mm
Cost Check price

For more information, you can check out the datasheets below.

The 16×2 and 20×4 datasheets include the dimensions of the LCD and you can find more information about the Hitachi LCD driver in the HD44780 datasheet.

The PCF8574 chip is used in the I2C module on the back of the LCD.

Module I2C Arduino

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

Module I2C LCD ra đời và giải quyết vấn để này cho bạn.

Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

Ưu điểm

  • Tiết kiệm chân cho vi điều khiển.
  • Dễ dàng kết nối với LCD.

Thông số kĩ thuật

  • Điện áp hoạt động: 2.5-6V DC.
  • Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
  • Giao tiếp: I2C.
  • Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).
  • Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
  • Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C. Tại đây

Sinhala Arduino Tutorial 22 - LCD Display with 2 wires using I2C module
Sinhala Arduino Tutorial 22 – LCD Display with 2 wires using I2C module

Other Arduino Codes and Videos by Robojax

دروس آردوینو به فارسی

In this page we have got two Arduino sketch. There are various code to display data on LCD2004-I2C. You need to download the Liquid Crystal library.

This code prints simple Hello World text on screen


/* * Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library * * Updated by Ahmad Shamshiri on July 08, 2018 at 19:14 in Ajax, Ontario, Canada * for Robojax.com * Get this code from Robojax.com * Watch video instruction for this code at:https://youtu.be/DKmNSCMPDjE * */ #include

#include // Set the LCD address to 0x27 for a 20 chars and 4 line display LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { // initialize the LCD lcd.begin(); // Turn on the blacklight and print a message. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { // Do nothing here... }

This code prints values from variable or sensors with texts on the same line or in multiple lines.


/* * * * Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library * This code is basic usage of LCD2004 display with I2C * It will display text in 4 lines each with 20 characters * It Displays multiple float values and text on the same line * * * * Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada * for Robojax.com * Get this code from Robojax.com * Watch video instruction for this code at:https://youtu.be/DKmNSCMPDjE * */ #include

#include // Set the LCD address to 0x27 for a 20 chars and 4 line display LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { // initialize the LCD, lcd.begin(); // Turn on the blacklight and print a message. lcd.backlight(); lcd.clear(); lcd.setCursor (0,0); // lcd.print("Robojax LCD2004 Test"); lcd.setCursor (0,1); // lcd.print("Please Wait - 3"); lcd.setCursor (0,1); // delay(1000); lcd.print("Please Wait - 2"); delay(1000); lcd.setCursor (0,1); // lcd.print("Please Wait - 1"); delay(1000); } void loop() { // Robojax.com LCD2004 with I2C custom code lcd.clear();// clearn previous values from screen lcd.setCursor (0,0); //character zero, line 1 lcd.print("LCD2004 I2C Example"); // print text lcd.setCursor (4,1); //character 4, line 2 lcd.print("Robojax.com"); // print text lcd.setCursor (0,2); //character 0, line 3 lcd.print("Voltage: "); // print text float v = 8.254;// define or get voltage char VoltageStr[5]; dtostrf(v, 5, 3, VoltageStr ); lcd.setCursor (9,2); //character 9, line 3 lcd.print(VoltageStr); // print voltage lcd.setCursor (14,2); //character 14, line 3 lcd.print("V"); // print V at the end of voltage lcd.setCursor (0,3); //character 0, line 4 lcd.print("X: "); // print x float xdeg = -123.87;// define or get x degree (just example) lcd.setCursor (3,3); //character 8, line 3 lcd.print(xdeg); // print xdeg value lcd.setCursor (12,3); //character 12, line 4 lcd.print("Y: "); // print Y float ydeg = 32.8;// define or get y degree (just example) lcd.setCursor (15,3); //character 15, line 4 lcd.print(ydeg); // print ydeg value delay(100); }// loop end

This code will display blinking cursor on the screen.


/* * * Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library * This code is basic usage of LCD2004 display with I2C * It will display blinking cursor on screen * * Get this code from Robojax.com * Watch video instruction for this code at:https://youtu.be/DKmNSCMPDjE * */ #include

#include // Set the LCD address to 0x27 for a 20 chars and 4 line display LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { // initialize the LCD lcd.begin(); } void loop() { bool blinking = true; lcd.cursor(); while (1) { if (blinking) { lcd.clear(); lcd.print("No cursor blink"); lcd.noBlink(); blinking = false; } else { lcd.clear(); lcd.setCursor(0,1); lcd.print("Your name: "); lcd.blink(); blinking = true; } delay(4000); } }

This code prints characters you type on the serial monitor.


/* * * Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library * This code is basic usage of LCD2004 display with I2C * It code will allow you to enter character on the serial monitor and display it on this screen * * Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada * for Robojax.com * Get this code from Robojax.com * Watch video instruction for this code at:https://youtu.be/DKmNSCMPDjE * */ #include

#include // Set the LCD address to 0x27 for a 20 chars and 4 line display LiquidCrystal_I2C lcd(0x27, 20, 04); char lastChar ='_'; void setup() { lcd.begin(); lcd.backlight(); lcd.print("Robojax.com Test"); // Initialize the serial port at a speed of 9600 baud Serial.begin(9600); } void loop() { lcd.clear(); lcd.setCursor(0,1); lcd.print("Enter Letter: "); lcd.setCursor(13,1); // If characters arrived over the serial port... if (Serial.available()) { // Wait a bit for the entire message to arrive delay(100); // Write all characters received with the serial port to the LCD. while (Serial.available() > 0) { lastChar =Serial.read(); Serial.print("Entered: "); Serial.println(lastChar); }//while end }// if end lcd.write(lastChar);// display last entered character delay(1000); }// loop end

If you found this tutorial helpful, please support me so I can continue creating content like this. support me via PayPal

Noobie here experimenting with an i2c lcd 2004 (20×4). I am hopeful that someone can bump me in the right direction.

I was reading this thread — IIC/I2C/TWI 2004 20X4 Character LCD Module Display – #16 by system — and could not follow what library the poster bperrybap was referencing when he mentions “fm’s library”?

I have an LCD with an I2c module attached that I purchased from HiLetGo (https://www.amazon.com/gp/aw/d/B01DKETWO2?psc=1&ref=ppx_pop_mob_b_asin_title). I am trying to determine the correct lcd/i2c libraries to use.

Can I use (and should I use) the Extensible hd44780 library (at the following link)?

alternatively, what Liquidcrystal_i2s should I use?

Thanks in advance for any help.

Đã được đăng vào 01/06/2021 @ 17:16

Ở bài viết trước, mình đã hướng dẫn các bạn Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino

Bài viết hôm nay cũng hướng dẫn các bạn hiển thị thời gian thực lên LCD qua I2C bằng Arduino nhưng khác ở chỗ dùng LCD 2004 (LCD 20×4) và dùng module thời gian độ chính xác cao DS3231.

Để hiểu hơn về bài viết hôm nay các bạn đọc lại bài viết bên dưới rồi chúng ta tiếp tục nha.

  • Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
  • Đọc thêm: Đồng hồ thời gian thực (Read Time Clock – DS1307) sử dụng Arduino

Code mẫu

#include

#include LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print(“Arduinokit.vn”); lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”); } void loop() { }

Giải thích code

LiquidCrystal_I2C lcd(0x3F,16,2);

  • Đặt địa chỉ LCD là 0x3F cho màn hình LCD 16×2.
  • 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
  • 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.

lcd.init();

Khởi động màn hình LCD, bắt đầu cho phép Arduino sử dụng màn hình.

lcd.backlight();

Bật đèn nền LCD 16×2.

lcd.setCursor(2,0);

Đưa con trỏ tới hàng 1, cột 3.

Lưu ý: giá trị hàng và cột bắt đầu từ số 0 có nghĩa 0 là hàng(cột) 1.

lcd.print(“Arduinokit.vn”);

Xuất ra dòng chữ Arduinokit.vn tại vị trí con trỏ ở hàng 1, cột 3.

lcd.setCursor(0,1); lcd.print(“Xin chao cac ban”);

Đoạn code này thì tương tự như trên, xuất ra dòng chữ “Xin chao cac ban” tại vị trí con trỏ ở hàng 2, cột 1.

Bây giờ thì các bạn upload chương trình và xem kết quả nhé.

MODULE

Đây là màn hình tinh thể lỏng với 4 dòng và 20 ô hiển thị trên mỗi dòng nhưng không thể hiển thị được đồ họa (Ví dụ như vẽ đồ thị).

Ban đầu, màn hình có 16 pin nhưng sau khi lắp Module LCD I2C chuyển đổi thì chỉ còn lại 2 chân nguồn và 2 chân tín hiệu SCL SDA để kết nối với Arduino dễ dàng hơn.

Để hiển thị thời gian chính xác, module thời gian thực DS3231 được sử dụng ở bài viết này.

Module DS3231 có độ chính xác rất cao và có kèm pin dự phòng khi mất điện, thiết bị vẫn duy trì chính xác thời gian.

Module RTC sẽ duy trì thông tin giây, phút, giờ, ngày, tháng, và năm. Các ngày trong tháng, ngày kết thúc của tháng sẽ được tự động điều chỉnh nếu 31 ngày hoặc dưới 31 ngày, bao gồm cả các điều chỉnh cho năm nhuận.

ARDUINO 20x4 LCD i2c Tutorial | How to Print Text On LCD Display
ARDUINO 20×4 LCD i2c Tutorial | How to Print Text On LCD Display

Giới thiệu LCD 16×2

Thông số kỹ thuật LCD 16×2

LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.

  • LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).
  • 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
  • Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.
  • Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.

Other useful functions of the LiquidCrystal_I2C library

The example sketch above shows you the basics of displaying text on the LCD. Now we will take a look at the other functions of the LiquidCrystal_I2C library.

clear()

Clears the LCD screen and positions the cursor in the upper-left corner (first row and first column) of the display. You can use this function to display different words in a loop.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.clear(); lcd.print(“Monday”); delay(2000); lcd.clear(); lcd.print(“13:45”); delay(2000); }

home()

Positions the cursor in the top-left corner of the LCD. Use

clear()

if you also want to clear the display.

cursor()

Displays the LCD cursor: an underscore (line) at the position of the next character to be printed.

noCursor()

Hides the LCD cursor. The following example creates a blinking cursor at the end of “Hello World!”.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print(“Hello World!”); } void loop() { lcd.cursor(); delay(500); lcd.noCursor(); delay(500); }

blink()

Creates a blinking block style LCD cursor: a blinking rectangle at the position of the next character to be printed.

noBlink()

Disables the block style LCD cursor. The following example displays the blinking cursor for 5 seconds and then disables it for 2 seconds.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print(“blink() example”); } void loop() { lcd.blink(); delay(5000); lcd.noBlink(); delay(2000); }

display()

This function turns on the LCD screen and displays any text or cursors that have been printed to the display.

noDisplay()

This function turns off any text or cursors printed to the LCD. The text/data is not cleared from the LCD memory.

This means it will be shown again when the function

display()

is called.

The following example creates a blinking text effect.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print(“Blinking text”); } void loop() { lcd.display(); delay(2000); lcd.noDisplay(); delay(2000); }

write()

This function can be used to write a character to the LCD. See the section about creating and displaying custom characters below for more info.

scrollDisplayLeft()

Scrolls the contents of the display (text and cursor) one space to the left.

You can use this function in the loop section of the code in combination with

delay(500)

, to create a scrolling text animation.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print(“Hello World!”); } void loop() { lcd.scrollDisplayLeft(); delay(500); }

scrollDisplayRight()

Scrolls the contents of the display (text and cursor) one space to the right.

autoscroll()

This function turns on automatic scrolling of the LCD. This causes each character output to the display to push previous characters over by one space.

If the current text direction is left-to-right (the default), the display scrolls to the left, if the current direction is right-to-left, the display scrolls to the right.

This has the effect of outputting each new character to the same location on the LCD.

The following example sketch enables automatic scrolling and prints the character 0 to 9 at the position (16,0) of the LCD. Change this to (20,0) for a 20×4 LCD.

#include “LiquidCrystal_I2C.h” LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.autoscroll(); lcd.setCursor(16, 0); for (int x = 0; x < 10; x++) { lcd.print(x); delay(500); } lcd.clear(); }

noAutoscroll()

Turns off automatic scrolling of the LCD.

leftToRight()

This function causes text to flow to the right from the cursor, as if the display is left-justified (default).

rightToLeft()

This function causes text to flow to the left from the cursor, as if the display is right-justified.

🔴 Arduino #26 | Màn Hình LCD 16x2 Kết Hợp Module I2C Hiển Thị Thông Tin
🔴 Arduino #26 | Màn Hình LCD 16×2 Kết Hợp Module I2C Hiển Thị Thông Tin

Lời kết

Qua bài hôm nay các bạn biết cách làm thế nào để hiển thị các ký tự và chuỗi ký tự lên LCD 16×2 và biết cách giao tiếp I2C.

Để nhận được nhiều kiến thức mới các bạn Đăng ký để nhận được thông báo sớm nhất.

Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino.

Nếu các bạn thấy bài viết bổ ích nhớ Like và Share cho mọi người cùng đọc nhé.

Chúc các bạn thành công.

Trân trọng.

Basic Arduino example code for I2C LCD

You can upload the following example code to the Arduino using the Arduino IDE.

For this tutorial, I used this 16×2 I2C character LCD display, but you can use other I2C LCDs of different sizes as well. This example sketch will display the classic ‘Hello World!’ on the first line of the LCD and ‘LCD tutorial’ on the second line.

Next, I will explain how the code works.

/* I2C LCD with Arduino example code. More info: https://www.makerguides.com */ #include “Wire.h” // Library for I2C communication #include “LiquidCrystal_I2C.h” // Library for LCD // Wiring: SDA pin is connected to A4 and SCL pin to A5. // Connect to LCD via I2C, default address 0x27 (A0-A2 not jumpered) LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // Change to (0x27,20,4) for 20×4 LCD. void setup() { // Initiate the LCD: lcd.init(); lcd.backlight(); } void loop() { // Print ‘Hello World!’ on the first line of the LCD: lcd.setCursor(2, 0); // Set the cursor on the third column and first row. lcd.print(“Hello World!”); // Print the string “Hello World!” lcd.setCursor(2, 1); //Set the cursor on the third column and the second row (counting starts at 0!). lcd.print(“LCD tutorial”); }

You should see the following output on the LCD:

How the code works

First, the required libraries are included. As mentioned earlier we need both the Wire.h and the LiquidCrystal_I2C library. In the rest of this tutorial, I will cover more of the built-in functions of this library.

*When using the latest version of the LiquidCrystal_I2C library it is no longer needed to include the wire.h library in your sketch. The other library imports wire.h automatically.

#include “Wire.h” // Library for I2C communication #include “LiquidCrystal_I2C.h” // Library for LCD

The next step is to create an LCD object with the LiquidCrystal_I2C class and specify the address and dimensions. For this, we use the function

LiquidCrystal_I2C(address, columns, rows)

.

This is where you will need to change the default address to the address you found earlier if it happens to be different. When using a 20×4 LCD, change this line to

LiquidCrystal_I2C(0x27,20,4);

Note that we have called the display ‘lcd’. You can give it a different name if you want like ‘menu_display’. You will need to change ‘lcd’ to the new name in the rest of the sketch.

// Connect to LCD via I2C, default address 0x27 (A0-A2 not jumpered) LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // Change to (0x27,20,4) for 20×4 LCD.

Setup

In the setup, the LCD is initiated with

lcd.init()

and the backlight is turned on with

lcd.backlight()

.

void setup() { // Initiate the LCD: lcd.init(); lcd.backlight(); }

Loop

In the loop section of the code, the cursor is set to the third column and the first row of the LCD with

lcd.setCursor(2,0)

.

Note that counting starts at 0 and the first argument specifies the column. So

lcd.setCursor(2,1)

sets the cursor on the third column and the second row.

Next the string ‘Hello World!’ is printed with

lcd.print("Hello World!")

. Note that you need to place quotation marks (” “) around the text since we are printing a text string.

When you want to print numbers, no quotation marks are necessary. For example

lcd.print(12345)

.

void loop() { lcd.setCursor(2, 0); // Set the cursor on the third column and first row. lcd.print(“Hello World!”); // Print the string “Hello World!”. lcd.setCursor(2, 1); //Set the cursor on the third column and the second row. lcd.print(“LCD tutorial”); // Print the string “LCD tutorial”. }

If you want to see an example for displaying (changing) variables on the LCD, check out my tutorial for the HC-SR04 ultrasonic distance sensor:

LCD1602 I2C Address for Arduino explained
LCD1602 I2C Address for Arduino explained

Hiển thị ngày và giờ lên LCD

Bây giờ chúng ta sẽ sử dụng mô-đun RTC với màn hình LCD để hiển thị ngày và giờ hiện tại

Sơ đồ nguyên lý

Chân SCL của LCD sẽ nối chung với chân SCL của module thời gian DS3231 và kết nối với chân A5 của mạch Arduino.

Tương tự, chân SDA của 2 module trên cũng sẽ nối với chân A4 của mạch Arduino.

Code

Trước khi bắt đầu, chúng ta phải tải xuống thư viện RTC và cài đặt thời gian cho module DS3231 (Module khi mới mua thời gian đang bị sai). Thư viện có sẵn tại github.

Giải nén thư viện và copy nó vào thư mục thư viện của Arduino trong Document.

Mở Arduino IDE -> Examples. Chọn ‘setTime’ từ thư viện DS1307.

Cuối cùng upload code vào module RTC DS3231 được kết nối thông qua Arduino và nó sẽ đặt thời gian của module RTC trùng khớp với thời gian trên máy tính.

Bên trong hàm loop, thời gian được đọc ra từ module RTC và đưa ra hiển thị ngoài màn hình.

Bây giờ chúng ta sẽ giải thích từng phần code nhé!

Đầu tiên, gọi ra 3 thư viện: I2C, LCD và RTC và cài đặt địa chỉ của LCD.

Sau hàm khởi tạo cho LCD, hàm createCustomCharacters() được gọi ra và xuất ra màn hình.

#include

#include #include

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address void setup() { lcd.begin(20,4); createCustomCharacters(); printFrame(); }

Mỗi ký tự có chiều rộng tối đa 5 pixel và chiều cao 8 pixel. Vì vậy, để tạo một ký tự tùy chỉnh, chúng ta cần tạo một byte mới.

Bên trong hàm createCustomCharacters(), chúng ta gọi hàm lcd.createChar(#, byte array)

Màn hình LCD hỗ trợ tối đa 8 ký tự tùy chỉnh được đánh số từ 0 đến 7.

byte verticalLine[8] = { B00100, B00100, B00100, B00100, B00100, B00100, B00100, B00100 }; byte char2[8] = { B00000, B00000, B00000, B11100, B00100, B00100, B00100, B00100 }; byte char1[8] = { B00000, B00000, B00000, B00111, B00100, B00100, B00100, B00100 }; byte char3[8] = { B00100, B00100, B00100, B00111, B00000, B00000, B00000, B00000 }; byte char4[8] = { B00100, B00100, B00100, B11100, B00000, B00000, B00000, B00000 }; void createCustomCharacters() { lcd.createChar(0, verticalLine); lcd.createChar(1, char1); lcd.createChar(2, char2); lcd.createChar(3, char3); lcd.createChar(4, char4); }

Sau khi chuẩn bị các ký tự, bây giờ chúng ta sẽ tạo khung.

Hàm này rất đơn giản, nó sử dụng hàm lcd.setCursor (#, #) để di chuyển con trỏ và lcd.print (“”) để hiển thị chuỗi ra LCD.

Hàm sẽ hiển thị ra LCD các dòng ngang trên cùng và dưới cùng, sau đó đến các ký tự tùy chỉnh khác.

void printFrame() { lcd.setCursor(1,0); lcd.print(“——————“); lcd.setCursor(1,3); lcd.print(“——————“); lcd.setCursor(0,1); lcd.write(byte(0)); lcd.setCursor(0,2); lcd.write(byte(0)); lcd.setCursor(19,1); lcd.write(byte(0)); lcd.setCursor(19,2); lcd.write(byte(0)); lcd.setCursor(0,0); lcd.write(byte(1)); lcd.setCursor(19,0); lcd.write(byte(2)); lcd.setCursor(0,3); lcd.write(byte(3)); lcd.setCursor(19,3); lcd.write(byte(4)); }

Như chúng ta đã thảo luận trước đó, mỗi giây hàm loop sẽ lấy thông số ngày – giờ và làm mới chúng trên màn hình.

Đầu tiên, chúng ta xác định phần tử thời gian “tm” có chứa dữ liệu thời gian hiện tại. Nếu thời gian là chính xác và mô-đun RTC hoạt động tốt thì ngày và giờ sẽ được xuất ra ngoài LCD.

void loop() { tmElements_t tm; if (RTC.read(tm)) { printDate(5,1,tm); printTime(6,2,tm); } else { if (RTC.chipPresent()) { //The DS1307 is stopped. Please run the SetTime } else { //DS1307 read error! Please check the circuitry } delay(9000); } delay(1000); }

Hàm PrintTime sử dụng ba đối số, cột và dòng nơi nó sẽ hiển thị thời gian lên LCD và phần tử thời gian.

Hàm lcd.print (tm.Hour) sẽ hiển thị giờ lên LCD, nếu phút và giây nhỏ hơn 10 chúng ta sẽ thêm số 0 vào bên trái. Phương pháp tương tự được sử dụng để hiển thị ngày.

void printTime(int character,int line, tmElements_t tm) { String seconds,minutes; lcd.setCursor(character,line); lcd.print(tm.Hour); lcd.print(“:”); if(tm.Minute<10) { minutes = “0”+String(tm.Minute); lcd.print(minutes); }else { lcd.print(tm.Minute); } lcd.print(“:”); if(tm.Second<10) { seconds = “0”+String(tm.Second); lcd.print(seconds); }else { lcd.print(tm.Second); } } void printDate(int character,int line, tmElements_t tm) { lcd.setCursor(character,line); lcd.print(tm.Month); lcd.print(“/”); lcd.print(tm.Day); lcd.print(“/”); lcd.print(tmYearToCalendar(tm.Year)); }

Mọi thứ đã sẵn sàng, hãy nạp code vào Arduino của bạn và tận hưởng đồng hồ mới.

Bạn có thể tải code và thư viện Arduino trong các tệp đính kèm bên dưới.

TEST LCD 20×4

Đầu tiên, chúng ta sẽ kết nối màn hình LCD với Arduino để hiển thị một số mẫu văn bản và tìm hiểu cách hoạt động của nó

Sơ đồ nguyên lý

Kết nối chân GND với chân Arduino GND, VCC với chân 5V trên Arduino, SDA với chân A4, và cuối cùng là SCL với chân A5.

Code

Trước tiên, chúng ta cần tải xuống thư viện của màn hình, bao gồm tất cả các chức năng cần thiết để cấu hình và ghi dữ liệu. Bạn có thể tải ở đây.

Giải nén thư viện và copy nó vào thư mục thư viện của Arduino trong Document.

Copy toàn bộ code dưới đây vào Arduino IDE và chạy thử.

//Written by Nick Koumaris //[email protected] //educ8s.tv #include

#include LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address void setup() { lcd.begin(20,4); // Initialize LCD lcd.setCursor(3,0); // Set the cursor at the 4th column and 1st row lcd.print(“Hello YouTube!”); lcd.setCursor(8,1); // Set the cursor at the 9th column and 2nd row lcd.print(“****”); lcd.setCursor(0,2); // Set the cursor at the 1st column and 3rd row lcd.print(“This is a demo text”); lcd.setCursor(8,3); // Set the cursor at the 9th column and 4th row lcd.print(“****”); } void loop() { }

Giải thích

lcd.setCursor(3,0);

Đoạn code trên dùng để đặt con trỏ của màn hình LCD ở vị trí được chỉ định. Ở đây là đặt con trỏ ở cột thứ 4 – hàng thứ nhất.

lcd.print(” “);

Đoạn này sẽ hiển thị văn bản trong dấu nháy kép ra màn hình tại vị trí con trỏ hiện tại, hãy chú ý vì các ký tự bị tràn (Vượt quá 20 ô) sẽ bị loại bỏ.

How to Set Up and Program an LCD on the Arduino
How to Set Up and Program an LCD on the Arduino

Giới thiệu LCD 16×2

Màn hình LCD 16×2

Thông số kỹ thuật LCD 16×2

LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.

  • LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).
  • 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
  • Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.
  • Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.

LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.

How to create and display custom characters?

With the function

createChar()

it is possible to create and display custom characters on the LCD. This is especially useful if you want to display a character that is not part of the standard ASCII character set.

CGROM and CGRAM

LCDs that are based on the Hitachi HD44780 LCD controller have two types of memory: CGROM and CGRAM (Character Generator ROM and RAM).

CGROM generates all the 5 x 8 dot character patterns from the standard 8-bit character codes. CGRAM can generate user-defined character patterns.

For 5 x 8 dot displays, CGRAM can write up to 8 custom characters and for 5 x 10 dot displays 4. For more info see the datasheet.

Custom character example code

The following example sketch creates and displays eight custom characters (numbered 0 – 7). You can copy the code by clicking on the button in the top right corner of the code field.

/* Arduino example code to display custom characters on I2C character LCD. More info: www.www.makerguides.com */ // Include the library: #include “LiquidCrystal_I2C.h” // Create lcd object of class LiquidCrystal_I2C: LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // Change to (0x27,20,4) for 20×4 LCD. // Make custom characters: byte Heart[] = { B00000, B01010, B11111, B11111, B01110, B00100, B00000, B00000 }; byte Bell[] = { B00100, B01110, B01110, B01110, B11111, B00000, B00100, B00000 }; byte Alien[] = { B11111, B10101, B11111, B11111, B01110, B01010, B11011, B00000 }; byte Check[] = { B00000, B00001, B00011, B10110, B11100, B01000, B00000, B00000 }; byte Speaker[] = { B00001, B00011, B01111, B01111, B01111, B00011, B00001, B00000 }; byte Sound[] = { B00001, B00011, B00101, B01001, B01001, B01011, B11011, B11000 }; byte Skull[] = { B00000, B01110, B10101, B11011, B01110, B01110, B00000, B00000 }; byte Lock[] = { B01110, B10001, B10001, B11111, B11011, B11011, B11111, B00000 }; void setup() { // Initialize LCD and turn on the backlight: lcd.init(); lcd.backlight(); // Create new characters: lcd.createChar(0, Heart); lcd.createChar(1, Bell); lcd.createChar(2, Alien); lcd.createChar(3, Check); lcd.createChar(4, Speaker); lcd.createChar(5, Sound); lcd.createChar(6, Skull); lcd.createChar(7, Lock); // Clear the LCD screen: lcd.clear(); // Print a message to the lcd: lcd.print(“Custom Character”); } // Print all the custom characters: void loop() { lcd.setCursor(0, 1); lcd.write(0); lcd.setCursor(2, 1); lcd.write(1); lcd.setCursor(4, 1); lcd.write(2); lcd.setCursor(6, 1); lcd.write(3); lcd.setCursor(8, 1); lcd.write(4); lcd.setCursor(10, 1); lcd.write(5); lcd.setCursor(12, 1); lcd.write(6); lcd.setCursor(14, 1); lcd.write(7); }

You should see the following output on the LCD:

How the code works

After including the library and creating the LCD object, the custom character arrays are defined. Each array consists of 8 bytes (only 5 bits are considered). There is 1 byte for each row of the 5 x 8 led matrix. In this example, 8 custom characters are created.

// Make custom characters: byte Heart[] = { B00000, B01010, B11111, B11111, B01110, B00100, B00000, B00000 };

When looking closely at the array, you will see the following. Each row consists of 5 numbers corresponding to the 5 pixels in a 5 x 8 dot character. A 0 means pixel off and a 1 means pixel on. The prefix ‘B’ is the Arduino specific binary formatter.

It is possible to edit each row by hand, but I recommend using this visual tool on GitHub. This application automatically creates the character array and you can click on the pixels to turn them on or off.

In the setup, the custom characters are created with

lcd.createChar(num, data)

. The first argument in this function is the number of the custom character (0-7) and the second argument is the character array that we created.

// Create new characters: lcd.createChar(0, Heart); lcd.createChar(1, Bell); lcd.createChar(2, Alien); lcd.createChar(3, Check); lcd.createChar(4, Speaker); lcd.createChar(5, Sound); lcd.createChar(6, Skull); lcd.createChar(7, Lock);

In the loop, all the characters are displayed with lcd.write(). As the argument, we use the number of the custom character that we want to display.

lcd.setCursor(0, 1); lcd.write(0);

Top 20 Arduino LCD Animation Projects || animation lcd 16x2 || LCD Custom Animation Project
Top 20 Arduino LCD Animation Projects || animation lcd 16×2 || LCD Custom Animation Project

Conclusion

In this article, I have shown you how to use a character I2C LCD with Arduino.

I hope you found it useful and informative. If you did, please share it with a friend that also likes electronics and making things!

I would love to know what projects you plan on building (or have already built) with these LCDs. If you have any questions, suggestions or if you think that things are missing in this tutorial, please leave a comment down below.

Note that comments are held for moderation to prevent spam.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

I2C LCD Basics

This guide is part of our hub of articles on Arduino Displays. This type of LCD is ideal for displaying text and numbers, hence the name ‘character LCD’.

The I2C LCD that we are using in this tutorial comes with a small add-on circuit mounted on the back of the module. This module features a PCF8574 chip (for I2C communication) and a potentiometer to adjust the LED backlight.

The advantage of an I2C LCD is that the wiring is very simple. You only need two data pins to control the LCD. Standard LCDs typically require around 12 connections, which can be a problem if you do not have many GPIO pins available.

Luckily, you can also buy the I2C add-on circuit separately on Amazon, so you can easily upgrade a standard LCD as well.

For a tutorial and wiring diagram for standard character LCDs, please see the following article:

If you look closely at the LCD, you can see the small rectangles that form the individual characters of the LCD. Each rectangle is made up of a grid of 5×8 pixels. Later in this tutorial, I will show you how you can control the individual pixels to display custom characters on the LCD.

Arduino LCD Display Menu System Tutorial
Arduino LCD Display Menu System Tutorial

Các lỗi thường gặp khi sử dụng I2C LCD

  • Hiển thị một dãy ô vuông.
  • Màn hình chỉ in ra một ký tự đầu.
  • Màn hình nhấp nháy.

Các lỗi này chủ yếu là do sai địa chỉ bus, để fix lỗi các bạn thay địa chỉ mặc định là “0x27” thành “0x3F.

Trong trường hợp vẫn không được các bạn fix lỗi bằng cách nạp code tìm địa chỉ bus của I2C.

Sau khi tìm xong các bạn thay địa chỉ vừa tìm được vào vị trí “0x27” là xong.

  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.

Module I2C Arduino

Module I2C LCD 16×2

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

Module I2C LCD ra đời và giải quyết vấn để này cho bạn.

Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

Ưu điểm

  • Tiết kiệm chân cho vi điều khiển.
  • Dễ dàng kết nối với LCD.

Thông số kĩ thuật

  • Điện áp hoạt động: 2.5-6V DC.
  • Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
  • Giao tiếp: I2C.
  • Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).
  • Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
  • Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C. Tại đây

How to connect an I2C LCD Display to an Arduino NANO
How to connect an I2C LCD Display to an Arduino NANO

Lời kết

Qua bài hôm nay các bạn biết cách làm thế nào để hiển thị các ký tự và chuỗi ký tự lên LCD 16×2 và biết cách giao tiếp I2C.

Để nhận được nhiều kiến thức mới các bạn Đăng ký để nhận được thông báo sớm nhất.

Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino.

Nếu các bạn thấy bài viết bổ ích nhớ Like và Share cho mọi người cùng đọc nhé.

Chúc các bạn thành công.

Trân trọng.

Nguồn arduinokit.vn

Khi nhấn nút “Tải Về Máy”, bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút

————————————————————————————

DV1 – NHẬN VẼ MẠCH – LẬP TRÌNH 8051/ARDUINO/STM LẤY TRONG NGÀY

BẤM XEM CÁCH ĐẶT HÀNG TẠI ĐÂY

———————————————————————————–

DV2 – Mua linh kiện về làm mạch nhanh – Miễn phí Ship

DV3 – Kênh youtube chia sẻ kiến thức điện tử thực hành ngay

DV4 – Kênh cộng đồng Facebook Điện Tử ChipKool

CÔNG TY ECHIPKOOL – UY TÍN – CHẤT LƯỢNG – NHANH CHÓNG – BẢO MẬT

This article includes everything you need to know about using a character I2C LCD with Arduino. I have included a wiring diagram and many example codes to help you get started.

The first part of this article covers the basics of displaying text and numbers. In the second half, I will go into more detail on how to display custom characters and how you can use the other functions of the LiquidCrystal_I2C library.

Once you know how to display text and numbers on the LCD, I suggest you take a look at the articles below. In these tutorials, you will learn how to measure and display sensor data on the LCD.

Adjusting the contrast of the LCD

After you have wired up the LCD, you will need to adjust the contrast of the display. On the I2C module, you will find a potentiometer that you can turn with a small screwdriver.

Plug in the USB connector of the Arduino to power the LCD. You should see the backlight light up. Now rotate the potentiometer until one (16×2 LCD) or 2 rows (20×4 LCD) of rectangles appear. You can tweak the contrast later if needed.

Once that is done, we can start programming the LCD.

I2C LCD not showing Text | I2C LCD Errors Fixing || 16x2 LCD not displaying Text || 1602 LCD Error
I2C LCD not showing Text | I2C LCD Errors Fixing || 16×2 LCD not displaying Text || 1602 LCD Error

Keywords searched by users: arduino 2004 lcd i2c code

Introduction To Lcd2004 Lcd Display With I2C Module For Arduino - Youtube
Introduction To Lcd2004 Lcd Display With I2C Module For Arduino – Youtube
How To Use Iic I2C 2004 204 20 X 4 Character Lcd With Arduino - Youtube
How To Use Iic I2C 2004 204 20 X 4 Character Lcd With Arduino – Youtube
Arduino Tutorial: 20X4 I2C Character Lcd Display With Arduino Uno From  Banggood.Com - Youtube
Arduino Tutorial: 20X4 I2C Character Lcd Display With Arduino Uno From Banggood.Com – Youtube
Character I2C Lcd With Arduino Tutorial (8 Examples)
Character I2C Lcd With Arduino Tutorial (8 Examples)
Arduino - Lcd 20X4 | Arduino Tutorial
Arduino – Lcd 20X4 | Arduino Tutorial
Character I2C Lcd With Arduino Tutorial (8 Examples)
Character I2C Lcd With Arduino Tutorial (8 Examples)
Character I2C Lcd With Arduino Tutorial (8 Examples)
Character I2C Lcd With Arduino Tutorial (8 Examples)
Arduino Lcd 20X4 I2C Character Display Module Wide View Angle
Arduino Lcd 20X4 I2C Character Display Module Wide View Angle
Arduino I2C Lcd 16X2 Interfacing
Arduino I2C Lcd 16X2 Interfacing
Lcd 2004 Kèm Module I2C - Nshop
Lcd 2004 Kèm Module I2C – Nshop
How To Use A 20×4 I2C Character Lcd Display With Arduino | Visuino - Visual  Development For Arduino
How To Use A 20×4 I2C Character Lcd Display With Arduino | Visuino – Visual Development For Arduino
Scrolling Text On Lcd I2C Display Using Arduino - Hackster.Io
Scrolling Text On Lcd I2C Display Using Arduino – Hackster.Io
Arduino - Lcd I2C | Arduino Tutorial
Arduino – Lcd I2C | Arduino Tutorial
I2C Lcd With Esp32 On Arduino Ide - Esp8266 Compatible | Random Nerd  Tutorials
I2C Lcd With Esp32 On Arduino Ide – Esp8266 Compatible | Random Nerd Tutorials
16X2 Lcd With I2C Interface (Without I2C Module) - Displays - Arduino Forum
16X2 Lcd With I2C Interface (Without I2C Module) – Displays – Arduino Forum

See more here: kientrucannam.vn

Leave a Reply

Your email address will not be published. Required fields are marked *