Site icon TAPIT

Giao tiếp vi điều khiển STM32 với LCD Nokia 5110

Tiếp nối với bài chia sẻ về lý thuyết chuẩn giao tiếp SPI, trong bài viết này mình sẽ giới thiệu đến các bạn màn hình LCD Nokia 5110 – một thiết bị ngoại vi giao tiếp với vi điều khiển bằng giao thức SPI. Các bạn có thể lựa chọn sử dụng LCD Nokia 5110 để hiển thị các kí tự, kí hiệu, hình ảnh bên cạnh giải pháp sử dụng màn hình hiển thị các kí tự LCD 1602. Và bài viết này cũng sẽ cung cấp cho các bạn các hướng dẫn thực hành sử dụng thư viện để vi điều khiển STM32 giao tiếp, điều khiển LCD Nokia 5110 hiển thị dữ liệu. 

A. GIỚI THIỆU LCD NOKIA 5110.

LCD Nokia 5110 thuộc dòng sản phẩm Graphic LCD 84×48. LCD Nokia 5110 sử dụng IC điều khiển Philips PCD8544. IC PCD8544 được thiết kế để điều khiển màn hình đồ họa 84 × 48 pixel (84 cột và 48 hàng). 

1. Thông số kỹ thuật

Chip PCD8544 tiêu thụ điện năng rất thấp do đó ở trạng thái bình thường, màn hình LCD chỉ tiêu thụ ở mức 6mA đến 7mA, nhưng nếu các bạn sử dụng đèn nền thì dòng tiêu thụ có thể lên đến 50mA.

Điện áp cung cấp hoạt động từ 2.7V đến 3.3V. Vì vậy, khi giao tiếp LCD với các vi điều khiển/ hoặc các board mạch vi điều khiển có điện áp I/O 5V như Arduino thì các bạn cần chuyển đổi điện áp mức logic, nếu không màn hình sẽ bị hỏng.

2. Đèn nền LCD

Nguồn: hackaday.com

Màn hình LCD cũng đi kèm với đèn nền (trắng, xanh dương, xanh lá, đỏ). Đèn nền gồm 4 led đặt xung quanh các cạnh mặt đế phía dưới của màn hình. Nếu bạn muốn thay đổi đèn nền của màn hình LCD, chỉ cần tháo màn hình LCD ra khỏi mặt đế, bằng cách đẩy các kẹp kim loại ở mặt dưới và bạn chỉ cần thay thế các đèn led bằng đèn led màu mà mình mong muốn.

3. Bản đồ bộ nhớ – hiển thị LCD Nokia 5110

Nguồn: lastminuteengineers.com

Trình điều khiển PCD8544 LCD tích hợp sẵn RAM dữ liệu hiển thị đồ họa (GDDRAM) 504 byte. Vùng nhớ này được tổ chức thành 6 bank (từ 0 đến 5). Mỗi bank chứa 84 column (từ 0 đến 83). Và mỗi column có thể lưu trữ 8 bit dữ liệu (từ 0 đến 7). 

Từ đó, chúng ta tính được kích thước dữ liệu tối đa có thể hiển thị lên LCD: 6 bank x 84 column x 8 bit = 4032 bit = 504 byte.

4. Sơ đồ chân LCD Nokia 5110

LCD Nokia 5110 có 8 chân kết nối:

+ RST (Reset): Thực hiện Reset LCD.

+ CE (Chip Enable): Kích hoạt cho phép dữ liệu được truyền vào LCD. Chân CE có mức logic thấp sẽ kích hoạt khối giao tiếp của LCD hoạt động. Chân này giúp vi điều khiển lựa chọn LCD để giao tiếp trong trường hợp vi điều khiển giao tiếp với nhiều ngoại vi SPI.

+ DC: Lựa chọn chế độ làm việc cho LCD.

+ DIN (Data Input): Đường truyền dữ liệu đến LCD (tương ứng với đường truyền tín hiệu MOSI).

+ CLK (Clock): Tín hiệu Clock khi giao tiếp.

+ VCC/GND

+ LIGHT: Bật/Tắt đèn nền cho LCD, có thể nối với chân PWM để điều khiển độ sáng đèn nền.

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

B. THỰC HÀNH VI ĐIỀU KHIỂN STM32 GIAO TIẾP VỚI LCD NOKIA 5110

Trong phần thực hành này, chúng ta sẽ sử dụng vi điều khiển STM32F411 trên board mạch Discovery để giao tiếp với LCD Nokia 5110 và hiển thị dòng chữ “TAPIT Community”.

1. Kết nối  phần cứng LCD Nokia 5110 với STM32F411 Discovery
Các bạn có thể cấu hình khối ngoại vi SPI của vi điều khiển STM32F411 để kết nối với LCD, mình sẽ hướng dẫn chi tiết trong một bài viết khác. Còn trong bài viết này, mình sử dụng thư viện của LCD Nokia 5110. Trong thư viện này, tác giả đã cung cấp cho chúng ta các hàm để điều khiển hoạt động của LCD Nokia 5110, việc của chúng ta là lựa chọn các chân của vi điều khiển STM32 kết nối với LCD và cấu hình các chân đấy hoạt động ở chế độ OUTPUT (tác giả đã sử dụng “SPI mềm” trong thư viện – nghĩa là tác giả đã viết các hàm để điều khiển một chân OUTPUT tạo ra tín hiệu Clock và một chân OUPUT khác để truyền dữ liệu đi, giống như chân MOSI của phần cứng ngoại vi SPI. Việc sử dụng SPI mềm giúp các bạn linh hoạt lựa chọn bất cứ chân GPIO nào của vi điều khiển để giao tiếp với LCD. 

Mình đã lựa chọn các chân kết nối như sau:

2. Cấu hình và lập trình cho vi điều khiển STM32F411

Bước 1: Kích chọn dòng STM32F411VETx và sau đó chọn Next.

Bước 2: Tại mục System Core, chọn SYS và chọn Serial Wire để nạp code.

Bước 3: Cấu hình chân Output 

– Kích chuột trái tại các chân tương ứng kết nối với LCD, chọn GPIO_Output.

– Kích chuột phải tại các chân, chọn Enter User Label để đặt lại tên cho các chân. 

Bước 4: Tạo ra mã chương trình từ các cấu hình.

Bước 5: Add thư viện LCD Nokia 5110.

Các bạn tải thư viện LCD tại đây để có thể giao tiếp với LCD.

– Sau khi tải về, các bạn giải nén thư mục được các file thư viện sau:

– Các bạn tìm đến thư mục lưu Project của mình. Vào thư mục Core.

– Các bạn sao chép Header file 5110.hfont.h vào thư mục Inc.

Sao chép Source file 5110.c vào thư mục Src.

Bước 6: Lập trình bằng phần mềm STM32Cube IDE.

– Khai báo thư viện LCD Nokia 5110.

#include “5110.h”

Giao diện LCD khi các bạn sử dụng thư viện này có 6 dòng (bắt đầu từ dòng 0 đến dòng 5), mỗi dòng có thể sử dụng tối đa 14 ký tự (ký tự 0 đến ký tự 13).

Khi bạn hiển thị chuỗi dài quá 14 ký tự, ký tự thứ 15 sẽ được hiển thị đè lên ký tự đầu dòng tiếp theo (nếu còn dòng), các bạn nên lưu ý đến số lượng ký tự hiển thị trên một dòng để trình bày bố cục trên LCD một cách hợp lý.

– Trong hàm main(), trước hàm while (1), ta thực hiện những lệnh sau:

LCD5110_init(); //Khởi tạo LCD, hàm này bao gồm các lệnh cấu hình mức logic cho các chân LCD, thiết lập chế độ và thực hiện reset LCD trước khi sử dụng.

LCD5110_clear(); //Xóa tất cả các ký tự hiện có trên LCD. Trong trường hợp muốn xóa 1 dòng, hay một vài ký tự bạn chỉ việc ghi đè lên các vị trí đó bởi ký tự trống (Space).

LCD5110_set_XY(0, 0); //Đến vị trí dòng 0, cột 0 trên LCD.

LCD5110_write_string(char *s, int color); //In chuỗi lên màn hình, với biến color là màu của ký tự (color = 0: chữ đen, nền trắng; color = 1: chữ trắng, nền đen).

KẾT QUẢ THỰC HIỆN

Tài liệu tham khảo: https://lastminuteengineers.com/nokia-5110-lcd-arduino-tutorial/

Tìm hiểu thêm:
Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community

Chúc bạn thực hiện thành công và học được nhiều điều mới nhé!

– Nhien Nhien – Nhóm TAPIT ES –