Chuyên đề arduino – Giao tiếp LCD bằng chuẩn I2C

     Chuyên đề arduino – giao tiếp LCD bằng chuẩn I2C sẽ cung cấp cho các bạn về kiến thức và cách giao tiếp LCD bằng phương pháp mới. Với cách sử dụng I2C có những ưu điểm hơn so với cách giao tiếp trực tiếp. Chuẩn I2C được định nghĩa và thiết lập sẵn trong thư viện của LiquidCrystal_I2C. Người sử dụng chỉ cần định nghĩa và gọi tên hàm khi cần xử lý. Trong bài viết này, chúng ta sẽ tìm hiểu cách thức thực hiện để giao tiếp LCD với arduino bằng I2C.

   NỘI DUNG BÀI VIẾT 

  • Tìm hiều về chuẩn giao tiếp I2C
  • Thông số kỹ thuật bo I2C
  • Sơ đồ kết nối chân
  • Các lệnh kết nối LCD bằng I2C
  • Lệnh khai báo thư viện
  • Lệnh khai báo đối tượng
  • Lệnh khởi tạo LCD
  • Lệnh bật đèn nền
  • Lệnh tắt đèn nền

 1. TÌM HIỀU VỀ CHUẨN GIAO TIẾP I2C 

     Khi thực hiện giao tiếp với LCD chúng ta cần phải sử dụng ít nhất là 8 chân từ arduino để giao tiếp. Việc sử dụng nhiều chân như vậy, có thể ảnh hưởng đến những ứng dụng khác khi chương trình cũng cần nhiều chân để kết nối với module khác. Từ đó, việc ra đời bo giao tiếp I2C với LCD giúp cho ứng dụng ngày càng rộng rãi hơn. Trước hết chúng ta cần xem xét module I2C và các chức năng của nó.

     Trên module I2C các bạn chỉ cần 2 chân để giao tiếp với arduino, đó là chân SDA và chân SCL. 2 chân cấp nguồn là VCC và GND, 2 chân này các bạn có thể kết nối từ nguồn của arduino hoặc nguồn 5V ở ngoài cũng được. Trên module I2C có 16 chân kết nối với LCD. Có biến trở để điều chỉnh được độ tương phản cho LCD. Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay.

   2. THÔNG SỐ KỸ THUẬT BO I2C 

  • Điện áp hoạt động: 2.5-6V DC.
  • Hỗ trợ màn hình: LCD16x02, 16×04, 20×04 (driver HD44780).
  • Giao tiếp: I2C.
  • Địa chỉ mặc định: 0x27 hoặc 0x3F (có thể điều chỉnh bằng các chân A0/A1/A2).
  • Sử dụng Jump chốt để cung cấp đèn cho LCD.
  • Có biến trở xoay điều chỉnh độ tương phản cho LCD.
  • Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C

   3. SƠ ĐỒ KẾT NỐI CHÂN 

     Trong thư viện của I2C chân kết nối với arduino mặc định chân A4 arduino sẽ kết nối với chân SDA, chân A5 kết nối với chân SCL. 

     4. CÁC LỆNH GIAO TIẾP LCD BẰNG I2C 

     4.1 Khai báo thư viện 

     Để thực hiện được giao tiếp LCD với arduino thông qua chuẩn giao tiếp I2C chúng ta phải khai báo 2 thư viện. Thư viện Wire.h và thư viện LiquidCrystal_I2C.h, hai thư viện này sẽ chứa tất cả những tập lệnh thao tác lên LCD. Lệnh khai báo sẽ được viết như sau:

     #include<Wire.h>

     #include<LiquidCrystal.h>

    4.2 Lệnh khai báo đối tượng LCD 

     Sau khi chúng ta khai báo thư viện cho LCD giao tiếp theo chuẩn I2C, chúng ta cần định nghĩa đối tượng LCD thuộc thư viện đã khai báo. Mục đích của việc khai báo này là để các đối tượng thực hiện được các lệnh trong thư viện. 

    Cú pháp khai báo:  LiquidCrystal_I2C  <Tên đối tượng>(<Địa chỉ mặc định>,<STT cột>, <STT hàng>);

    Ví dụ: Chúng ta khai báo đối tượng có tên là Lcd, địa chỉ mặc định, số thứ tự cột của LCD, số thứ tự hàng của LCD. Giả sử chúng ta sử dụng cho LCD 16×2, chúng ta có dòng khai báo như sau:

    LiquidCrystal_I2C   Lcd(0x3F, 16, 2);

   4.3 Lệnh khởi tạo LCD 

     Khi sử dụng chuẩn giao tiếp I2C cần phải khởi tạo LCD mới có thể thực hiện được các lệnh trong thư viện. Lệnh để khởi tạo LCD có cú pháp như sau.

    Cú pháp:  <Tên đối tượng>.init();

    Ví dụ: khi sử dụng tên đối tượng là Lcd thì dòng lệnh khai báo là.

    Lcd.init();

 4.4 Lệnh bật đèn nền cho LCD 

    Lệnh bật đèn nền cho LCD là backlight(). Cú pháp lệnh như bên dưới.

    Cú pháp: <Tên đối tượng>.backlight();

    Ví dụ: giả sử tên đối tượng được định nghĩa là Lcd thì dòng lệnh bật đèn nền là.

    Lcd.backlight();

 4.5 Lệnh tắt đèn nền cho LCD 

    Khi cần tắt đèn nền cho LCD thì chúng ta sử dụng lệnh noBacklight(). Cú pháp cũng tương tự như lệnh backlight().

    Cú pháp:  <Tên đối tượng>.noBacklight();

    Ví dụ: Đối tượng được định nghĩa là Lcd thì dòng lệnh tắt đèn nền là.

    Lcd.noBacklight();

    Ngoài những lệnh riêng trên để giao tiếp I2C cho LCD thì chúng ta cũng sử dụng được những dòng lệnh riêng cho LCD giống như giao tiếp trực tiếp. Chẳng hạn như lệnh đặt con trỏ setCursor() trên LCD, hay lệnh print() để in dữ liệu lên màn hình. Các lệnh này các bạn có thể xem ở bài viết Giao tiếp LCD với arduino trong cùng chuỗi Chuyên đề arduino.

  5. ỨNG DỤNG CHƯƠNG TRÌNH GIAO TIẾP LCD BẰNG I2C 

    Trong ví dụ cơ bản đầu tiên, tôi hướng dẫn cho các bạn cách giao tiếp LCD theo tiêu chuẩn I2C với arduino. Yêu cầu của chương trình là hiển thị giá trị số đếm từ 0 đến 100 trên màn hình LCD.

     Các linh kiện cần thiết

Linh kiện Số lượng
Bo arduino Uno 01
Bo giao tiếp I2C 01
LCD 16×2 01

     Sơ đồ kết nối mạch

     Đoạn code chương trình

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); 

int dem;
void setup()
{
  lcd.init();                    
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print("tinhoctayviet.com");  
}

void loop()
{
 for(dem =0; dem<=100; dem ++)
  {  
   lcd.setCursor(0,1);  lcd.print(dem);
   delay(500);
  }
}

 

 

     

 

 


Categories:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *