Skip to content
Home » Display Lcd 16X2 Arduino I2C | Giới Thiệu Lcd 16X2

Display Lcd 16X2 Arduino I2C | Giới Thiệu Lcd 16X2

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

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ế

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.
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

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.

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.
Arduino LCD I2C - Tutorial with Arduino Uno
Arduino LCD I2C – Tutorial with Arduino Uno

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.

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

Giao Tiếp I2C Với LCD 16x2 Bằng Arduino Uno R3 | Điện tử DAT
Giao Tiếp I2C Với LCD 16×2 Bằng Arduino Uno R3 | Điện tử DAT

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

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

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é.

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

Hardware components
Software apps and online services

In this article I am going to interface a 16×2 I2C LCD with Arduino Uno. In my previous article is discuss about interfacing of 16×2 LCD with Arduino Uno. The difference is in number of wires. There we need more than 12 wires. But here only use just 4 wires. How ?!!!!!! Before I use parallel communication method for interfacing LCD with Arduino. But now I am using I2C Communication.

How it works ?

Here I use the same 16X2 LCD in my previous article. But additionally attach a I2C Module to the 16×2 LCD. It work as an inter mediator between the LCD and MCU (here Arduino).

Before starting you must know about I2C Serial Interface Adapter (I2C Module) , I2C communication , and Addressof I2C LCD

I2C Communication

I2C is short for Inter-IC. And it is a type of BUS. This is designed by Philips semiconductors. I2C is a synchronous, multi slave, multi master packet switched, single-ended serial bus. ie. multiple chips can be connect to the same bus.I2C uses only two bidirectional open collector or open drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled up with resistors. Typical voltages used are +5 V or +3.3 V, although systems with other voltages are permitted. For more about I2C protocol click here.

I2C Serial Interface Adapter

It is also known as I2C Module. It has total of 20 male pins. 16 pins are faced to rear side and 4 pins faced towards front side. The 16 pins for connect to 16×2 LCD and the 2 pins out of 4 pins are SDA and SCL. SDA is the serial data pin and SCL is the clock pin. The rest 2 pins for power supply (Vcc and ground).There is a POT on the I2C Module. We can control the contrast of the LCD display by rotating this POT. And there is a jumber fixed on the module. When we remove the jumber, the backlight of the LCD display will go OFF.

Address of I2C LCD

Before starting we need to know about addressing of I2C devices. Every device which can attached to MCU have an address. We need to know this address for communicate with that particular device.

You can see three solder pads on the I2C module. which is labeled as A0, A1 and A2. This is Address selectors. ie, each solder pads have one upper potion and a one lower potion. if, there is a connection between upper potion with lower connection it is called “Connected” otherwise it is called “Not connected”. When A0, A1, A2 are in “Not Connected” condition ( A0 = 0, A1 = 0, A2 = 0) the address would be 0x27. In default the A0, A1, A2 are in “Not connected” condition. And some time default address is 0x3F. There is no need to change the address of the I2C module when we use only one LCD. But when we use more than one LCD, need to change the address. Because two or more different device can’t communicate with the same address. For more address see the table given below.

Step -1

Skip this Step – 1 & Step -2 if you already know the address of the LCD

In some cases A0, A1, A2 are “Not connected” state, but the address is not 0x27. We can’t communicate with this address. So we need to find the original address of that device. For that we need to run the Arduino with “I2C Scanner” code.

I2C Scanner Code

I2C Scanner code is used for find the number of I2C devices and address of I2C devices. First add the header file for include “Wire.h” library. Then in setup part, begin the “Wire” library by “Wire.begin()”. Then begin the serial monitor as the baud rate of 9600 by “Serial.begin()”. Next in loop part, define two variables with the datatype “byte” named “error” and “address”. Then define another variable with the “Integer ( int)” datatype named as “Devices”. And set initial value as 0. Next start a for loop with minimum value of 1 and maximum of 127. “address” used as loop variable. Next input the address to wire with the function “Wire.beginTransmission()”. The i2c_scanner uses the return value of the “Write.endTransmisstion()” to see if a device did acknowledge to the address. This return value store the value to the variable “error”. The return value become 0, if a device acknowledge to the address. Otherwise, the return value become 4. Next use a if. And the condition is “error==0”. Then print the particular address to the serial monitor only if the address<16. Here we print the address in Hexadecimal. The printing instruction is “Serial.print(address, HEX)”. And count the Device. The complete I2C Scanner code is given below


#include

void setup(){Wire.begin();Serial.begin(9600);Serial.println(“\nI2C Scanner”);}void loop(){byte error, address;int Devices;Serial.println(“Scanning…”);Devices = 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(” !”);Devices++;}else if (error==4){Serial.print(“Unknown error at address 0x”);if (address<16)Serial.print(“0”);Serial.println(address,HEX);}}if (Devices == 0)Serial.println(“No I2C devices found\n”);elseSerial.println(“done\n”);delay(5000);}

Upload the I2C Scanner Code to Arduino Uno.

Step- 2

If you have a I2C LCD please skip this step. But if you have a 16×2 LCD and a I2C Module see the step to connect this module to LCD.

Connection

First solder the I2C Module. There is no label on the I2C Module for connecting to 16×2 LCD. So solder it with the help of the image given below

After soldering connect the I2C Module to Arduino Uno.

Arduino Uno I2C module

Analog Pin 4 – SDA

Analog pin 5 – SCL

5V – Vcc

GND – GND

Connect the Arduino to computer.

Next open Serial monitor from the icon on top right corner of Arduino IDE. And set the baud rate as 9600. Please ensure the correct port. Then you can see the address of LCD in serial monitor like shown below

Finally we find the address of the I2C LCD. That is 0x27

Step – 3

Next I am going to display a text on our I2C LCD.

Before that need to add a library to Arduino IDE. Go to the link and download the library Arduino-LiquidCrystal-I2C-library. Then open Arduino IDE and go to Sketch>Include Library> Add.ZIP Library. Next select the downloaded ZIP file and click open.

Step – 4

Next create a sketch. First I include the header “Wire.h”. This library help to communicate with I2C device. Then include “LiquidCrystal_I2C.h” for better communication with display.


#include

#include

Step – 5

Next set the address, number of column and number of rows using the function “LiquidCrystal_I2C lcd(). The address is 0x27 (discovered using the I2C Scanner Code). Number of columns is 16 and number of rows is 2. After this, we can call the display using “lcd”. You can also use multiple I2C LCDs with Arduino Uno. But set different addresses and variable for each display.


LiquidCrystal_I2C lcd(0x27, 16, 2);

Step – 6

Next code the setup part. First initialize the display using the function “lcd.begin()”. If you have another display initialize them.


lcd.begin();

Step – 7

Next turn on the backlight using the function “lcd.backlight()”.


lcd.backlight();

Step – 8

Next clear the lcd using the instruction “lcd.clear()”. Then set the cursor to the position (4, 0).


lcd.clear();

lcd.setCursor(4,0);

Step – 9

Now the LCD is ready to print. The cursor is at 4th column(count from 0), and 0th row(count from 0). Then print the Message “Hackster” by the function “lcd.print()”.


lcd.print("Hackster");

Then leave the loop part as empty.

The programming is completed. Upload the sketch to Arduino and see the message on LCD. The complete code is given in the Code section of this article.

Please don’t copy-paste my code. Try to understand the code line by line and create your own sketch.

You can join our telegram group here or search INNOVATION. Any doubts about hardware or programming please feel free to ask in our telegram group.

Follow me on,

Instagram : five_volt_player

Contact : [email protected]

Share your experience and suggestions on the comment box.

Previous articles :

Interface 16×2 LCD (parallel interface) with Arduino Uno, Touchless Doorbell, Interfacing Bluetooth Module (HC-05) with Arduino Uno,Automatic Water Tap,Automatic Hand Sanitizer,Interface Ultrasonic sensor with Arduino Uno,Control Servo motor with Arduino Uno and Pushbutton,Control Servo motor with Arduino Uno and POT,Servo Motor Interface with Arduino Uno,IR Controlled Home Appliances With Saving Previous State,Touchless Hand Wash Timer

This is a very short example. How to wire up an 16×2 LCD to the arduino using i2c communication and then display text, numbers, some special cahracters but also some unique made icons byte by byte. Below you have the schematic you need and an example code. Remember to install the i2c lyquid crystal library. Read the comments in the code for more or leave a question below.
First, make sure you solder a i2c module like this one on this link, to the pins of the LCD. This module could control the 16×2 LCD but also the 20×4 one and costs only 1 dollar.

Ok, make the i2c connections from the Arduino to the LCD module as below. Add a 10k potentiometer in order to be able to set the contrast of the LCD: Also a small 220 resistor to limit the current fot the backlight LED. The rest of the pins are the parallel data and the wr/re pins.

