Hướng dẫn lập trình cho lcd tft stm32 năm 2024
Show
Nếu bạn là học viên mời bạn tham gia Nhóm hỗ trợ giải đáp của các khóa tại: https://www.facebook.com/groups/altium.designer.vietnam Mô tảMàn hình LCD TFT 1.44 inch ST7735 giao tiếp SPI có kích thước nhỏ gọn thường được sử dụng để thay thế cho loại màn hình Nokia 5110 đã quá cũ và kém ổn định trên thị trường hiện nay, màn hình có độ phân giải 128×128 pixels với khả năng hiển thị lên đến 65K màu. Màn hình LCD TFT 1.44 inch ST7735 giao tiếp SPI còn được tích hợp IC chuyển nguồn và IC đệm giúp giao tiếp và cấp nguồn ở hai mức điện áp 3.3VDC và 5VDC 1 cách linh hoạt, 1 điểm đặc biệt nữa của màn hình này là có sơ đồ chân tương thích để có thể cắm trực tiếp với Arduino mà không cần thêm dây bus. Thông số kỹ thuật
Cài đặt thư viện Adafruit ST7735 TFTTừ Arduino “Sketch” menu, lựa chọn “Include Library” sau đó đến “Manage Libraries…” Tìm và cài đặt Adafruit GFX library Tiếp tục với Adafruit ST7735 library Bắt đầu với ví dụ mẫuBắt đầu nào, bạn có thể lấy chương trình mẫu tại thư viện đã cài đặt ở trên Hoặc bạn có thể lấy file đã test chạy tại đây Chú ý định nghĩa lại các chân sau: Bật đèn màn hình nền lên pinMode(TFT_LED, OUTPUT); digitalWrite(TFT_LED, HIGH); Thực hiện một bài tập nhỏ như sauBạn có thể tải file đã chạy tại đây Bạn có thể định nghĩa lại màu cho đúng với LCD của bạn, ví dụ như Thiết lập màn hình nền màu trắng tft.setTextWrap(false); tft.fillScreen(MY_WHITE); In chữ Hello màu đỏ ra màn hình tọa độ x=10, y=5 tft.setCursor(10, 5); tft.setTextColor(MY_RED); tft.setTextSize(1); tft.println(“Hello”); Chúc các bạn thành công nhé! LCD1602 được sử dụng rất nhiều trong lập trình, tuy rằng nó ít được sử dụng trong các sản phẩm thương mại thế nhưng để làm quen về LCD thì sử dụng LCD1602 rất phù hợp. Trong bài này chúng ta sẽ học các sử dụng STM32 điều khiển LCD1602 chế độ 8bit và 4bit. Bài viết nằm trong Serie Lập trình STM32 từ A tới Z Mục Lục Tổng quan về LCD1602LCD là gì?LCD là một loại vật chất phản xạ ánh sáng khi điện thế thay đổi. Nó hoạt động dựa trên nguyên tắc ánh sáng nền (Back Light). Nó bao gồm một lớp chất lỏng nằm giữa 2 lớp kính phân cực ánh sáng. Bình thường, khi không có điện áp, các tinh thể này được xếp thẳng hàng giữa hai lớp cho phép ánh sáng truyền qua theo hình xoắn ốc. Hai bộ lọc phân cực, 2 bộ lọc màu và 2 bộ cân chỉnh sẽ xác định cường độ ánh sáng đi qua và màu nào được tạo ra trên một pixel. Khi có điện áp cấp vào, lớp canh chỉnh sẽ tạo một vùng điện tích, canh chỉnh lại các tinh thể lỏng đó. Nó không cho phép ánh sáng đi qua để hiện thị lên hình ảnh tại vị trí điểm ảnh đó. Các điểm ảnh trong màn hình LCD là một transistor cực nhỏ ở một trong 2 chế độ: cho phép ánh sáng đi qua hoặc không. Điểm ảnh bao gồm 3 yếu tố màu: đỏ, xanh lá, xanh dương. Các màn hình LCD trước đây thường tiêu thụ điện năng nhiều, độ tương phản thấp cho đến khi các nhà khoa học người Anh tìm ra “Biphenyl” – vật liệu chính của tinh thể lỏng, thì LCD mới thực sự phổ biến. LCD xuất hiện đầu tiên trong các máy tính cầm tay, trò chơi điện tử cầm tay, đồng hồ điện tử,… Theo Wikimedia LCD1602 overview
Sơ đồ chân – Pin Out
Cấu tạo và cách hoạt động của LCD1602Tham khảo datasheet: https://cdn-shop.adafruit.com/datasheets/TC1602A-01T.pdf Màn hình LCD1602 cấu tạo từ 3 phần:
DISPLAY DATA RAM (DD RAM): Bộ nhớ hiển thị dữ liệu Điều khiển LCD1602 chính là thay đổi giá trị của DD RAM, mỗi ô trên DD RAM tương ứng với một vị trí của màn hình. Với LCD1602 chúng có 2 line
Ví dụ: Nếu bạn muốn hiển thị ở Line 1 ô đầu tiên, Chúng ta sẽ thay đổi giá trị của ô nhớ địa chỉ 0x80. Giá trị được ghi sẽ so sánh với bảng mã trong CG ROM, từ đó hiển thị ra đúng kí tự được lưu trên đó. Lệnh để nhảy giữa các ô nhớ là Set cursor ( con trỏ) Character Generator ROM (CG ROM): Bộ nhớ kí tự chỉ đọc Đây là bộ nhớ đươc ghi sẵn của LCD, trong đó chứa các kí tự mà lcd hỗ trợ. Có hai mẫu Character mà LCD1602 hỗ trợ đó là 5×8 và 5×10 Character Generator RAM (CG RAM): Bộ nhớ kí tự có thể lập trình Đây là bộ nhớ để người sử dụng có thể tự tạo ra các font chữ riêng trên LCD của mình. Sơ đồ Display RAM LCD1602Cách đọc và ghi vào LCD1602Quy trình ghi vào LCD1602 như sau:
Khi lập trình chúng ta sẽ sử dụng bảng Timing để delay thời gian cho phù hợp. Timing Diagram Write Mode – Cách ghi dữ liệu vào LCDBảng Timing ghi vào LCD1602Trong STM32 chúng ta sẽ lập trình như sau, Lưu ý: Trong thư viện này mình chỉ sử dụng chế độ Write, vậy nên chân R/W mặc định đã được nối xuống 0 rồi nhé! Quy trình đọc LCD1602:
Khi lập trình chúng ta sẽ sử dụng bảng Timing để delay thời gian cho phù hợp. Timing Diagram Read Mode – Cách đọc dữ liệu từ LCDCác lệnh trong LCD1602Để ghi các lệnh vào LCD1602 chúng ta sử dụng bảng lệnh sau: Các bit 1 tương ứng với lệnh, và các bit sau bit 1 tương ứng với tham số. VD: Khi gửi lệnh INPUT SET chúng ta sẽ sử dụng lệnh 0x40, sau đó AND với 2bit I/D và S và set các chân RS và R/W về 0. Tập lệnh trong LCD1602Quy trình khởi tạo LCD1602Để khởi tạo cho LCD chế độ 8Bit, chúng ta sẽ lập trình theo trình tự sau: Để khởi tạo LCD1602 chế độ 4 bit chúng ta sẽ lập trình theo trình tự sau: Với chế độ 4bit, để gửi 1byte (8bit) chúng ta sẽ gửi 2 lần 4bit. Cách kết nối phần cứng STM32 với LCD1602Để điều khiển độ tương phản của LCD chúng ta bắt buộc phải nối chân V0 vào biến trở hoặc trở để điểu khiển độ tương phản. Lập trình STM32 điều khiển LCD1602 chế độ 8bitKhới tạo LCD1602 chế độ 8bit trên CubeMXTrong STM32 CubeMx khởi tạo với MCU STM32f103c8t6, trong SYS chọn debug – Serial Wire. Trong GPIO khởi tạo các chân chế độ Output, đặt tên tương ứng với các chân trên LCD1602. Khởi tạo chọn tools chain là MDK-ARM V5. Lập trình STM32 LCD1602 chế độ 8bitSau khi Gen code chúng ta sẽ mở bằng Keil C. Để download thư viện các bạn hãy đọc bài viết: Hướng dẫn download thư viện STM32 Add file CLCD.c vào Project bằng cách nhấn chuột phải -> Add Existing Thêm đường dẫn vào thư viện mà bạn down về. Nhấn vào biểu tượng Option -> C/C++ -> Inclue Path. Sau đó trỏ tới nơi lưu file CLCD.h Add CLCD.h vào main.c Khởi tạo một LCD tên là LCD1. Các bạn có thể khởi tạo nhiều LCD trong project của bạn. Khởi tạo 1 buffer để hiển thị lên LCD và biến Count. Truyền vào LCD1 các tham số setup như: &LCD1 địa chỉ LCD, số hàng và cột 16×2. Các chân kết nối với LCD Trong While Đầu tiên nhảy con trỏ tới nơi cần ghi, sau đó ghi giá trị vào ô 0,0 Lệnh sprintf sẽ ghi giá trị của Count vào chuỗi. Sau đó ghi vào LCD. Tiếp tới tăng giá trị Count và delay 1s. Kết quảLập trình STM32 LCD1602 chế độ 4bitVới chế dộ 4bit, chúng ta chỉ cần khởi tạo lại LCD với chế độ 4bit Sau đó ghi LCD như bình thường KếtĐến đây bạn đã có thể điều khiển LCD1602, sử dụng LCD1602 để hiển thị một số kết quả đo đạc từ sensor hay các linh kiện khác rất đơn giản. Hi vọng bạn đã hiểu rõ cách điều khiển LCD. Nếu thấy bài viết này hay, hãy chia sẻ tới những người bạn học hay đồng nghiệp của mình. Và nếu thắc mắc điều gì, hãy để lại bình luận nhé |