Hướng dẫn sử dụng thư viện lcd trong arm ccs

LCD 16×2 là một ngoại vi ouput được sử dụng rất nhiều trong các đề tài, dự án để hiển thị các thông tin dưới dạng text cho người dùng. Trong bài viết này sẽ giới thiệu và hướng dẫn các bạn giao tiếp hiển thị thông tin lên LCD 16×2 sử dụng MCU STM32F103C8T6 thông qua module I2C. Project này được thực hiện trên phần mềm STM32CubeMX 5.2.0 và KeilC uVision 5.26.2.0

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

1. Kết nối MCU STM32 với LCD

Module I2C PCF8574 được sử dụng để làm trung gian kết nối giữa MCU STM32F103C8T6 và LCD như hình và bảng bên dưới:

Các chân GND, VCC, SDA, SCL được nối với STM32 như sau:

STM32 PCF8574 GND GND VCC (nối nguồn ngoài 5V) PB6 SCL PB7 SDA

Nguồn 5V của LCD có thể được lấy từ chân 5V trên kit nạp ST Link V2. Trên module I2C có biến trở điều chỉnh độ tương phản của màn hình LCD khi cần.

2.Địa chỉ của Module I2C PCF8574

Module I2C PCF8574 hỗ trợ giao tiếp I2C với 7bit địa chỉ, trong đó có 4 bit cố định và 3 bit có thể được người dùng tùy chỉnh có dạng 0 1 0 0 A2 A1 A0. Mặc định, trên module nhà sản xuất để các chân A0, A1, A2 ở mức logic cao nên PCF8574 có địa chỉ là 0x27. Để thay đổi địa chỉ của IC này khi cần, bạn có thể tùy chọn thay đổi các mức logic của 3 chân này. (Xem datasheet của PCF8574 tại đây)

Khi lập trình I2C để giao tiếp STM32 và module này, thì byte đầu tiên sẽ bao gồm 7bit địa chỉ và 1bit W vào vị trí có trọng số thấp nhất(ghi dữ liệu), lúc này Byte đầu tiên của giao tiếp I2C sẽ có giá trị: 01001110 (0x4E)

3. Ví dụ đo nhiệt độ cảm biến LM35 (ADC) và hiển thị LCD

Sơ đồ nối chân cảm biến LM35 và STM32F103C8T6

STM32 LM35 5V VCC GND GND PA0 Analog Out

Lưu ý: Xem cấu hình CubeMX cho ADC tại đây

Bước 1: Chọn các chức năng cho ví dụ này: Serial wire (nạp code và debug), ADC (đọc cảm biến LM35), I2C (giao tiếp module I2C PCF8574 hiển thị LCD):

Bước 2: Cấu hình I2C. Phần cấu hình ADC và ngắt ADC các bạn xem ở link đính kèm bên trên

Bước 3: Generate code

Bước 4: Add thư viện i2c_lcd.h và i2c_lcd.c vào Keil C project.

  • Copy file i2c_lcd.c vào thư mục Src của project

  • Copy file i2c_lcd.h vào thư mục Inc của project

Bước 5: Trong project kích chuột phải vào thư mục Application/User chọn Add Existing Files to Group Application/User. Sau đó chọn thư mục Src rồi add file i2c_lcd.c

Như tiêu đề mình đang làm một cái đồng hồ thời gian thực, hiển thị lên LCD 16x2 nhưng ngặt nỗi không tài nào hiển thị chữ nào lên LCD được. Thử thế nào cũng chỉ có hiện 1 dòng đầu gồm 16 ô 5x7. Mình dùng cái source mẫu trên PIF ( //www.payitforward.edu.vn/forum/threads/2232/ ).

Bạn nào có kinh nghiệm chỗ này giúp mình với, mấy tuần rồi vẫn không được là không được. Cảm ơn nhiều.

  • 2

bạn giao tiếp qua mudul i2c hay giao tiếp trực tiếp? sơ đồ đấu dây đâu? nếu bạn giao tiếp qua mudul i2c thì rất tiện lợi, mình sẽ code giúp bạn

  • 3

    bạn giao tiếp qua mudul i2c hay giao tiếp trực tiếp? sơ đồ đấu dây đâu? nếu bạn giao tiếp qua mudul i2c thì rất tiện lợi, mình sẽ code giúp bạn

Giap tiếp trực tiếp bạn, mình cắm theo sơ đồ ở cái link đi kèm đó

  • 4

ban mua thêm modul i2c lắp vào, mình code cho. link ko xem dc

  • 5

@

ban mua thêm modul i2c lắp vào, mình code cho. link ko xem dc

Hi bạn, m đang dùng tiva C giao tiếp với module I2C lcd 1602. M dùng chân PB1,PB2. Bạn cho mình xin code tham khảo được không? Thanks

  • 6

    Chào các bạn,

Như tiêu đề mình đang làm một cái đồng hồ thời gian thực, hiển thị lên LCD 16x2 nhưng ngặt nỗi không tài nào hiển thị chữ nào lên LCD được. Thử thế nào cũng chỉ có hiện 1 dòng đầu gồm 16 ô 5x7. Mình dùng cái source mẫu trên PIF ( //www.payitforward.edu.vn/forum/threads/2232/ ).

Bạn nào có kinh nghiệm chỗ này giúp mình với, mấy tuần rồi vẫn không được là không được. Cảm ơn nhiều.

bạn ơi bạn có thư viện con ds1307 ko bạn, cho mình xin với, mình tham khảo hihi

  • 7

    ban mua thêm modul i2c lắp vào, mình code cho. link ko xem dc

bạn ơi bạn có thư viện con ds1307 ko bạn, cho mình xin với, mình tham khảo hihi

  • 8

bạn có cần nữa không? nếu cần thì kết nối modul i2c với LCd1602 và ds1307. mình gửi code cho

  • 9

    bạn có cần nữa không? nếu cần thì kết nối modul i2c với LCd1602 và ds1307. mình gửi code cho

mình đang cần kết nối tiva_c với LCD bằng module I2C, bạn có thể cho mình xin code được không ?

  • 10

được bạn ạ, để mình tìm và pót cho bạn

  • 11

    được bạn ạ, để mình tìm và pót cho bạn

Cảm ơn bác trước, bác gửi sớm giúp em với nhé

  • 12

    được bạn ạ, để mình tìm và pót cho bạn

bác kiếm được chưa bác

  • 13

đây bác nhé, có 1 file i2i.h có hướng dẫn 2 chân i2c0 thì bạn kết nối đúng là chạy. còn lưu ý khác là địa chỉ i2c của modul pcf nó khác nhau lắm, cái này trên thị trường nhiều ng bán, nhiều địa chỉ khác nhau, bác tự mò vậy. bạn giải nén file cài đặt tiva c vào ổ C và đổi tên thành C:\ti\TivaWare để biên dịch ko lỗi nhé

Chủ đề