First of all, you need the i2c liquid crystral library in order to work. For that, go below and downlaod that library. It will be a .zip file. Open Arduino IDE and go to sketch, include library, add .zip library and select the downlaoded file. Now the library is installed. You could downlaod the example code or just copy/paste it from below.


/* i2c LCD control for 16x2. * Tutorial: http://www.electronoobs.com/eng_arduino_tut51.php * Tutorial: http://www.electronoobs.com/eng_arduino_tut51_sch1.php */ //LCD config #include

#include LiquidCrystal_I2C lcd(0x3f,20,4); //sometimes the LCD adress is not 0x3f. Change to 0x27 if it dosn't work. int i = 0; uint8_t bell[8] = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4}; uint8_t note[8] = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0}; uint8_t Clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0}; uint8_t duck[8] = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0}; uint8_t check[8] = {0x0, 0x1 ,0x3, 0x16, 0x1c, 0x8, 0x0}; uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0}; uint8_t retarrow[8] = { 0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4}; void setup() { lcd.init(); //Init the LCD lcd.backlight(); //Activate backlight lcd.createChar(0, bell); lcd.createChar(1, note); lcd.createChar(2, Clock); lcd.createChar(3, heart); lcd.createChar(4, duck); lcd.createChar(5, check); lcd.createChar(6, cross); lcd.createChar(7, retarrow); lcd.home(); } void loop() { // Turn off the display: lcd.clear(); lcd.print(" ELECTRONOOBS "); lcd.clear(); lcd.setCursor(0,0); lcd.write(1); lcd.write(2); lcd.write(3); lcd.write(4); lcd.write(5); lcd.write(6); lcd.write(7); delay(3000); lcd.noDisplay(); delay(500); // Turn on the display: lcd.display(); delay(500); lcd.noDisplay(); delay(500); // Turn on the display: lcd.display(); delay(500); lcd.clear(); while(i<16) { lcd.setCursor(i,0); lcd.print("X"); i = i + 1; delay(100); } i = 0; while(i<16) { lcd.setCursor(i,1); lcd.print("X"); i = i + 1; delay(100); } i = 0; lcd.setCursor(0,0); lcd.print(" 1234567890 "); lcd.setCursor(0,1); lcd.print(" 0987654321 "); delay(2000); lcd.setCursor(0,0); lcd.print(" !$%&/()=?! "); lcd.setCursor(0,1); lcd.print(" |@#~!$%&/% "); delay(2000); lcd.clear(); lcd.setCursor(0,1); lcd.print(" This is LCD 2 "); delay(3000); }

First of all, you need the i2c liquid crystral library in order to work. For that, go below and downlaod that library. It will be a .zip file. Open Arduino IDE and go to sketch, include library, add .zip library and select the downlaoded file. Now the library is installed. You could downlaod the example code or just copy/paste it from below.


/* i2c LCD control for 16x2. * Tutorial: http://www.electronoobs.com/eng_arduino_tut51.php * Tutorial: http://www.electronoobs.com/eng_arduino_tut51_sch1.php */ //LCD config #include

