- Vật liệu cần thiết
- Sơ đồ mạch
- Màn hình LCD đồ họa 128 * 64
- Chuyển đổi hình ảnh thành mã Hex:
- Mã Arduino và giải thích hoạt động
Có nhiều loại LCD được sử dụng trong các Dự án Điện tử. Chúng tôi đã sử dụng LCD 16X2 trong nhiều dự án của mình và cũng đã sử dụng TFT LCD với Arduino. Bạn có thể tìm thấy toàn bộ dự án liên quan đến LCD 16X2 của chúng tôi bằng cách theo liên kết này, bao gồm giao tiếp với 8051, AVR, Arduino và nhiều hơn nữa.
Các ST9720 đồ họa LCD là hoàn toàn khác biệt so với các màn hình LCD thông thường. LCD thông thường chỉ có thể in văn bản hoặc số đơn giản trong một kích thước cố định. Nhưng trong LCD đồ họa, chúng ta có 128 * 64 tương đương với 8192 chấm hoặc 8192/8 = 1024 pixel, vì vậy ngoài ký tự, chúng ta có thể hiển thị bất kỳ Hình ảnh Đồ họa nào trên GLCD này.
Chúng ta đã giao tiếp GLCD với 8051, hôm nay chúng ta sẽ giao diện Graphical LCD với Arduino để hiển thị văn bản và hình ảnh trên đó.
Vật liệu cần thiết
- Arduino UNO
- Màn hình LCD đồ họa 128 * 64 ST9720
- Chiết áp-10k
- Kết nối dây
- Breadboard
Sơ đồ mạch
Màn hình LCD đồ họa 128 * 64
Màn hình LCD đồ họa này có mức tiêu thụ điện năng thấp và cũng thích hợp cho thiết bị di động sử dụng pin. Nó có dải điện áp hoạt động rộng từ 2.2v đến 5.5v và hỗ trợ cả giao tiếp nối tiếp và song song 8/4-bit và đi kèm với bộ điều khiển / IC điều khiển LCD ST7290. Chế độ giao tiếp giao diện có thể được chuyển đổi giữa song song và nối tiếp bằng cách sử dụng PSB PIN 15. Màn hình LCD đồ họa này có chức năng Reset nguồn tự động và có thể dễ dàng điều khiển bằng MCU như 8051, AVR, ARM, Arduino và Raspberry Pi.
Bạn có thể xem qua biểu dữ liệu để biết thông tin chi tiết về LCD đồ họa ST7290 128 * 64
Cấu hình ghim
Số pin |
Tên ghim |
Sự miêu tả |
1 |
Gnd |
Đầu cuối mặt đất |
2 |
Vcc |
Điện áp cung cấp đầu vào (2.7v đến 5.5v) |
3 |
Vo |
Độ tương phản lcd |
4 |
RS |
Đăng ký Lựa chọn RS = 0: Thanh ghi hướng dẫn RS = 1: Đăng ký dữ liệu |
5 |
R / W |
Kiểm soát đọc / ghi |
6 |
E |
Kích hoạt |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Ghim dữ liệu (được sử dụng trong chế độ giao tiếp 8 / 4bit song song) |
15 |
PSB |
Lựa chọn giao diện: Thấp (0) cho chế độ giao tiếp nối tiếp Cao (1) cho chế độ bus song song 8/4 bit. |
16 |
NC |
Không kết nối |
17 |
RST |
Đặt lại mã pin |
18 |
Vout |
Đầu ra bộ nghi ngờ điện áp LCD. VOUT ≦ 7V. |
19 |
BLA |
Nguồn cung cấp ngược sáng |
20 |
BLK |
Đèn nền Nguồn cung cấp âm |
Các ứng dụng
- Thiết bị công nghiệp
- Những hệ thống nhúng
- Bảo vệ
- Y khoa
- Thiết bị cầm tay
Chuyển đổi hình ảnh thành mã Hex:
Để hiển thị bất kỳ hình ảnh nào trên Graphical LCD, chúng ta cần mã HEX của hình ảnh đó, vì vậy dưới đây là một số bước để chuyển Hình ảnh thành mã HEX. Trước đó, bạn phải đảm bảo rằng kích thước của hình ảnh không được vượt quá 128 * 64.
Bước 1: Giảm kích thước của hình ảnh bình thường xuống 128 * 64 hoặc nhỏ hơn, bạn có thể thực hiện bằng bất kỳ phần mềm chỉnh sửa hình ảnh nào như MS paint.
Như trong hình trên, chúng tôi đang thiết lập chiều rộng và chiều cao của hình ảnh là 128 * 64.
Bước 2: Sau đó, bạn cần lưu hình ảnh ở định dạng “image_name .bmp ”.
Chọn định dạng hiển thị trong hình trên và lưu tệp để xử lý thêm.
Bước 3: Sau khi lưu thành định dạng “.bmp”, bạn cần chuyển hình ảnh thành mã hex để in. Đối với điều này, tôi đang sử dụng phần mềm có tên GIMP 2, phần mềm này chuyển đổi tệp Bmp sang mã hex.
Như trong hình trên, chúng tôi đã mở tệp định dạng “.bmp” trong phần mềm GIMP 2.
Bước 4: Sau khi tải xuống phần mềm, mở tệp hình ảnh định dạng BMP mà bạn muốn in và sau đó lưu ở định dạng “ .xbm ” (X BitMap). Sau khi lưu, hãy mở tệp đó bằng Notepad và bạn sẽ nhận được mã Hex của hình ảnh.
Như trong hình bên dưới, chọn tùy chọn Export để lưu tệp ở định dạng xbm :
Chọn định dạng hiển thị trong hình dưới đây và xuất tệp hình ảnh.
Sau khi xuất tệp, bạn sẽ nhận được tệp ở định dạng “.xbm”. Mở tệp xbm bằng Notepad và bạn sẽ nhận được mã HEX như trong hình bên dưới.
Mã Arduino và giải thích hoạt động
Để giao tiếp LCD đồ họa với Arduino, trước tiên chúng ta cần xác định thư viện được sử dụng cho Graphical LCD. Arduino không có thư viện này, bạn phải tải xuống và cài đặt thư viện này từ liên kết này. Sau đó, bạn có thể bao gồm thư viện như dưới đây:
#include "U8glib.h"
Ở đây, ' u8g (10) ' đang xác định kết nối của chân RS (Register Select) của màn hình LCD đồ họa với chân thứ 10 của Arduino UNO. Chân RS được sử dụng làm 'chọn chip' và 'Chọn đăng ký' khi được sử dụng ở chế độ Nối tiếp và Song song tương ứng. Vì vậy, chúng tôi đang sử dụng chế độ nối tiếp và chân RS được đặt thành Cao (1) cho chip được kích hoạt và Thấp (0) cho chip bị vô hiệu hóa.
U8GLIB_ST7920_128X64_4X u8g (10);
Bây giờ, để in hình ảnh, chúng ta cần đặt mã Hex của hình ảnh trong mã bên dưới. Bạn có thể in bất kỳ hình ảnh nào khác, tất cả những gì bạn chỉ cần làm là dán mã hex của hình ảnh.
const uint8_t rook_bitmap U8G_PROGMEM = { Dán mã Hex của hình ảnh vào đây };
Kiểm tra Mã Arduino đầy đủ ở cuối Bài viết này.
Hàm dưới đây được sử dụng để in hình ảnh, lệnh được sử dụng để in là “u8g.drawXBMP (x, y, width of image, height of image)” . Trong đó, X và Y là vị trí bắt đầu của hình ảnh trên LCD và chúng ta cũng cần ghi kích thước của ảnh không được vượt quá 128 * 64 và trong đối số cuối cùng, chúng ta đã gọi hàm trong đó chúng ta đặt mã HEX của ảnh.
void hinh (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Chúng tôi đã tạo ra hai hàm được gọi là “draw” và “next”, trong đó mã để in nội dung được viết bằng lệnh “u8g.drawStr (x, y,” abcd ”)”. Ở đây, x và y là vị trí trên màn hình LCD nơi nội dung sẽ được in và ' abcd ' là nội dung sẽ được in.
void draw (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "ĐƯỜNG KÍNH MẠCH"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Giao diện"); u8g.drawStr (0, 35, "Màn hình LCD đồ họa"); u8g.drawStr (0, 55, "với Arduino"); }
Hàm clearLCD () được thực hiện để xóa màn hình LCD bằng cách chỉ cung cấp giá trị null cho hàm.
void clearLCD () {u8g.firstPage (); làm {} while (u8g.nextPage ()); }
Thiết lập pixel, màu sắc và cường độ bằng cách sử dụng mã bên dưới
void setup (void) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // màu trắng} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // cường độ tối đa} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel on} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
Các khoảng trống vòng lặp tiếp tục in các văn bản và hình ảnh sau độ trễ nhất định. Đầu tiên, chúng tôi đã in “Thông báo mạch” bằng chức năng vẽ và sau 2 giây. trong thời gian trễ, chúng tôi xóa màn hình bằng chức năng clearLCD và sau đó in “ Màn hình LCD giao diện đồ họa sử dụng Arduino ” bằng chức năng tiếp theo . Sau đó, chúng tôi đã in hình ảnh bằng cách sử dụng hàm picture () sẽ ở trên màn hình trong 3 giây. Điều này sẽ tiếp tục cho đến khi nguồn điện được bật.
void loop (void) {u8g.firstPage (); làm {draw (); } while (u8g.nextPage ()); chậm trễ (2000); clearLCD (); u8g.firstPage (); việc làm kế tiếp(); } while (u8g.nextPage ()); chậm trễ (2000); clearLCD (); u8g.firstPage (); làm {ảnh (); } while (u8g.nextPage ()); chậm trễ (3000); clearLCD (); chậm trễ (50); }
Sau khi lập trình Arduino bằng mã đã cho, hãy kết nối Màn hình LCD đồ họa theo sơ đồ mạch với Arduino và cấp nguồn cho Arduino bằng Bộ điều hợp hoặc USB. Bạn sẽ nhận được nội dung và hình ảnh được in trên Graphical LCD, như được hiển thị trong video dưới đây.
Ngoài ra, hãy kiểm tra giao diện LCD đồ họa Nokia 5110 với Arduino,