Arduino Màn hình LCD
Trong bài hướng dẫn LCD Arduino này, chúng ta sẽ học cách kết nối một LCD (màn hình tinh thể lỏng) với bảng Arduino. LCD rất phổ biến và được sử dụng rộng rãi trong các dự án điện tử để hiển thị thông tin. Có nhiều loại LCD. Bài hướng dẫn này lấy LCD 16x2 (16 cột và 2 hàng) làm ví dụ. Các loại LCD khác tương tự.
※ Lưu ý:
Nếu bạn muốn đơn giản hóa việc đấu dây, bạn có thể sử dụng LCD I2C thay thế. Xem Arduino - Màn hình LCD I2C.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | LCD | ||
| 1 | × | Chiết áp | ||
| 1 | × | Alternatively, 10k Ohm Trimmer Potentiometer | ||
| 1 | × | Mô-đun chiết áp có núm xoay | ||
| 1 | × | (Hoặc) Potentiometer Kit | ||
| 1 | × | (Hoặc) Potentiometer Module with Knob | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về màn hình LCD 16x2
Bố trí các chân

LCD có tối đa 16 chân. Trong các ứng dụng phổ biến nhất, chúng ta không sử dụng hết tất cả các chân.
Với sự hỗ trợ của thư viện LiquidCrystal, chúng ta thậm chí có thể sử dụng LCD mà không cần biết ý nghĩa của các chân này. Tuy nhiên, nếu bạn tò mò hoặc muốn tìm hiểu sâu, hãy xem các chân này và chức năng của chúng:
- Chân GND: cần được kết nối với GND (0V).
- Chân VCC: nguồn cấp cho LCD, cần được kết nối với VCC (5V).
- Chân Vo (Độ tương phản LCD): điều khiển độ tương phản và độ sáng của LCD, có thể được kết nối với 5V (độ tương phản và độ sáng cao nhất), hoặc kết nối với một biến trở (để điều chỉnh độ tương phản và độ sáng).
- Chân RS (Register Select): Có hai loại dữ liệu cần gửi cho LCD: lệnh (để điều khiển LCD) và dữ liệu. Hai loại này được gửi trên cùng một bus dữ liệu. Chân RS cho LCD biết dữ liệu trên bus là lệnh hay dữ liệu.
- Nếu muốn gửi lệnh để điều khiển LCD, ta cần đặt chân RS ở mức LOW (ví dụ: đặt con trỏ đến một vị trí cụ thể, xóa màn hình ...).
- Nếu muốn gửi dữ liệu để hiển thị trên LCD, ta cần đặt chân RS ở mức HIGH.
- Chân R/W (Đọc/Viết): để chọn chế độ ĐỌC hoặc VIẾT.
- Nếu muốn đọc dữ liệu từ LCD, chân này cần được đặt ở HIGH.
- Nếu muốn gửi dữ liệu tới LCD, chân này cần được đặt ở LOW. Vì chúng ta chỉ dùng LCD này như một thiết bị OUTPUT, nên sẽ kéo chân này xuống LOW.
- Chân EN (Kích hoạt): được dùng để bật LCD. HIGH để bật LCD, LOW để tắt LCD.
- Các chân D0-D7 (Dữ liệu trên bus): mang dữ liệu và lệnh giữa Arduino và LCD. Có hai chế độ gửi dữ liệu: chế độ 4 bit và chế độ 8 bit.
- Các chân A-K (Anode và Cathode): được dùng để cấp nguồn cho đèn nền LCD. Chân A cần kết nối với VCC. Chân K cần kết nối với GND.
Chế độ 4-bit và 8-bit
- Chế độ 8-bit: 8 bit của một byte được gửi đồng thời trên các chân D0 đến D7.
- Chế độ 4-bit: 8 bit của một byte được gửi hai lần, mỗi lần 4 bit trên các chân D4 đến D7.
Chế độ 8-bit nhanh hơn chế độ 4-bit, nhưng sử dụng nhiều chân hơn chế độ 4-bit. Việc chọn chế độ được thực hiện trong quá trình khởi tạo bằng cách gửi một lệnh tới LCD.
Hướng dẫn này sử dụng chế độ 4 bit, đây là chế độ được sử dụng phổ biến nhất.
Trong chế độ này, các chân của LCD:
- 6 chân (RS, EN, D4, D5, D6 và D7) được kết nối với các chân của Arduino.
- 4 chân (D0, D1, D2 và D3) không được kết nối.
- 6 chân còn lại được kết nối với GND hoặc VCC hoặc với biến trở.
Bảng chân LCD ở chế độ 4 bit
| LCD PIN | CONNECTED TO | |
|---|---|---|
| 01 | GND | GND |
| 02 | VCC | 5V |
| 03 | Vo | 5V or potentiometer's pin |
| 04 | RS | An Arduino's pin |
| 05 | R/W | GND |
| 06 | EN | An Arduino's pin |
| 07 | D0 | NOT connected |
| 08 | D1 | NOT connected |
| 09 | D2 | NOT connected |
| 10 | D3 | NOT connected |
| 11 | D4 | An Arduino's pin |
| 12 | D5 | An Arduino's pin |
| 13 | D6 | An Arduino's pin |
| 14 | D7 | An Arduino's pin |
| 15 | A | 5V |
| 16 | K | GND |
Tọa độ LCD
LCD 16x2 gồm 16 cột và 2 hàng. Các cột và hàng được đánh số từ 0.

