/*..........................................................................*/ void BSP_drawBitmap(uint8_t const *bitmap) { UINT x, y; /* map the EK-LM3S811 OLED pixels to the GraphicDisplay pixels... */ for (y = 0; y < BSP_SCREEN_HEIGHT; ++y) { for (x = 0; x < BSP_SCREEN_WIDTH; ++x) { uint8_t bits = bitmap[x + (y/8U)*BSP_SCREEN_WIDTH]; if ((bits & (1U << (y & 0x07U))) != 0U) { GraphicDisplay_setPixel(&l_oled, x, y, c_onColor); } else { GraphicDisplay_clearPixel(&l_oled, x, y); } } } GraphicDisplay_redraw(&l_oled); /* redraw the updated display */ }
/*..........................................................................*/ void BSP_drawNString(uint8_t x, uint8_t y, char const *str) { static uint8_t const font5x7[95][5] = { { 0x00U, 0x00U, 0x00U, 0x00U, 0x00U }, /* ' ' */ { 0x00U, 0x00U, 0x4FU, 0x00U, 0x00U }, /* ! */ { 0x00U, 0x07U, 0x00U, 0x07U, 0x00U }, /* " */ { 0x14U, 0x7FU, 0x14U, 0x7FU, 0x14U }, /* # */ { 0x24U, 0x2AU, 0x7FU, 0x2AU, 0x12U }, /* $ */ { 0x23U, 0x13U, 0x08U, 0x64U, 0x62U }, /* % */ { 0x36U, 0x49U, 0x55U, 0x22U, 0x50U }, /* & */ { 0x00U, 0x05U, 0x03U, 0x00U, 0x00U }, /* ' */ { 0x00U, 0x1CU, 0x22U, 0x41U, 0x00U }, /* ( */ { 0x00U, 0x41U, 0x22U, 0x1CU, 0x00U }, /* ) */ { 0x14U, 0x08U, 0x3EU, 0x08U, 0x14U }, /* * */ { 0x08U, 0x08U, 0x3EU, 0x08U, 0x08U }, /* + */ { 0x00U, 0x50U, 0x30U, 0x00U, 0x00U }, /* , */ { 0x08U, 0x08U, 0x08U, 0x08U, 0x08U }, /* - */ { 0x00U, 0x60U, 0x60U, 0x00U, 0x00U }, /* . */ { 0x20U, 0x10U, 0x08U, 0x04U, 0x02U }, /* / */ { 0x3EU, 0x51U, 0x49U, 0x45U, 0x3EU }, /* 0 */ { 0x00U, 0x42U, 0x7FU, 0x40U, 0x00U }, /* 1 */ { 0x42U, 0x61U, 0x51U, 0x49U, 0x46U }, /* 2 */ { 0x21U, 0x41U, 0x45U, 0x4BU, 0x31U }, /* 3 */ { 0x18U, 0x14U, 0x12U, 0x7FU, 0x10U }, /* 4 */ { 0x27U, 0x45U, 0x45U, 0x45U, 0x39U }, /* 5 */ { 0x3CU, 0x4AU, 0x49U, 0x49U, 0x30U }, /* 6 */ { 0x01U, 0x71U, 0x09U, 0x05U, 0x03U }, /* 7 */ { 0x36U, 0x49U, 0x49U, 0x49U, 0x36U }, /* 8 */ { 0x06U, 0x49U, 0x49U, 0x29U, 0x1EU }, /* 9 */ { 0x00U, 0x36U, 0x36U, 0x00U, 0x00U }, /* : */ { 0x00U, 0x56U, 0x36U, 0x00U, 0x00U }, /* ; */ { 0x08U, 0x14U, 0x22U, 0x41U, 0x00U }, /* < */ { 0x14U, 0x14U, 0x14U, 0x14U, 0x14U }, /* = */ { 0x00U, 0x41U, 0x22U, 0x14U, 0x08U }, /* > */ { 0x02U, 0x01U, 0x51U, 0x09U, 0x06U }, /* ? */ { 0x32U, 0x49U, 0x79U, 0x41U, 0x3EU }, /* @ */ { 0x7EU, 0x11U, 0x11U, 0x11U, 0x7EU }, /* A */ { 0x7FU, 0x49U, 0x49U, 0x49U, 0x36U }, /* B */ { 0x3EU, 0x41U, 0x41U, 0x41U, 0x22U }, /* C */ { 0x7FU, 0x41U, 0x41U, 0x22U, 0x1CU }, /* D */ { 0x7FU, 0x49U, 0x49U, 0x49U, 0x41U }, /* E */ { 0x7FU, 0x09U, 0x09U, 0x09U, 0x01U }, /* F */ { 0x3EU, 0x41U, 0x49U, 0x49U, 0x7AU }, /* G */ { 0x7FU, 0x08U, 0x08U, 0x08U, 0x7FU }, /* H */ { 0x00U, 0x41U, 0x7FU, 0x41U, 0x00U }, /* I */ { 0x20U, 0x40U, 0x41U, 0x3FU, 0x01U }, /* J */ { 0x7FU, 0x08U, 0x14U, 0x22U, 0x41U }, /* K */ { 0x7FU, 0x40U, 0x40U, 0x40U, 0x40U }, /* L */ { 0x7FU, 0x02U, 0x0CU, 0x02U, 0x7FU }, /* M */ { 0x7FU, 0x04U, 0x08U, 0x10U, 0x7FU }, /* N */ { 0x3EU, 0x41U, 0x41U, 0x41U, 0x3EU }, /* O */ { 0x7FU, 0x09U, 0x09U, 0x09U, 0x06U }, /* P */ { 0x3EU, 0x41U, 0x51U, 0x21U, 0x5EU }, /* Q */ { 0x7FU, 0x09U, 0x19U, 0x29U, 0x46U }, /* R */ { 0x46U, 0x49U, 0x49U, 0x49U, 0x31U }, /* S */ { 0x01U, 0x01U, 0x7FU, 0x01U, 0x01U }, /* T */ { 0x3FU, 0x40U, 0x40U, 0x40U, 0x3FU }, /* U */ { 0x1FU, 0x20U, 0x40U, 0x20U, 0x1FU }, /* V */ { 0x3FU, 0x40U, 0x38U, 0x40U, 0x3FU }, /* W */ { 0x63U, 0x14U, 0x08U, 0x14U, 0x63U }, /* X */ { 0x07U, 0x08U, 0x70U, 0x08U, 0x07U }, /* Y */ { 0x61U, 0x51U, 0x49U, 0x45U, 0x43U }, /* Z */ { 0x00U, 0x7FU, 0x41U, 0x41U, 0x00U }, /* [ */ { 0x02U, 0x04U, 0x08U, 0x10U, 0x20U }, /* \ */ { 0x00U, 0x41U, 0x41U, 0x7FU, 0x00U }, /* ] */ { 0x04U, 0x02U, 0x01U, 0x02U, 0x04U }, /* ^ */ { 0x40U, 0x40U, 0x40U, 0x40U, 0x40U }, /* _ */ { 0x00U, 0x01U, 0x02U, 0x04U, 0x00U }, /* ` */ { 0x20U, 0x54U, 0x54U, 0x54U, 0x78U }, /* a */ { 0x7FU, 0x48U, 0x44U, 0x44U, 0x38U }, /* b */ { 0x38U, 0x44U, 0x44U, 0x44U, 0x20U }, /* c */ { 0x38U, 0x44U, 0x44U, 0x48U, 0x7FU }, /* d */ { 0x38U, 0x54U, 0x54U, 0x54U, 0x18U }, /* e */ { 0x08U, 0x7EU, 0x09U, 0x01U, 0x02U }, /* f */ { 0x0CU, 0x52U, 0x52U, 0x52U, 0x3EU }, /* g */ { 0x7FU, 0x08U, 0x04U, 0x04U, 0x78U }, /* h */ { 0x00U, 0x44U, 0x7DU, 0x40U, 0x00U }, /* i */ { 0x20U, 0x40U, 0x44U, 0x3DU, 0x00U }, /* j */ { 0x7FU, 0x10U, 0x28U, 0x44U, 0x00U }, /* k */ { 0x00U, 0x41U, 0x7FU, 0x40U, 0x00U }, /* l */ { 0x7CU, 0x04U, 0x18U, 0x04U, 0x78U }, /* m */ { 0x7CU, 0x08U, 0x04U, 0x04U, 0x78U }, /* n */ { 0x38U, 0x44U, 0x44U, 0x44U, 0x38U }, /* o */ { 0x7CU, 0x14U, 0x14U, 0x14U, 0x08U }, /* p */ { 0x08U, 0x14U, 0x14U, 0x18U, 0x7CU }, /* q */ { 0x7CU, 0x08U, 0x04U, 0x04U, 0x08U }, /* r */ { 0x48U, 0x54U, 0x54U, 0x54U, 0x20U }, /* s */ { 0x04U, 0x3FU, 0x44U, 0x40U, 0x20U }, /* t */ { 0x3CU, 0x40U, 0x40U, 0x20U, 0x7CU }, /* u */ { 0x1CU, 0x20U, 0x40U, 0x20U, 0x1CU }, /* v */ { 0x3CU, 0x40U, 0x30U, 0x40U, 0x3CU }, /* w */ { 0x44U, 0x28U, 0x10U, 0x28U, 0x44U }, /* x */ { 0x0CU, 0x50U, 0x50U, 0x50U, 0x3CU }, /* y */ { 0x44U, 0x64U, 0x54U, 0x4CU, 0x44U }, /* z */ { 0x00U, 0x08U, 0x36U, 0x41U, 0x00U }, /* { */ { 0x00U, 0x00U, 0x7FU, 0x00U, 0x00U }, /* | */ { 0x00U, 0x41U, 0x36U, 0x08U, 0x00U }, /* } */ { 0x02U, 0x01U, 0x02U, 0x04U, 0x02U }, /* ~ */ }; UINT dx, dy; while (*str != '\0') { uint8_t const *ch = &font5x7[*str - ' '][0]; for (dx = 0U; dx < 5U; ++dx) { for (dy = 0U; dy < 8U; ++dy) { if ((ch[dx] & (1U << dy)) != 0U) { GraphicDisplay_setPixel(&l_oled, (UINT)(x + dx), (UINT)(y*8U + dy), c_onColor); } else { GraphicDisplay_clearPixel(&l_oled, (UINT)(x + dx), (UINT)(y*8U + dy)); } } } ++str; x += 6; } GraphicDisplay_redraw(&l_oled); /* redraw the updated display */ }
/*..........................................................................*/ void GraphicDisplay_clearPixel(GraphicDisplay * const me, UINT x, UINT y) { GraphicDisplay_setPixel(me, x, y, me->bgColor); }