Tổng quan LCD 16x2 và giao tiếp I2C LCD sử dụng Arduino

25 Tháng 04 2019 | Đăng bởi: Nguyễn Cường

 

Màn hình LCD 16x2 là một linh kiện được sử dụng rộng rãi trong trong các dự án điện tử và lập trình.

Vậy cách để hiển thị các ký tự các thông số lên LCD 16x2 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é.

Giới thiệu LCD 16x2

man hinh lcd 16x2

Màn hình LCD 16x2

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

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

  • LCD 16x2 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 16x2.

  • 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 16x2 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

module i2c lcd 16x2

Module I2C LCD 16x2

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 16x2 (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 16x2, LCD 20x4, ...) 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

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.

Giao tiếp I2C LCD Arduino

Module I2C LCD 16x2 

Arduino UNO

GND

GND

VCC

5V

SDA

A4/SDA

SCL

A5/SCL

Sơ đồ đấu nối

 

 giao tiep i2c lcd 16x2

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

 

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

Code mẫu

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
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 16x2.

  • 16 là số cột của màn hình (nếu dùng loại màn hình 20x4) 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 20x4) 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 16x2.

 

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 16x2 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ớ LikeShare cho mọi người cùng đọc nhé.

 

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

Trân trọng.

Bài viết liên quan

Viết bình luận: