1. Ý nghĩa các chân kết nối của màn hình LCD
LCD (Liquid Crystal Display) là màn hình tinh thể lỏng. LCD là loại thiết bị để hiển thị các ký tự, có cấu tạo bởi các điểm ảnh chứa các tinh thể lỏng (liquid crystal).
Màn hình LCD có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm năng lượng. Với Arduino, chúng ta có thể sử dụng LCD 16×2, gồm 2 dòng, mỗi dòng 16 ô ký tự. Vị trí các ô ký tự được đánh từ 0, 1, 2, 3, 4, 5,…,15.
Các chân của màn hình LCD 16×2
VSS: Tương đương với GND – cực âm.
VDD: Tương đương với VCC – cực dương (5V).
Constrast Voltage (VE hoặc VEE): Điều khiển độ sáng màn hình.
Register Select (RS): Lựa chọn thanh ghi trong LCD để xử lý chương trình (RS=0 chọn thanh ghi lệnh, RS=1 chọn thanh ghi dữ liệu).
Read/Write (RW): RW=0 ghi dữ liệu , RW=1 đọc dữ liệu.
Enable (E): Cho phép ghi vào LCD.
D0 – D7: 8 chân nhận dữ liệu.
Backlight Anode (+) và Backlight Cathode (-): Nguồn dương và nguồn âm của đèn màn hình LCD.
2. Thiết kế mạch giao tiếp với LCD của Arduino
Để LCD hoạt động thì:
- Cần cấp nguồn dương (+) vào chân VDD của LCD, cấp nguồn âm (-) vào chân VSS.
- Kết nối chân Baclight Anode với nguồn dương (+) và Backlight Cathode với nguồn âm (-) để điều khiển bật đèn màn hình.
- Kết nối chân VEE với biến trở để điều khiển độ sáng màn hình.
- Chân R/W kết nối với GND (R/W=0) để ghi dữ liệu vào LCD.
- Kết nối chân RS và Enable với board mạch Arduino để giao tiếp với Arduino.
- Điều khiển LCD ở chế độ 4 bit, kết nối 4 chân D4, D5, D6, D7 với board mạch Arduino.
Có thể sử dụng Proteus để giả lập mạch giao tiếp với LCD như hình bên dưới.
Khi sử dụng mạch giả lập giao tiếp LCD với Arduino thì có thể không cần sử dụng chân VDD, VSS, VEE cũng như Backlight Anode (+) và Backlight Cathode (-).
3. Chương trình hiển thị ký tự lên LCD
Để giao tiếp LCD với Arduino, sử dụng thư viện <LiquidCrystal.h>
tích hợp sẵn thư viện của Arduino. Chương trình bên dưới giúp hiển thị các ký tự trên LCD.
#include <LiquidCrystal.h>//Khai báo thư viện
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Khai báo các chân RS, E, D4-D7 kết nối với Arduino
void setup() {
lcd.begin(16, 2);//Khởi tạo màn hình LCD và xác định kích thước màn hình LCD là 16x2
}
void loop() {
lcd.clear();//Xóa màn hình và đặt con trỏ về vị trí đầu tiên (0, 0)
lcd.setCursor(6,0);//Di chuyển con trỏ đến cột tương ứng
lcd.print("HELLO");//Xuất ra màn hình từ vị trí con trỏ
lcd.setCursor(5,1);
lcd.print("ARDUINO");
delay(1000);
}