#include LiquidCrystal_I2C lcd(0x3f,20,4); //sometimes the LCD adress is not 0x3f. Change to 0x27 if it dosn't work. LiquidCrystal_I2C lcd2(0x27,20,4); //sometimes the LCD adress is not 0x3f. Change to 0x27 if it dosn't work. int i = 0; uint8_t bell[8] = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4}; uint8_t note[8] = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0}; uint8_t Clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0}; uint8_t duck[8] = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0}; uint8_t check[8] = {0x0, 0x1 ,0x3, 0x16, 0x1c, 0x8, 0x0}; uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0}; uint8_t retarrow[8] = { 0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4}; void setup() { lcd.init(); //Init the LCD lcd.backlight(); //Activate backlight lcd2.init(); //Init the LCD lcd2.backlight(); //Activate backlight lcd.createChar(0, bell); lcd.createChar(1, note); lcd.createChar(2, Clock); lcd.createChar(3, heart); lcd.createChar(4, duck); lcd.createChar(5, check); lcd.createChar(6, cross); lcd.createChar(7, retarrow); lcd.home(); lcd2.createChar(0, bell); lcd2.createChar(1, note); lcd2.createChar(2, Clock); lcd2.createChar(3, heart); lcd2.createChar(4, duck); lcd2.createChar(5, check); lcd2.createChar(6, cross); lcd2.createChar(7, retarrow); lcd2.home(); } void loop() { // Turn off the display: lcd.clear(); lcd.print(" ELECTRONOOBS "); lcd2.clear(); lcd2.print(" ELECTRONOOBS "); lcd.clear(); lcd.setCursor(0,0); lcd.write(1); lcd.write(2); lcd.write(3); lcd.write(4); lcd.write(5); lcd.write(6); lcd.write(7); delay(3000); lcd2.clear(); lcd2.setCursor(0,0); lcd2.write(1); lcd2.write(2); lcd2.write(3); lcd2.write(4); lcd2.write(5); lcd2.write(6); lcd2.write(7); delay(3000); lcd.noDisplay(); lcd2.noDisplay(); delay(500); // Turn on the display: lcd.display(); lcd2.display(); delay(500); lcd.noDisplay(); lcd2.noDisplay(); delay(500); // Turn on the display: lcd.display(); lcd2.display(); delay(500); lcd.clear(); lcd2.clear(); while(i<16) { lcd.setCursor(i,0); lcd.print("X"); lcd2.setCursor(i,0); lcd2.print("X"); i = i + 1; delay(100); } i = 0; while(i<16) { lcd.setCursor(i,1); lcd.print("X"); lcd2.setCursor(i,1); lcd2.print("X"); i = i + 1; delay(100); } i = 0; lcd.setCursor(0,0); lcd.print(" 1234567890 "); lcd2.setCursor(0,0); lcd2.print(" 1234567890 "); lcd.setCursor(0,1); lcd.print(" 0987654321 "); lcd2.setCursor(0,1); lcd2.print(" 0987654321 "); delay(2000); lcd.setCursor(0,0); lcd.print(" !$%&/()=?! "); lcd2.setCursor(0,0); lcd2.print(" !$%&/()=?! "); lcd.setCursor(0,1); lcd.print(" |@#~!$%&/% "); lcd2.setCursor(0,1); lcd2.print(" |@#~!$%&/% "); delay(2000); lcd.clear(); lcd.setCursor(0,1); lcd.print(" This is LCD 2 "); lcd2.clear(); lcd2.setCursor(0,0); lcd2.print(" This is LCD 1 "); delay(3000); }

First of all, you need the i2c liquid crystral library in order to work. For that, go below and downlaod that library. It will be a .zip file. Open Arduino IDE and go to sketch, include library, add .zip library and select the downlaoded file. Now the library is installed. You could downlaod the example code or just copy/paste it from below.


/* i2c LCD control for 20x4. * Tutorial: http://www.electronoobs.com/eng_arduino_tut51.php * Tutorial: http://www.electronoobs.com/eng_arduino_tut51_sch1.php */ //LCD config #include

#include LiquidCrystal_I2C lcd(0x27,20,4); //sometimes the LCD adress is not 0x3f. Change to 0x27 if it dosn't work. int i = 0; uint8_t bell[8] = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4}; uint8_t note[8] = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0}; uint8_t Clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0}; uint8_t duck[8] = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0}; uint8_t check[8] = {0x0, 0x1 ,0x3, 0x16, 0x1c, 0x8, 0x0}; uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0}; uint8_t retarrow[8] = { 0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4}; void setup() { lcd.init(); //Init the LCD lcd.backlight(); //Activate backlight lcd.createChar(0, bell); lcd.createChar(1, note); lcd.createChar(2, Clock); lcd.createChar(3, heart); lcd.createChar(4, duck); lcd.createChar(5, check); lcd.createChar(6, cross); lcd.createChar(7, retarrow); lcd.home(); } void loop() { // Turn off the display: lcd.clear(); lcd.print(" ELECTRONOOBS "); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.write(1); lcd.write(2); lcd.write(3); lcd.write(4); lcd.write(5); lcd.write(6); lcd.write(7); delay(3000); lcd.noDisplay(); delay(500); // Turn on the display: lcd.display(); delay(500); lcd.noDisplay(); delay(500); // Turn on the display: lcd.display(); delay(500); lcd.clear(); while(i<20) { lcd.setCursor(i,0); lcd.print("X"); i = i + 1; delay(50); } i = 0; while(i<20) { lcd.setCursor(i,1); lcd.print("X"); i = i + 1; delay(50); } i = 0; while(i<20) { lcd.setCursor(i,2); lcd.print("X"); i = i + 1; delay(50); } i = 0; while(i<20) { lcd.setCursor(i,3); lcd.print("X"); i = i + 1; delay(50); } i = 0; lcd.clear(); lcd.setCursor(0,0); lcd.print(" 1234567890 "); lcd.setCursor(0,1); lcd.print(" 0987654321 "); lcd.setCursor(0,2); lcd.print(" 1234567890 "); lcd.setCursor(0,3); lcd.print(" 0987654321 "); delay(2000); lcd.setCursor(0,0); lcd.print(" !$%&/()=?! "); lcd.setCursor(0,1); lcd.print(" |@#~!$%&/% "); lcd.setCursor(0,2); lcd.print(" !$%&/()=?! "); lcd.setCursor(0,3); lcd.print(" |@#~!$%&/% "); delay(2000); lcd.clear(); lcd.setCursor(0,1); lcd.print(" This is LCD 1 "); delay(3000); }

