LCD Keypad 16x2 Với Arduino

Tổng quát

Trong hướng dẫn này, bạn sẽ học cách sử dụng tấm chắn bàn phím LCD Arduino với 3 dự án thực tế.
Những gì bạn sẽ học:
  • Cách thiết lập lá chắn và xác định các phím
  • Cách cuộn văn bản
  • Cách hiển thị các ký tự đặc biệt


Các tính năng của tấm chắn bàn phím LCD Keypad Shield

  1. Hiển thị thông tin trong các dự án điện tử luôn là vấn đề hấp dẫn nhất. Có nhiều cách khác nhau để hiển thị dữ liệu. Những màn hình này có thể rất đơn giản như 7 phân đoạn hoặc đèn LED, hoặc chúng có thể hấp dẫn hơn như màn hình LCD. Sử dụng màn hình LCD luôn là một trong những cách phổ biến nhất để hiển thị thông tin. Màn hình LCD được chia thành hai loại chung: Ký tự và Đồ họa.
  2. Một trong những loại LCD phổ biến nhất, rẻ nhất và đơn giản nhất hiện có là LCD ký tự. Màn hình LCD này bao gồm một số hàng và cột. Các chữ cái và số được viết ở những vị trí được tạo bởi các hàng và cột. Ví dụ, ký tự LCD 16 * 2 có 2 hàng và 16 cột. Vì vậy, nó có thể hiển thị 32 ký tự.
  3. Thao tác với các màn hình LCD này rất đơn giản và chúng có khả năng tương thích hoàn toàn với tất cả các bộ vi điều khiển và bo mạch xử lý. Để sử dụng dễ dàng hơn các màn hình LCD này, mô hình 16x2 của nó, bao gồm bốn phím để tạo menu, được làm như một tấm chắn cũng tương thích với bảng Arduino.

Cách sử dụng Arduino LCD Keypad Shield

Arduino shiels là một lá chắn thân thiện với người dùng và đơn giản. Để sử dụng nó, trước tiên bạn cần biết sơ đồ chân của nó và kết nối của nó với Arduino.

Sơ đồ chân LCD Keypad shield?


Làm thế nào để đọc các phím?

Trong lá chắn này, tất cả 4 phím được kết nối với chân analog 0 để lưu trên chân kỹ thuật số. Vì vậy, chúng ta nên sử dụng ADC để đọc chúng. Khi bạn nhấn một phím, nó sẽ trả về một giá trị cho chân A0 theo mạch tách điện trở bên trong, mạch này xác định loại phím.

*
Arduino 2x16 LCD - Detect Buttons
modified on 18 Feb 2019
by Saeed Hosseini @ Electropeak
https://electropeak.com/learn/
*/
#include <LiquidCrystal.h>
//LCD pin to Arduino
const int pin_RS = 8;
const int pin_EN = 9;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
const int pin_BL = 10;
LiquidCrystal lcd( pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("tcl47.blogspot.com");
lcd.setCursor(0,1);
lcd.print("Press Key:");
}
void loop() {
int x;
x = analogRead (0);
lcd.setCursor(10,1);
if (x < 60) {
lcd.print ("Right ");
}
else if (x < 200) {
lcd.print ("Up ");
}
else if (x < 400){
lcd.print ("Down ");
}
else if (x < 600){
lcd.print ("Left ");
}
else if (x < 800){
LCD.print ("Select");
}
}
Hãy xem xét kỹ hơn đoạn mã:
#include <LiquidCrystal.h>
Thư viện bạn cần cho LCD ký tự.
LiquidCrystal LCD( pin_RS, pin_EN, pin_d4, pin_d5,  pin_d6, pin_d7);
Xác định đối tượng LCD theo các chân được kết nối với Arduino.
lcd.begin(16, 2); 
Cấu hình ban đầu của màn hình LCD bằng cách chỉ định số cột và hàng. Đối số đầu tiên là số cột và đối số thứ hai là số hàng.
Dưới đây là một số chức năng quan trọng để hoạt động với LCD:


Bạn có thể kiểm tra trang web Arduino để biết thêm chức năng.

Làm thế nào để cuộn một văn bản?

Chúng ta có thể làm điều đó một cách dễ dàng bằng cách sử dụng các chức năng trên.
/*
Arduino 2x16 LCD - LCD Scroll
modified on 18 Feb 2019
by Saeed Hosseini
https://electropeak.com/learn/
*/
#include
const int RS = 8;
const int EN = 9;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
const int pin_BL = 10; // arduino pin wired to LCD backlight circuit
LiquidCrystal lcd( RS, EN, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.print("tcl47.blogspot");
delay(1000);
}
void loop() {
// scroll 11 positions ("tcl47.blogspot" length) to the left
for (int positionCounter = 0; positionCounter < 11; positionCounter++) {
lcd.scrollDisplayLeft();
delay(400); //Scrolling speed
}
// scroll 27 positions ("tcl47.blogspot" length + display length) to the right
for (int positionCounter = 0; positionCounter < 27; positionCounter++) {
lcd.scrollDisplayRight();
delay(400);
}
// scroll 16 positions (display length) to the left
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(50);
}
delay(1000);
}


Làm thế nào để hiển thị một nhân vật cụ thể?

Bạn có thể tạo một ký tự trong mỗi khối từ màn hình LCD của mình. Để làm điều này, bạn nên chuyển đổi ký tự mong muốn của mình thành một dãy mã, sau đó hiển thị nó trên màn hình LCD. Để chuyển đổi ký tự của bạn thành mã, bạn có thể sử dụng các trang web trực tuyến như thế này. Thiết kế nhân vật của bạn, sau đó sao chép mảng đã tạo vào mã của bạn.

/*
Arduino 2x16 LCD - LCD Special Char
modified on 18 Feb 2019
by Saeed Hosseini
https://electropeak.com/learn/
*/
#include
const int RS = 8;
const int EN = 9;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
const int pin_BL = 10; // arduino pin wired to LCD backlight circuit
LiquidCrystal lcd( RS, EN, d4, d5, d6, d7);
// smily face
byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
// Battery sign
byte battery[] = {
B01110,
B01010,
B11011,
B10001,
B11111,
B11111,
B11111,
B11111
};
// arrow right
byte R_arrow[8] = {
B00000,
B00100,
B00010,
B11111,
B00010,
B00100,
B00000,
B00000
};
// arrow left
byte L_arrow[8] = {
B00000,
B00100,
B01000,
B11111,
B01000,
B00100,
B00000,
B00000
};
// Ohm sign
byte ohm[8] = {
B00000,
B01110,
B10001,
B10001,
B10001,
B01010,
B11011,
B00000
};
// Heart
byte heart[8] = {
B00000,
B01010,
B10101,
B10001,
B10001,
B01010,
B00100,
B00000
};
int i = 0;
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, smiley);
lcd.createChar(1, battery);
lcd.createChar(2, R_arrow);
lcd.createChar(3, L_arrow);
lcd.createChar(4, ohm);
lcd.createChar(5, heart);
lcd.createChar(6, ohm);
for (int n = 0; n < 6; n++)
{
lcd.setCursor(n * 2, 0);
lcd.write(n);
}
}
void loop() {
}
lcd.createChar lưu trữ mảng của bạn trong một vị trí bộ nhớ và bạn có thể hiển thị nó với lcd.write

File: