Tiếp tục bài trước, mình sẽ bổ sung thêm phương thức drawPixel vào thư viện màn hình ST7735. Hàm này chỉ có nhiệm vụ đơn giản là vẽ 1 điểm ảnh lên màn hình
1 2 3 4 5 6 7 8 9 10 11 12 |
>8); SPI_WriteByte(color); } void ST7735_drawPixel(int16_t x,int16_t y,uint16_t color) { if(x<0)return; if(y<0)return; if(x>=DEVICER_MAX_W)return; if(y>=DEVICER_MAX_H)return; ST7735_SetWindow(x,y,1,1); ST7735_draw(color); } |
Ngoài ra, mình định nghĩa thêm 1 số màu sắc cơ bản và kích thước của màn hình
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#define DEVICER_MAX_W 160 #define DEVICER_MAX_H 128 #define WHITE 0xFFFF #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define MAGENTA 0xF81F #define GREEN 0x07E0 #define CYAN 0x7FFF #define YELLOW 0xFFE0 #define BROWN 0XBC40 #define GRAY 0X8430 |
Để hiển thị văn bản và ngôn ngữ của các quốc gia khác nhau, các bạn có thể sử dụng thư viện Fontmaker và phần mềm tạo font mà mình đã thiết kế rất dễ sử dụng
Các bạn tải tool tạo font tại đây
File thư viện .c và .h tải tại đây
Về phần thư viện trên STM32, sẽ có 6 file .c và 6 file .h, các bạn copy các file .h vào thư mục Inc và copy các file .c vào thư mục Src. Sau đó mởi Keilc lên. Trong cây project (project tree) add các file .c vào
Để sử dụng thì các bạn include file graphic.h vô main.c là được
Bây giờ, để kết nối thư viện driver màn hình ST7735 với thư viện đồ họa, ta dùng lệnh:
1 |
IOT47_GFX_connectToDriver(&ST7735_drawPixel); |
Thử in vài chữ với bộ font mà thư viện đã hỗ trợ sẵn xem sao nhé
1 |
FontMakerPutString(0,0,"xin chào mọi người",&FontDemo1,WHITE,BLACK); |
Tham số 0,0 là tọa độ hiển thị trên màn hình, còn FontDemo1 là tên của bộ font, WHITE là màu chữ, BLACK là màu nền
Và đây là kết quả !
Rất đơn giản phải không !
Chú ý: Nếu các bạn không gõ được tiếng Việt trong keilC thì vào Edit -> Configuration
Trogn tab Editer dòng Encoding chọn Encode in UTF8-with out singture
Bây giờ mình sẽ hướng dẫn dùng tool để tự tạo bộ font riêng theo ý thích
- Chọn font chữ, kích thước, style tùy ý
- Điền bộ mã của riêng bạn ( bộ mã ở đây là các kí tự mà bạn muốn phần mềm gen thành font) mình đã tạo sẵn 1 bộ mã gồm đầy đủ các kí tự tiếng việt từ A đến Z, các bạn có thể chọn dùng luôn. Tuy nhiên bộ mã này khá lớn nên sẽ tốn khá khá bộ nhớ của vi điều khiển. Nếu các bạn chỉ muốn sử dụng 1 vài kí tự thôi chứ không muốn gen hết tất các các kí tự thì tự điền bộ mã riêng của mình vào nhé
- Chọn độ rộng của dấu cách sao cho đẹp nhất
- Điền tên của bộ font ( hãy nhớ đặt tên theo quy tắc đặt tên biến trong C nhé)
- Ấn xuất font ( nếu các bạn tự gõ bộ mã thì ấn xuất Ufont, còn nếu dùng bộ mã IOT47 UTF-8 có sẵn thì ấn xuất font)
- Copy mã code font chữ vào 2 file fontmaker.c và fontmaker.h
Vậy là xong, chỉ với 1 vài thao tác đơn giản là các bạn tự có cho mình 1 bộ font riêng với style theo ý thích
Chú ý: Nếu font của bạn sử dụng bộ mã của riêng bạn thì dùng hàm uFontMakerPutString còn nếu font đó xài bộ mã IOT47 UTF-8 thì dùng hàm FontMakerPutString nhé !
Hàm FontMakerPutStringTRANPARENT dùng để in màu nền trong suốt nhé, tương tự với font tự tạo của các bạn thì là hàm uFontMakerPutStringTRANPARENT
Dưới đây là 1 vài demo của mình
Tải full source cho bài này tại đây