| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- #include "lcd.h"
 
- #ifdef LCD_ENABLE
 
- #include "jlx12864.h"
 
- static uint32_t utf8_strlen(const char *str)
 
- {
 
-     uint32_t len = 0;
 
-     while (*str) {
 
-         len += (*str++ & 0xc0) != 0x80;
 
-     }
 
-     return len;
 
- }
 
- void LCD_Init()
 
- {
 
-     init_lcd();
 
-     clear_screen();
 
- }
 
- void LCD_PrintRow(uint8_t row, uint8_t y, char *text)
 
- {
 
-     LCD_PutText(row * FONTSIZE_X, y, FONT_1X, COLOR_BLACK, text);
 
-     LCD_LoadData();
 
- }
 
- void LCD_ClearRow(uint8_t row)
 
- {
 
-     clear_page(row);
 
- }
 
- void LCD_PrintAligned(uint8_t row, align_t align, char *text)
 
- {
 
-     uint8_t x = 0;
 
-     switch (align) {
 
-         case alignLEFT:
 
-             x = 0;
 
-             break;
 
-         case alignCENTER:
 
-             x = (LCD_WIDTH - FONTSIZE_X * utf8_strlen(text)) / 2;
 
-             break;
 
-         case alignRIGHT:
 
-             x = LCD_WIDTH - FONTSIZE_X * utf8_strlen(text);
 
-             break;
 
-         default:
 
-             break;
 
-     }
 
-     LCD_ClearRow(row);
 
-     LCD_PutText(x, row * FONTSIZE_Y, FONT_1X, COLOR_BLACK, text);
 
-     LCD_LoadData();
 
- }
 
- void LCD_PrintBar(uint8_t row, uint8_t progress)
 
- {
 
-     const uint8_t x1 = 5;
 
-     const uint8_t x2 = LCD_WIDTH - 10;
 
-     const uint8_t y1 = row * FONTSIZE_Y;
 
-     const uint8_t y2 = y1 + FONTSIZE_Y - 1;
 
-     if (progress > 100) progress == 100;
 
-     const uint8_t len = (x2 - x1 - 3) * progress / 100;
 
-     LCD_ClearRow(row);
 
-     LCD_DrawLine(x1, y1, x2, y1, COLOR_BLACK);
 
-     LCD_DrawLine(x1, y2, x2, y2, COLOR_BLACK);
 
-     LCD_DrawLine(x1, y1, x1, y2, COLOR_BLACK);
 
-     LCD_DrawLine(x2, y1, x2, y2, COLOR_BLACK);
 
-     LCD_FillRegion(x1 + 2, y1 + 2, len, 4, COLOR_BLACK);
 
-     LCD_LoadData();
 
- }
 
- #endif /* LCD_ENABLE */
 
 
  |