HƯỚNG DẪN LẬP TRÌNH MENU CHO LCD 16X2

Arduino Shop xin gởi đến các bạn một ngày cuối tuần vui vẻ, ấm áp. Hôm nay, Arduino Shop giới thiệu đến mọi người cách lập trình menu cho LCD 16x2 được mô phỏng trên phần mềm Protues 8.4. Ở các đề tài trước, Arduino Shop đã giới thiệu mọi người cách giao tiếp arduino với lcd qua phần mềm Protues, đọc keypad lcd 16x2 bằng arduino. Hôm nay, sẽ nâng cao hơn một bặc, hướng dẫn lập trình menu cho Lcd 16x2. Nào, hãy cùng Arduino Shop thực hành.

Ngày đăng: 09-10-2016

188 lượt xem

1. GIỚI THIỆU

Hôm nay, Arduino Shop xin hướng dẫn mọi người cách lập trình menu cho lcd 16x2. Thực ra, việc lập trình này là không quá khó, do vậy, mọi người đừng có suy nghỉ khó quá rồi bỏ qua ứng dụng hoặc dễ quá mà không xem nhé. Vì ông bà có câu, nếu cái đó không bổ dọc thì cũng bổ ngang, nên mọi người đừng vội nhé.

Đầu tiên, để làm được project này, bạn cần chuẩn bị cho mình một con arduino Uno R3 hoặc 1 con Arduino mega 2560 và một cái keypad Lcd 16x2. Arduino Shop sẽ hướng dẫn các bạn cách lập trình menu dựa trên các phím nhấn của keypad lcd 16x2. Trên keypad lcd 16x2 có tất cả là 6 nút nhấn, 1 nút reset, 1 nút select, 1 nút right, 1 nút left, 1 nút down và 1 nút up. Vậy làm sao để biết mình nhấn nút nào down, nút nào là UP??? 

Ai cũng biết, các nút này ( trừ nút reset) được nối chung 1 đường vào chân A0 của arduino. Đây là tín hiệu analog. Do đó, nó có giá trị trả về từ 0 đến 1023. Các bạn có thể xem sơ đồ nối các phím trên lcd keypad 16x2 bên dưới:

CHÈN HÌNH

Giá trị analog đọc về từ bàn phím sẽ được mã hóa theo đoạn code bên dưới. Đoạn code này sẽ cho chúng ta biết là chúng ta đang bấm phìm nào? Bạn đọc các giải tích từng câu lệnh:

// Đinh nghĩa các giá trị mình muốn trả về. Ở đây 0 tương dương giá trị RIGHT, tương tự với UP, DOWN...

#define RIGHT              0
#define UP                    1
#define DOWN             2
#define LEFT               3
#define SELECT  4
#define NONE   5

int read_LCD_buttons()                        // Hàm trả về giá trị là một số nguyên int tương ứng các chữ NONE, RIGHT...
{
adc_key_in = analogRead(A0);     
delay(100); // Cần delay 1 khoản thời gian để chống trường hợp nú nhấn bị dính. Có thể loại trừ việc này bằng phần mềm, nhưng ở đây dùng delay để đơn giản

if (adc_key_in ==410)   return RIGHT;
if (adc_key_in ==1023)  return UP;
if (adc_key_in ==819)  return DOWN;
if (adc_key_in ==614)  return LEFT;
if (adc_key_in ==205)  return SELECT; 

}

Tiếp theo, làm sao bạn phải cho arduino biết là bạn nhấn nút đó, nó cần hiển thị ra nội dung gì? Nó là menu số mấy. Điều này rất hại não nha các bạn. Các bạn làm quen thì ko sao, chứ làm chưa quen thì hại não lắm đây. Bạn cần viết 1 đoạn code gọi là chương trình con menu, để biết bạn nhấn phím đó thì số lần nhấn tăng lên hoặc giảm xuống. Ví dụ, bạn nhấn UP lần 1, sẽ hiện menu 1 tương ứng biến đếm là 1. Nếu nhấn lần 2 thì biến đếm tăng lên 2. Dựa vào số 2 sẽ biết là menu sẽ chuyển sang menu 2 và lập trình cho LCD hiển thị nội dung menu 2....

Đoạn code bên dưới:

// Đoạn code này cho phép số menu được hiển thị. Ở đây biến đếm có giá trị cao nhất là 6. 

int menu()
  {
  lcd_key=read_up_down();
  delay(50);
  switch(lcd_key)
  {
    case UP:
    {
      dem=dem+1;
      if(dem>=6) dem =6;
      Serial.print(dem);
      break;
    }
    case DOWN:
    {
      dem=dem-1;
      if(dem<0) dem=0;
      Serial.print(dem);
      break;
    }
  }
return dem;
}

 

GỌI NGAY - 0902 37 12 52 (Mr Quốc): Tư vấn KT

ĐỂ ĐƯỢC TƯ VẤN VÀ CUNG CẤP GIẢI PHÁP KỊP THỜI CHO BẠN

ARDUINO SHOP

Địa chỉ: Số 41 Gò Dưa, Phường Tam Bình, Quận Thủ Đức, TP. Hồ Chí Minh
Email: arduinoshophcm@gmail.com

Bình luận (0)

Gửi bình luận của bạn

Captcha
<