Cách hoạt động
Quá trình gửi dữ liệu (để hiển thị) đến LCD:
- Arduino đặt chân RS ở mức HIGH (để chọn bộ thanh ghi dữ liệu).
- Arduino ghi dữ liệu lên các chân D4 đến D7 (bus dữ liệu).
- LCD nhận dữ liệu từ bus dữ liệu.
- LCD lưu dữ liệu nhận được vào điện trở dữ liệu vì chân RS ở mức HIGH. Sau đó, LCD hiển thị dữ liệu trên màn hình.
Quá trình gửi lệnh (để điều khiển) tới LCD (ví dụ: nhấp nháy màn hình LCD, đặt con trỏ ở một vị trí cụ thể, xóa màn hình ...):
- Arduino đặt chân RS ở mức LOW (để chọn thanh ghi lệnh)
- Arduino ghi lệnh lên các chân D4 → D7 (bus dữ liệu)
- LCD nhận dữ liệu trên bus dữ liệu
- LCD lưu dữ liệu nhận được vào thanh ghi lệnh vì chân RS ở mức LOW. Sau đó, LCD thực hiện hành động dựa trên giá trị của lệnh.
Arduino - màn hình LCD
Việc điều khiển LCD là một nhiệm vụ khá phức tạp. May mắn thay, nhờ thư viện LiquidCrystal, thư viện này giúp đơn giản hóa quá trình điều khiển LCD cho bạn để bạn không cần phải biết các lệnh ở mức thấp. Bạn chỉ cần kết nối Arduino với LCD và sử dụng các hàm của thư viện. Việc sử dụng LCD rất dễ dàng.
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Màn Hình LCD
- Bao gồm thư viện:
- Xác định chân Arduino được kết nối với sáu chân LCD: RS, EN, D4, D4, D6, D7
Một trong những ưu điểm của thư viện là chân trên Arduino kết nối với LCD có thể được cấu hình. Điều này làm cho việc kết nối Arduino với LCD và các cảm biến cũng như các bộ truyền động khác trở nên linh hoạt.
- Khai báo một đối tượng LiquidCrystal:
- Thiết lập số cột và số hàng của màn hình LCD.
- Di chuyển con trỏ đến vị trí mong muốn (column_index, row_index)
- Hiển thị một thông điệp lên màn hình LCD.
Có nhiều điều nữa mà chúng ta có thể làm với LCD (xem phần Làm nhiều hơn với LCD)
※ Lưu ý:
Bạn có thể chọn bất kỳ sáu chân nào của Arduino để kết nối với LCD, miễn là bạn chỉ định chân được kết nối trong mã Arduino.
Mã Arduino
Hướng dẫn từng bước
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấp vào Tải lên nút trên Arduino IDE để tải mã lên Arduino
- Xem kết quả trên màn hình LCD

- Thử chỉnh sửa văn bản và vị trí
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Nhân vật tùy chỉnh
lcd.print() hàm chỉ hỗ trợ ký tự ASCII. Nếu bạn muốn hiển thị một ký tự đặc biệt hoặc biểu tượng (ví dụ: trái tim, Angry Bird), bạn cần sử dụng bộ tạo ký tự dưới đây.
LCD 16x2 có thể hiển thị 32 ký tự (2 hàng và 16 cột). Mỗi ký tự được tạo thành từ 40 điểm ảnh (8 hàng và 5 cột).
Trình tạo ký tự đại diện cho một ký tự (40 pixel). Bạn chỉ cần thực hiện các bước sau:
Kết quả trên màn hình LCD:

Nhiều ký tự tùy chỉnh
Chúng ta có thể tạo tối đa 8 ký tự tùy chỉnh (được đánh số từ 0 đến 7). Ví dụ dưới đây tạo và hiển thị ba ký tự.
Kết quả trên màn hình LCD:

Tóm tắt: cách sử dụng ký tự tùy chỉnh trên LCD
- Sử dụng trình tạo ký tự ở trên để tạo mã nhị phân cho ký tự tùy chỉnh.
- Khai báo mã nhị phân cho ký tự tùy chỉnh (sao chép từ bước ở trên).
- Tạo ký tự tùy chỉnh và gán cho một chỉ mục (từ 0 đến 7) trong hàm setup()
- Hiển thị ký tự tùy chỉnh trên LCD bất cứ lúc nào, ở bất cứ đâu (trong hàm setup() hoặc loop())
Thách thức bản thân
Sử dụng LCD để thực hiện một trong các dự án sau:
- Gửi văn bản từ PC (qua Serial Monitor) và hiển thị trên LCD. Gợi ý: Tham khảo Cách gửi dữ liệu từ PC tới Aduino
- Hiển thị phím được nhấn của keypad lên LCD. Gợi ý: Tham khảo Arduino - Bàn phím