Arduino LCD I2C Tutorial-Visuino
Arduino LCD I2C Tutorial-Visuino

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.

    • Tổng tiền thanh toán:
Code test cơ bản

#include

void loop()

Code Đếm số 0 đến 9 LCD 16×2 I2C

#include

void loop()

Code test cơ bản

#include

void loop()

Code Đếm số 0 đến 9 LCD 16×2 I2C

#include

void loop()

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é.

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  LCD LCD1602  with I2C module for Arduino - Robojax
How to use LCD LCD1602 with I2C module for Arduino – Robojax

Keywords searched by users: display lcd 16×2 arduino i2c

In-Depth: Interfacing An I2C Lcd With Arduino
In-Depth: Interfacing An I2C Lcd With Arduino
I2C 16X2 Arduino Lcd Display Module | The Pi Hut
I2C 16X2 Arduino Lcd Display Module | The Pi Hut
Arduino I2C Lcd 16X2 Interfacing
Arduino I2C Lcd 16X2 Interfacing
In-Depth: Interfacing An I2C Lcd With Arduino
In-Depth: Interfacing An I2C Lcd With Arduino
Interface I2C 16X2 Lcd With Arduino Uno (Just 4 Wires) - Hackster.Io
Interface I2C 16X2 Lcd With Arduino Uno (Just 4 Wires) – Hackster.Io
Como Usar O Módulo I2C Com Arduino E Display Lcd 16X2 - Arduino E Cia - Loja
Como Usar O Módulo I2C Com Arduino E Display Lcd 16X2 – Arduino E Cia – Loja
Giao Tiếp Lcd 16X2 I2C Với Arduino Uno | Điện Tử Dat
Giao Tiếp Lcd 16X2 I2C Với Arduino Uno | Điện Tử Dat
I2C 1602 Serial Lcd For Arduino & Rpi
I2C 1602 Serial Lcd For Arduino & Rpi
Arduino I2C Serial Lcd / Lcd Display (16X2 / 20X4) / I2C Module
Arduino I2C Serial Lcd / Lcd Display (16X2 / 20X4) / I2C Module
How To Connect I2C Lcd Display To Arduino Uno : 5 Steps (With Pictures) -  Instructables
How To Connect I2C Lcd Display To Arduino Uno : 5 Steps (With Pictures) – Instructables
I2C 16X2 Arduino Lcd Display Module | The Pi Hut
I2C 16X2 Arduino Lcd Display Module | The Pi Hut
Dfrobot I2C 16X2 Arduino Lcd Display Module | Ebay
Dfrobot I2C 16X2 Arduino Lcd Display Module | Ebay
Tổng Quan Lcd 16X2 Và Giao Tiếp I2C Lcd Sử Dụng Arduino | Arduino Kit
Tổng Quan Lcd 16X2 Và Giao Tiếp I2C Lcd Sử Dụng Arduino | Arduino Kit
Interfacing 16X2 Lcd With Arduino Uno | 16X2 Lcd Arduino I2C - Youtube
Interfacing 16X2 Lcd With Arduino Uno | 16X2 Lcd Arduino I2C – Youtube
16X2 Lcd Display I2C White On Blue Philippines - Makerlab Electronics
16X2 Lcd Display I2C White On Blue Philippines – Makerlab Electronics
Lcd I2C 1602 Display Module Blue Philippines | Circuitrocks – Circuitrocks
Lcd I2C 1602 Display Module Blue Philippines | Circuitrocks – Circuitrocks
Hd44780 1602 Lcd Module Display Bundle With I2C Interface 2X16 Characters  Compatible With Arduino And Raspberry Pi
Hd44780 1602 Lcd Module Display Bundle With I2C Interface 2X16 Characters Compatible With Arduino And Raspberry Pi
16X2 Lcd With I2C Backpack For Arduino Etc.. - Buy Online From Christchurch  New Zealand Character Lcd Displays Online Shop
16X2 Lcd With I2C Backpack For Arduino Etc.. – Buy Online From Christchurch New Zealand Character Lcd Displays Online Shop
I2C Lcd With Esp32 On Arduino Ide - Esp8266 Compatible | Random Nerd  Tutorials
I2C Lcd With Esp32 On Arduino Ide – Esp8266 Compatible | Random Nerd Tutorials
Esp32 Lcd Display 16X2 Without I2C - Arduino Core – Deepblue
Esp32 Lcd Display 16X2 Without I2C – Arduino Core – Deepblue
Arduino I2C Serial Lcd / Lcd Display (16X2 / 20X4) / I2C Module
Arduino I2C Serial Lcd / Lcd Display (16X2 / 20X4) / I2C Module
How To Use 16X2 And 20X4 Lcd Display With Arduino || Liquid Crystal I2C  Library Download - Youtube
How To Use 16X2 And 20X4 Lcd Display With Arduino || Liquid Crystal I2C Library Download – Youtube
Giao Diện Lcd I2C Với Văn Bản Chạy Trên Màn Hình Arduino Và Các Ký Tự Tùy  Chỉnh | Mecsu.Vn
Giao Diện Lcd I2C Với Văn Bản Chạy Trên Màn Hình Arduino Và Các Ký Tự Tùy Chỉnh | Mecsu.Vn
I2C Lcd With Esp32 On Arduino Ide - Esp8266 Compatible | Random Nerd  Tutorials
I2C Lcd With Esp32 On Arduino Ide – Esp8266 Compatible | Random Nerd Tutorials
Integrating An I2C Lcd 16X2 Display (Mcp23008-Based) With Arduino Uno, Led,  And Buzzer - A Comprehensive Guide - Iot3Tdiy
Integrating An I2C Lcd 16X2 Display (Mcp23008-Based) With Arduino Uno, Led, And Buzzer – A Comprehensive Guide – Iot3Tdiy
Ds Robotics Lcd 16X2 Alphanumeric Display + Iic/I2C Serial Interface  Adapter Module For Arduino Electronic Components Electronic Hobby Kit Price  In India - Buy Ds Robotics Lcd 16X2 Alphanumeric Display + Iic/I2C
Ds Robotics Lcd 16X2 Alphanumeric Display + Iic/I2C Serial Interface Adapter Module For Arduino Electronic Components Electronic Hobby Kit Price In India – Buy Ds Robotics Lcd 16X2 Alphanumeric Display + Iic/I2C
Mô Đun Màn Hình Lcd 1602 1602 Lcd1602+I2C/Iic 16X2 Pcf8574T Pcf8574 Iic I2C  Giao Diện 5V Cho Arduino | Shopee Việt Nam
Mô Đun Màn Hình Lcd 1602 1602 Lcd1602+I2C/Iic 16X2 Pcf8574T Pcf8574 Iic I2C Giao Diện 5V Cho Arduino | Shopee Việt Nam
16X2 I2C Lcd Display Module With Blue Backlight - Parallax
16X2 I2C Lcd Display Module With Blue Backlight – Parallax
Amazon.Com: Geeekpi 2-Pack I2C 1602 Lcd Display Module 16X2 Character  Serial Blue Backlight Lcd Module For Raspberry Pi Arduino Stm32 Diy Maker  Project Nanopi Bpi Tinker Board Electrical Iot Internet Of Things :
Amazon.Com: Geeekpi 2-Pack I2C 1602 Lcd Display Module 16X2 Character Serial Blue Backlight Lcd Module For Raspberry Pi Arduino Stm32 Diy Maker Project Nanopi Bpi Tinker Board Electrical Iot Internet Of Things :
How To Use I2C Lcd With Arduino | Very Easy Arduino Lcd I2C Tutorial | Arduino  16X2 Lcd I2C Tutorial - Youtube
How To Use I2C Lcd With Arduino | Very Easy Arduino Lcd I2C Tutorial | Arduino 16X2 Lcd I2C Tutorial – Youtube
Arduino - Lcd I2C | Arduino Tutorial
Arduino – Lcd I2C | Arduino Tutorial
Arduino Nano Dht22 Lcd 16X2 I2C Temp And Humidity Display - Hackster.Io
Arduino Nano Dht22 Lcd 16X2 I2C Temp And Humidity Display – Hackster.Io

See more here: kientrucannam.vn

Leave a Reply

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