I. Mục đích, yêu cầu
Giúp người dùng:
II. Nội dung
2.1. Cơ sở lý thuyết
2.1.1. Tìm hiểu màn hình LCD, Ứng dụng trong thực tế
Màn hình LCD hay còn gọi là màn hình tinh thể lỏng được sử dụng khá nhiều trên các thiết bị điện tử. Màn hình công nghệ này dùng đèn nền để tạo ánh sáng. Công dụng để hiển thị nội dung hoặc các thông số.
Giới thiệu màn hình LCD 16×2
Gồm có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN) và 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2. LCD có quá nhiều chân gây khó khăn trong quá trình đấu nối và chiếm nhiều chân điều khiển. Module I2C LCD ra đời để giải quyết vấn đề này cho bạn.
Giới thiệu module I2C LCD
Thay vì phải mất 6 chân để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module I2C bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.
Thông số kĩ thuật
Ưu điểm
Hình ảnh thực tế LCD 16x2 tích hợp sẵn I2C:
Ứng dụng trong thực tế
Màn hình LCD được sử dụng rất nhiều trong cuộc sống, giúp cho chúng ta thấy được các thông số, trạng thái hoạt động của các thiết bị điện tử. Trong mạch C88 ở bản đầy đủ được tích hợp sẵn màn hình LCD 16x2 I2C giúp ta lập trình dễ dàng, thuận tiện hơn như làm các ứng dụng hiển thị chạy chữ, nội dung, thông số nhiệt độ, độ ẩm môi trường hay hiển thị thời gian thực...
2.1.2. Địa chỉ phần cứng kết nối với LCD trên mạch C88
2.1.3 Một số câu lệnh sử dụng trong bài
/* Lưu ý cho người mới tiếp cận với lập trình: ngôn ngữ lập trình cho mạch C88 là C/C++ nên chúng ta cần lưu ý phân biệt chữ hoa chữ thường và các dấu chấm, dấu phẩy, dấu chấm phẩy... */
Để sử dụng màn hình LCD I2C giao tiếp với mạch C88, ta cần cài đặt thư viện: “Liquidcrystal_I2C.h”.
Link cài: https://4dot0.net/upload/file/LiquidCrystal_I2C-1.1.2.zip
Các hàm trong thư viện hay dùng:
a. Hàm Liquidcrystal_I2C
Cấu trúc: LiquidCrystal_I2C lcd (0x27,16,2);
Trong đó:
+) lcd là tên đặt.
+) 0x27 là địa chỉ 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.
Ý nghĩa: Thiết lập thông số loại LCD đang dùng.
Ứng dụng: Cấu hình loại LCD sử dụng
b. Hàm init()
Cấu trúc: lcd.init();
Trong đó: lcd là tên đã khai báo trước trong hàm cấu hình LCD.
Ý nghĩa: Khởi động màn hình LCD, bắt đầu cho phép mạch C88 sử dụng màn hình.
Ứng dụng: Dùng để sử dụng cho màn hình LCD I2C.
c. Hàm backlight()
Cấu trúc: lcd.backlight();
Trong đó: lcd là tên đã khai báo trước trong hàm cấu hình LCD.
Ý nghĩa: Bật đèn nền LCD 16×2.
Ứng dụng: Dùng để sử dụng cho màn hình LCD I2C.
d. Hàm setCursor()
Cấu trúc: lcd.setCursor(x, y);
Trong đó:
+) lcd là tên đã khai báo trước trong hàm cấu hình LCD.
+) x là cột.
+) y là hàng.
Lưu ý: giá trị hàng và cột bắt đầu từ 0.
Ý nghĩa: Đưa con trỏ tới hàng x, cột y.
Ứng dụng: Dùng để hiển thị nội dung, văn bản tại vị trí mong muốn.
e. Hàm print()
Cấu trúc: lcd.print ("<nội dung>");
Trong đó:
+) lcd là tên đã khai báo trước trong hàm cấu hình LCD.
+) nội dung là các kí tự, chuỗi hoặc văn bản muốn hiển thị lên LCD.
Ứng dụng: Hiển thị kí tự, nội dung mong muốn.
Ví dụ: Hiển thị chữ “Xin chao” lên hàng 0, cột 0
2.2. Thực hiện
Bài 1.
Thiết kế, viết chương trình hiển thị nội dung “Xin Chao Cac Ban”.
a. Sơ đồ lắp ráp
Hình ảnh thực tế:
b. Mã lệnh
#include <LiquidCrystal_I2C.h> // Khai báo thư viện giao tiếp LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo địa chỉ, loại LCD đang sử dụng
void setup ()
{
lcd.init(); // khởi động LCD
lcd.backlight(); // Bật đèn nền cho LCD
lcd.setCursor(0,0); // Tại vị trí hiển thị là hàng 0, cột 0
lcd.print("Xin Chao Cac Ban"); // Nội dung hiển thị: Xin Chao Cac Ban
}
void loop() { }
c. Kết quả (Mạch hoạt động thế nào)