From a25a16ca56ce59362d691bfd1fa16ef5b09ce5c1 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 27 Jan 2024 15:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=98=BE=E7=A4=BA=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/basic/ssd1306/driver_ssd1306_basic.c | 20 +++++++-------- app/src/basic/ssd1306/wave_drawer.c | 8 +++--- app/src/one_conduction/display_manager.c | 14 ++++++++-- app/src/one_conduction/font.h | 37 ++++++++++++++++++++++++++- res/heartPulse.bmp | Bin 0 -> 120054 bytes 5 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 res/heartPulse.bmp diff --git a/app/src/basic/ssd1306/driver_ssd1306_basic.c b/app/src/basic/ssd1306/driver_ssd1306_basic.c index 36bd9d2..be0c699 100644 --- a/app/src/basic/ssd1306/driver_ssd1306_basic.c +++ b/app/src/basic/ssd1306/driver_ssd1306_basic.c @@ -531,7 +531,7 @@ uint8_t ssd1306_basic_draw_one_chr(uint8_t xs, uint8_t ys, char *str, FontLibrar if (is_ascii) { charsize = 1; } else { - charsize = 3; // utf8 编码中文?3个字? + charsize = 3; // utf8 ??3?? } FontLibrary_findchar(frontlib, str, &frontbuf); @@ -618,7 +618,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang int batteryInterBodyWidth = batteryBodyWidth - blank_width * 2 - border_width * 2; int batteryInterBodyHigh = batteryBodyHigh - border_width * 2 - blank_width * 2; /** - * @brief 画头? + * @brief ͷ?? */ for (int yoff = 0; yoff < batteryHeaderHigh; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -634,7 +634,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang ys += batteryHeaderHigh; /** - * @brief 画上边沿 + * @brief ϱ */ for (int yoff = 0; yoff < border_width; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -643,7 +643,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang } ys += border_width; /** - * @brief 画上留白 + * @brief */ for (int yoff = 0; yoff < blank_width; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -660,7 +660,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang ys += blank_width; /** - * @brief 画身? + * @brief ?? */ for (int yoff = 0; yoff < batteryInterBodyHigh; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -688,7 +688,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang ys += batteryInterBodyHigh; /** - * @brief 画上留白 + * @brief */ for (int yoff = 0; yoff < blank_width; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -704,7 +704,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang } ys += blank_width; /** - * @brief 画上边沿 + * @brief ϱ */ for (int yoff = 0; yoff < border_width; yoff++) { for (int xoff = 0; xoff < batteryBodyWidth; xoff++) { @@ -725,7 +725,7 @@ uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint */ /** - * @brief һ + * @brief */ for (uint16_t i = 0; i < width; i++) { ssd1306_gram_write_point(&gs_handle, xs + i, ys, 1); @@ -733,7 +733,7 @@ uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint ys += 1; /** - * @brief + * @brief */ uint16_t progress_width = width * progress / 100.0; uint16_t markpos_off = width * markpos / 100.0; @@ -753,7 +753,7 @@ uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint ys += high - 2; /** - * @brief β + * @brief */ for (uint16_t i = 0; i < width; i++) { ssd1306_gram_write_point(&gs_handle, xs + i, ys, 1); diff --git a/app/src/basic/ssd1306/wave_drawer.c b/app/src/basic/ssd1306/wave_drawer.c index abd37c6..6242a60 100644 --- a/app/src/basic/ssd1306/wave_drawer.c +++ b/app/src/basic/ssd1306/wave_drawer.c @@ -15,11 +15,11 @@ void wave_drawer_init(wave_drawer_t *dw, uint8_t xs, uint8_t ys, uint16_t width, dw->ybottom_border = ys + high; dw->ytop = ys + 1; - dw->ybottom = ys + high - 1; + dw->ybottom = ys + high - 2; dw->xleft = xs + 1; dw->xright = xs + width - 1; - dw->high = high - 1; + dw->high = high - 2; dw->width = width - 1; dw->is_first_point = true; } @@ -28,7 +28,7 @@ void wave_drawer_draw_border(wave_drawer_t *dw) { for (uint16_t x = dw->xleft_border; x <= dw->xright_border; x++) { for (uint16_t y = dw->ytop_border; y <= dw->ybottom_border; y++) { if (x == dw->xleft_border || x == dw->xright_border || y == dw->ytop_border || y == dw->ybottom_border) { - // ssd1306_gram_write_point(ssd1306_handler(), x, y, 1); + ssd1306_gram_write_point(ssd1306_handler(), x, y, 1); } else { ssd1306_gram_write_point(ssd1306_handler(), x, y, 0); } @@ -48,7 +48,7 @@ void wave_drawer_draw_next_point(wave_drawer_t *dw, uint8_t y) { * |--------------- */ - uint16_t yreal = y / 100.0 * (dw->high - 1); + uint16_t yreal = y / 100.0 * (dw->high - 4); uint16_t ypos = dw->ybottom - yreal; uint16_t xpos = dw->xleft + dw->pointoffset; diff --git a/app/src/one_conduction/display_manager.c b/app/src/one_conduction/display_manager.c index 878d2c9..28f5af7 100644 --- a/app/src/one_conduction/display_manager.c +++ b/app/src/one_conduction/display_manager.c @@ -129,10 +129,20 @@ void dsp_mgr_change_to_preparePage() { static wave_drawer_t wave_drawer; void dsp_mgr_change_to_sampling() { // - // ssd1306_basic_draw_progress(5, 5, 100, 8, 50, 30); - wave_drawer_init(&wave_drawer, 1, 1, 100, 40); + + + wave_drawer_init(&wave_drawer, 1, 1, 120, 40); wave_drawer_draw_border(&wave_drawer); + + uint8_t x = 0; + uint8_t y = 0; + uint8_t xchange, ychange; + + ssd1306_basic_draw_progress(1, 47, 80, 8, 50, 30); + + ssd1306_basic_draw_str(82, 43, &xchange, &ychange, "<>123", &font_asicc16x8_lib); ssd1306_basic_gram_update(); + } void dsp_mgr_draw_point(int16_t y) { diff --git a/app/src/one_conduction/font.h b/app/src/one_conduction/font.h index aceffbe..5ca6ccb 100644 --- a/app/src/one_conduction/font.h +++ b/app/src/one_conduction/font.h @@ -210,4 +210,39 @@ static FontLibrary_t font24x24_zh_lib = { .isAscii = false, .widthPixel = 24, .heightPixel = 24, -}; \ No newline at end of file +}; + +#if 0 +// const unsigned char gImage_heart_16x16[] = { +// /* 0X22,0X01,0X10,0X00,0X10,0X00, */ +// 0X00, 0XF8, 0XFC, 0XFE, 0XFE, 0XFE, 0XFE, 0XFC, 0XFC, 0XFE, 0XFE, 0XFE, 0XFE, 0XFC, 0XF8, 0X00, 0X00, 0X00, 0X03, 0X07, 0X0F, 0X1F, 0X3F, 0X7F, 0X7F, 0X3F, 0X1F, 0X0F, 0X07, 0X03, 0X00, 0X00, +// }; +#endif + +const unsigned char font_asicc_code_16x8[] = { + 0x00, 0xF0, 0x18, 0x08, 0x08, 0x18, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x30, 0x18, 0x0F, 0x00, /*"0",0*/ + 0x00, 0x60, 0x20, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, /*"1",1*/ + 0x00, 0x30, 0x18, 0x08, 0x08, 0xD8, 0x70, 0x00, 0x00, 0x30, 0x38, 0x34, 0x33, 0x31, 0x30, 0x00, /*"2",2*/ + 0x00, 0x30, 0x18, 0x08, 0x88, 0xD8, 0x70, 0x00, 0x00, 0x18, 0x10, 0x20, 0x21, 0x13, 0x0E, 0x00, /*"3",3*/ + 0x00, 0x00, 0x80, 0x60, 0x30, 0xF8, 0x00, 0x00, 0x04, 0x07, 0x05, 0x04, 0x04, 0x3F, 0x04, 0x04, /*"4",4*/ + 0x00, 0xF0, 0x98, 0xC8, 0x88, 0x88, 0x08, 0x00, 0x08, 0x19, 0x30, 0x20, 0x30, 0x19, 0x0F, 0x00, /*"5",5*/ + 0x00, 0x80, 0xC0, 0xF0, 0x98, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x31, 0x20, 0x20, 0x30, 0x1F, 0x06, /*"6",6*/ + 0x00, 0x08, 0x08, 0x08, 0x88, 0xE8, 0x38, 0x00, 0x00, 0x00, 0x30, 0x3E, 0x03, 0x00, 0x00, 0x00, /*"7",7*/ + 0x00, 0xF0, 0x88, 0x88, 0x88, 0xD8, 0x70, 0x00, 0x04, 0x1F, 0x31, 0x21, 0x21, 0x31, 0x1E, 0x00, /*"8",8*/ + 0xE0, 0xF0, 0x08, 0x08, 0x08, 0x98, 0xF0, 0x00, 0x00, 0x01, 0x23, 0x3A, 0x0F, 0x03, 0x00, 0x00, /*"9",9*/ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*"-",10*/ + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x11, 0x00, 0x00, 0x00, /*":",10*/ + + 0X00, 0XF8, 0XFC, 0XFE, 0XFE, 0XFE, 0XFE, 0XFC, 0X00, 0X00, 0X03, 0X07, 0X0F, 0X1F, 0X3F, 0X7F, /*?Ұ*/ +}; + +static FontLibrary_t font_asicc16x8_lib = { + .font = font_asicc_code_16x8, + .fontIndex = "0123456789-:<>", // <> εҰ + .fontIndexLen = 14, + .fontCode = kgbk, + .isAscii = true, + .widthPixel = 8, + .heightPixel = 16, +}; diff --git a/res/heartPulse.bmp b/res/heartPulse.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bd56c36f24e0c7a805fc8910e94245bb0fbaf158 GIT binary patch literal 120054 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