Hướng dẫn sử dụng màn hình LCD 16×2 với Arduino
Trong hướng dẫn này, các bạn sẽ tìm hiểu cách sử dụng màn hình LCD 16×2 với Arduino, bằng cách sử dụng thư viện LiquidCrystal để điều khiển màn hình.
Qua đó sẽ khám phá các chức năng cơ bản của màn hình LCD 1602 như hiển thị văn bản, di chuyển con trỏ, xóa màn hình và điều chỉnh độ sáng. Bên cạnh đó, các bạn sẽ tìm hiểu cách tạo các ký tự tùy chỉnh trên màn hình LCD arduino.
Linh kiện cần thiết cho dự án
TÊN LINH KIỆN | SỐ LƯỢNG | NƠI BÁN |
Arduino Uno R3 | 1 | Shopee | Cytron |
Màn hình LCD 16×2 | 1 | Shopee | Cytron |
Biến trở vuông 10K | 1 | Shopee | Cytron |
Điện trở 220R | 1 | Shopee | Cytron |
Dây cắm | 10-20 | Shopee | Cytron |
Breadboard | 1 | Shopee | Cytron |
Tổng quan về màn hình LCD 16×2
Màn hình LCD 16×2 là một loại màn hình ký tự thông dụng trong các dự án điện tử. Nó có khả năng hiển thị 16 cột và 2 hàng của các ký tự.
Màn hình này sử dụng công nghệ hiển thị Liquid Crystal Display (LCD) để hiển thị thông tin. Nó có thể hiển thị các ký tự từ bảng mã ASCII và có thể hiển thị các ký tự chữ cái, chữ số, ký tự đặc biệt và các biểu tượng khác.
Màn hình LCD 16×2 có một lưới pixel 5×8 cho mỗi ký tự. Điều này có nghĩa là mỗi ký tự được hiển thị bằng một ma trận 5×8 điểm ảnh. Nó cũng có thể hiển thị các ký tự tiếng Việt nhưng có giới hạn một số ký tự đặc biệt.
Sơ đồ chân màn hình LCD 16×2
1: Vss -- GND 2: Vcc -- 5V 3: Vo -- Biến trở điều chỉnh độ tương phản 4: RS -- Digital pin 5: R/W -- Digital pin 6: E -- Digital pin 7-14: DB0-DB7 -- Digital pins 15: LED+ -- Anode của đèn nền (5V) 16: LED- -- Cathode của đèn nền (GND)
Hướng dẫn kiểm tra màn hình LCD Arduino
Tiếp theo của bài viết mình sẽ hướng cho các bạn cách thực hiện bước kiểm tra màn hình LCD 16×2 với các bước sau:
Bước 1: Kết nối chân nguồn
- Kết nối chân 5V của Arduino với đường nguồn dương (+) trên breadboard.
- Kết nối chân GND của Arduino với đường nguồn âm (-) trên breadboard.
- Cắm màn hình LCD vào breadboard.
Bước 2: Kết nối nguồn cho LCD
- Kết nối chân 1 và 16 của LCD 16×2 với đường nguồn âm (-) trên breadboard.
- Kết nối chân 2 và 15 của LCD 16×2 với đường nguồn dương (+) trên breadboard.
Bước 3: Thêm điện trở hạn dòng cho đèn nền (nếu cần)
- Nếu màn hình LCD 1602 có điện trở hạn dòng cho đèn nền, hãy kiểm tra mặt sau của màn hình gần chân 15.
- Nếu không có điện trở, hoặc các bạn không chắc chắn, hãy thêm một điện trở 220 ohm giữa chân 15 và đường nguồn dương (+).
Bước 4: Kết nối biến trở để điều chỉnh độ tương phản:
- Kết nối một bên của biến trở 10K vào đường nguồn dương (+) trên breadboard.
- Kết nối bên còn lại của biến trở vào đường nguồn âm (-) trên breadboard.
- Kết nối nối giữa chân wiper của biến trở với chân 3 của màn hình LCD 16×2.
Bước 5: Bật Arduino và kiểm tra:
- Bật Arduino để cấp nguồn cho màn hình LCD arduino.
- Bạn sẽ thấy đèn nền của màn hình sáng lên.
- Xoay núm biến trở, bạn sẽ thấy các hình chữ nhật đầu tiên xuất hiện.
- Nếu bạn đã làm theo các bước trên và màn hình LCD hiển thị đúng, chúc mừng! Màn hình LCD 1602 của bạn hoạt động bình thường.
Sơ đồ đấu nối màn hình LCD 16×2 với Arduino
Arduino Uno R3 | LCD 16X2 | Biến trở |
5V | 2, 15 | Chân ngoài |
GND | 1, 16 | Chân ngoài |
2 | D7 | |
3 | D6 | |
4 | D5 | |
5 | D4 | |
11 | EN | |
12 | RS | |
Vo | Chân giữa |
Code màn hình LCD 16×2 Arduino
// include the library code: #include <LiquidCrystal.h> // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Clears the LCD screen lcd.clear(); } void loop() { // Print a message to the LCD. lcd.print(" Hello world!"); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // Print a message to the LCD. lcd.print(" LCD Tutorial"); }
Giải thích code
// include the library code: #include <LiquidCrystal.h>
Khai báo để sử dụng thư viện LiquidCrystal, cho phép tương tác với màn hình LCD 16×2.
// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
khởi tạo đối tượng lcd từ lớp LiquidCrystal. Các tham số truyền vào định nghĩa các chân kết nối giữa Arduino và màn hình LCD. Cụ thể, chân RS (Register Select) của LCD được kết nối với chân 12 của Arduino, chân Enable được kết nối với chân 11, các chân dữ liệu D4 đến D7 được kết nối tương ứng với chân 5, 4, 3, 2 của Arduino.
// set up the LCD's number of columns and rows: lcd.begin(16, 2); // Clears the LCD screen lcd.clear();
lcd.begin(16, 2);
Thiết lập số cột và số hàng của màn hình LCD 16×2. Trong trường hợp này, màn hình LCD có 16 cột và 2 hàng.
lcd.clear();
Xóa nội dung trên màn hình LCD Arduino.
// Print a message to the LCD. lcd.print(" Hello world!");
lcd.print(" Hello world!");
Hiển thị chuỗi “Hello world!” lên màn hình LCD 1602. Chuỗi này sẽ được hiển thị trên dòng 0 (hàng đầu tiên) và từ cột 0 trở đi.
// set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1);
lcd.setCursor(0, 1);
Đặt vị trí con trỏ của LCD 16×2 tới cột 0, dòng 1 (hàng thứ hai).
Các chức năng chính của thư viện LiquidCrystal
Dưới đây là một số chức năng hữu ích mà bạn có thể sử dụng với đối tượng LiquidCrystal:
lcd.home()
: Định vị con trỏ ở góc trên bên trái của màn hình LCD 16×2 mà không xóa nội dung hiện tại trên màn hình.
lcd.blink()
: Hiển thị một khối nhấp nháy 5×8 pixel tại vị trí mà ký tự tiếp theo sẽ được viết.
lcd.noBlink()
: Tắt chế độ nhấp nháy của con trỏ trên LCD 1602.
lcd.cursor()
: Hiển thị một dấu gạch dưới (dòng) tại vị trí mà ký tự tiếp theo sẽ được viết.
lcd.noCursor()
: Ẩn con trỏ trên LCD Arduino.
lcd.scrollDisplayRight()
: Cuộn nội dung của màn hình sang phải một khoảng trống. Nếu bạn muốn văn bản cuộn liên tục, bạn có thể sử dụng chức năng này trong một vòng lặp.
lcd.scrollDisplayLeft()
: Cuộn nội dung của màn hình sang trái một khoảng trống. Tương tự như chức năng trên, bạn có thể sử dụng chức năng này trong một vòng lặp để cuộn liên tục.
lcd.noDisplay()
: Tắt màn hình LCD 16×2 mà không làm mất nội dung hiện đang hiển thị trên đó.
lcd.display()
: Bật màn hình LCD Arduino sau khi nó đã được tắt bằng noDisplay(). Thao tác này sẽ khôi phục hiển thị nội dung (và con trỏ) trên màn hình.