# HG changeset patch # User Ethan Zonca # Date 2014-08-18 22:55:17 # Node ID a9e06183f42b2790161dbe35a60dcb79a51a3502 # Parent c5a349beceeb213202621ae0eaa726dddf851c09 Hello world now rendered properly diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -67,30 +67,8 @@ int main(void) init_spi(); ssd1306_Init(); - - ssd1306_DrawPoint(0,0,1); - ssd1306_DrawPoint(0,1,1); - ssd1306_DrawPoint(0,2,1); - ssd1306_DrawPoint(0,3,1); - ssd1306_DrawPoint(0,4,1); - ssd1306_DrawPoint(0,5,1); - ssd1306_DrawPoint(0,6,1); - - ssd1306_DrawPoint(1,3,1); - ssd1306_DrawPoint(2,3,1); - ssd1306_DrawPoint(3,3,1); - ssd1306_DrawPoint(4,3,1); - - ssd1306_DrawPoint(5,0,1); - ssd1306_DrawPoint(5,1,1); - ssd1306_DrawPoint(5,2,1); - ssd1306_DrawPoint(5,3,1); - ssd1306_DrawPoint(5,4,1); - ssd1306_DrawPoint(5,5,1); - ssd1306_DrawPoint(5,6,1); - - - ssd1306_block_write(); + ssd1306_DrawString("Hello World!", 0, 10); + // ssd1306_block_write(); while(1) { diff --git a/smallfonts.c b/smallfonts.c deleted file mode 100644 --- a/smallfonts.c +++ /dev/null @@ -1,554 +0,0 @@ -/* Partially based on original code for the KS0108 by Stephane Rey */ -/* - @file smallfonts.c - @author K. Townsend (microBuilder.eu) - @date 22 March 2010 - @version 0.10 - - @section LICENSE - - Software License Agreement (BSD License) - - Copyright (c) 2010, microBuilder SARL - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the copyright holders nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#include "nil.h" -#include "smallfonts.h" - -/* Global variables */ -const struct FONT_DEF Font_System3x6 = {3, 6, 32, 96, au8FontSystem3x6}; -const struct FONT_DEF Font_System5x8 = {5, 8, 32, 128, au8FontSystem5x8}; -const struct FONT_DEF Font_System7x8 = {7, 8, 32, 128, au8FontSystem7x8}; -const struct FONT_DEF Font_8x8 = {8, 8, 32, 128, au8Font8x8}; -const struct FONT_DEF Font_8x8Thin = {8, 8, 32, 128, au8Font8x8Thin}; - -/* System 3x6 - UPPER CASE ONLY */ -const uint8_t au8FontSystem3x6[]= { - 0x00,0x00,0x00, /* Space */ - 0x00,0x5C,0x00, /* ! */ - 0x0C,0x00,0x0C, /* " */ - 0x7C,0x28,0x7C, /* # */ - 0x7C,0x44,0x7C, /* 0x */ - 0x24,0x10,0x48, /* % */ - 0x28,0x54,0x08, /* & */ - 0x00,0x0C,0x00, /* ' */ - 0x38,0x44,0x00, /* ( */ - 0x44,0x38,0x00, /* ) */ - 0x20,0x10,0x08, /* // */ - 0x10,0x38,0x10, /* + */ - 0x80,0x40,0x00, /* , */ - 0x10,0x10,0x10, /* - */ - 0x00,0x40,0x00, /* . */ - 0x20,0x10,0x08, /* / */ - 0x38,0x44,0x38, /* 0 */ - 0x00,0x7C,0x00, /* 1 */ - 0x64,0x54,0x48, /* 2 */ - 0x44,0x54,0x28, /* 3 */ - 0x1C,0x10,0x7C, /* 4 */ - 0x4C,0x54,0x24, /* 5 */ - 0x38,0x54,0x20, /* 6 */ - 0x04,0x74,0x0C, /* 7 */ - 0x28,0x54,0x28, /* 8 */ - 0x08,0x54,0x38, /* 9 */ - 0x00,0x50,0x00, /* : */ - 0x80,0x50,0x00, /* ; */ - 0x10,0x28,0x44, /* < */ - 0x28,0x28,0x28, /* = */ - 0x44,0x28,0x10, /* > */ - 0x04,0x54,0x08, /* ? */ - 0x38,0x4C,0x5C, /* @ */ - 0x78,0x14,0x78, /* A */ - 0x7C,0x54,0x28, /* B */ - 0x38,0x44,0x44, /* C */ - 0x7C,0x44,0x38, /* D */ - 0x7C,0x54,0x44, /* E */ - 0x7C,0x14,0x04, /* F */ - 0x38,0x44,0x34, /* G */ - 0x7C,0x10,0x7C, /* H */ - 0x00,0x7C,0x00, /* I */ - 0x20,0x40,0x3C, /* J */ - 0x7C,0x10,0x6C, /* K */ - 0x7C,0x40,0x40, /* L */ - 0x7C,0x08,0x7C, /* M */ - 0x7C,0x04,0x7C, /* N */ - 0x7C,0x44,0x7C, /* O */ - 0x7C,0x14,0x08, /* P */ - 0x38,0x44,0x78, /* Q */ - 0x7C,0x14,0x68, /* R */ - 0x48,0x54,0x24, /* S */ - 0x04,0x7C,0x04, /* T */ - 0x7C,0x40,0x7C, /* U */ - 0x3C,0x40,0x3C, /* V */ - 0x7C,0x20,0x7C, /* W */ - 0x6C,0x10,0x6C, /* X */ - 0x1C,0x60,0x1C, /* Y */ - 0x64,0x54,0x4C, /* Z */ - 0x7C,0x44,0x00, /* [ */ - 0x08,0x10,0x20, /* \ */ - 0x44,0x7C,0x00, /* ] */ - 0x08,0x04,0x08, /* ^ */ - 0x80,0x80,0x80, /* _ */ - 0x04,0x08,0x00 /* ` */ -}; - -/* System 5x8 */ -const uint8_t au8FontSystem5x8[]= -{ - 0x00,0x00,0x00,0x00,0x00, /* Space */ - 0x00,0x00,0x4f,0x00,0x00, /* ! */ - 0x00,0x07,0x00,0x07,0x00, /* " */ - 0x14,0x7f,0x14,0x7f,0x14, /* # */ - 0x24,0x2a,0x7f,0x2a,0x12, /* 0x */ - 0x23,0x13,0x08,0x64,0x62, /* % */ - 0x36,0x49,0x55,0x22,0x20, /* & */ - 0x00,0x05,0x03,0x00,0x00, /* ' */ - 0x00,0x1c,0x22,0x41,0x00, /* ( */ - 0x00,0x41,0x22,0x1c,0x00, /* ) */ - 0x14,0x08,0x3e,0x08,0x14, /* // */ - 0x08,0x08,0x3e,0x08,0x08, /* + */ - 0x50,0x30,0x00,0x00,0x00, /* , */ - 0x08,0x08,0x08,0x08,0x08, /* - */ - 0x00,0x60,0x60,0x00,0x00, /* . */ - 0x20,0x10,0x08,0x04,0x02, /* / */ - 0x3e,0x51,0x49,0x45,0x3e, /* 0 */ - 0x00,0x42,0x7f,0x40,0x00, /* 1 */ - 0x42,0x61,0x51,0x49,0x46, /* 2 */ - 0x21,0x41,0x45,0x4b,0x31, /* 3 */ - 0x18,0x14,0x12,0x7f,0x10, /* 4 */ - 0x27,0x45,0x45,0x45,0x39, /* 5 */ - 0x3c,0x4a,0x49,0x49,0x30, /* 6 */ - 0x01,0x71,0x09,0x05,0x03, /* 7 */ - 0x36,0x49,0x49,0x49,0x36, /* 8 */ - 0x06,0x49,0x49,0x29,0x1e, /* 9 */ - 0x00,0x36,0x36,0x00,0x00, /* : */ - 0x00,0x56,0x36,0x00,0x00, /* ; */ - 0x08,0x14,0x22,0x41,0x00, /* < */ - 0x14,0x14,0x14,0x14,0x14, /* = */ - 0x00,0x41,0x22,0x14,0x08, /* > */ - 0x02,0x01,0x51,0x09,0x06, /* ? */ - 0x3e,0x41,0x5d,0x55,0x1e, /* @ */ - 0x7e,0x11,0x11,0x11,0x7e, /* A */ - 0x7f,0x49,0x49,0x49,0x36, /* B */ - 0x3e,0x41,0x41,0x41,0x22, /* C */ - 0x7f,0x41,0x41,0x22,0x1c, /* D */ - 0x7f,0x49,0x49,0x49,0x41, /* E */ - 0x7f,0x09,0x09,0x09,0x01, /* F */ - 0x3e,0x41,0x49,0x49,0x7a, /* G */ - 0x7f,0x08,0x08,0x08,0x7f, /* H */ - 0x00,0x41,0x7f,0x41,0x00, /* I */ - 0x20,0x40,0x41,0x3f,0x01, /* J */ - 0x7f,0x08,0x14,0x22,0x41, /* K */ - 0x7f,0x40,0x40,0x40,0x40, /* L */ - 0x7f,0x02,0x0c,0x02,0x7f, /* M */ - 0x7f,0x04,0x08,0x10,0x7f, /* N */ - 0x3e,0x41,0x41,0x41,0x3e, /* O */ - 0x7f,0x09,0x09,0x09,0x06, /* P */ - 0x3e,0x41,0x51,0x21,0x5e, /* Q */ - 0x7f,0x09,0x19,0x29,0x46, /* R */ - 0x26,0x49,0x49,0x49,0x32, /* S */ - 0x01,0x01,0x7f,0x01,0x01, /* T */ - 0x3f,0x40,0x40,0x40,0x3f, /* U */ - 0x1f,0x20,0x40,0x20,0x1f, /* V */ - 0x3f,0x40,0x38,0x40,0x3f, /* W */ - 0x63,0x14,0x08,0x14,0x63, /* X */ - 0x07,0x08,0x70,0x08,0x07, /* Y */ - 0x61,0x51,0x49,0x45,0x43, /* Z */ - 0x00,0x7f,0x41,0x41,0x00, /* [ */ - 0x02,0x04,0x08,0x10,0x20, /* \ */ - 0x00,0x41,0x41,0x7f,0x00, /* ] */ - 0x04,0x02,0x01,0x02,0x04, /* ^ */ - 0x40,0x40,0x40,0x40,0x40, /* _ */ - 0x00,0x00,0x03,0x05,0x00, /* ` */ - 0x20,0x54,0x54,0x54,0x78, /* a */ - 0x7F,0x44,0x44,0x44,0x38, /* b */ - 0x38,0x44,0x44,0x44,0x44, /* c */ - 0x38,0x44,0x44,0x44,0x7f, /* d */ - 0x38,0x54,0x54,0x54,0x18, /* e */ - 0x04,0x04,0x7e,0x05,0x05, /* f */ - 0x08,0x54,0x54,0x54,0x3c, /* g */ - 0x7f,0x08,0x04,0x04,0x78, /* h */ - 0x00,0x44,0x7d,0x40,0x00, /* i */ - 0x20,0x40,0x44,0x3d,0x00, /* j */ - 0x7f,0x10,0x28,0x44,0x00, /* k */ - 0x00,0x41,0x7f,0x40,0x00, /* l */ - 0x7c,0x04,0x7c,0x04,0x78, /* m */ - 0x7c,0x08,0x04,0x04,0x78, /* n */ - 0x38,0x44,0x44,0x44,0x38, /* o */ - 0x7c,0x14,0x14,0x14,0x08, /* p */ - 0x08,0x14,0x14,0x14,0x7c, /* q */ - 0x7c,0x08,0x04,0x04,0x00, /* r */ - 0x48,0x54,0x54,0x54,0x24, /* s */ - 0x04,0x04,0x3f,0x44,0x44, /* t */ - 0x3c,0x40,0x40,0x20,0x7c, /* u */ - 0x1c,0x20,0x40,0x20,0x1c, /* v */ - 0x3c,0x40,0x30,0x40,0x3c, /* w */ - 0x44,0x28,0x10,0x28,0x44, /* x */ - 0x0c,0x50,0x50,0x50,0x3c, /* y */ - 0x44,0x64,0x54,0x4c,0x44, /* z */ - 0x08,0x36,0x41,0x41,0x00, /* { */ - 0x00,0x00,0x77,0x00,0x00, /* | */ - 0x00,0x41,0x41,0x36,0x08, /* } */ - 0x08,0x08,0x2a,0x1c,0x08, /* <- */ - 0x08,0x1c,0x2a,0x08,0x08, /* -> */ - 0xff,0xff,0xff,0xff,0xff, /* */ -}; - -/* System 7x8 */ -const uint8_t au8FontSystem7x8[]= -{ - 0, 0, 0, 0, 0, 0, 0, //' ' - 0, 6, 95, 95, 6, 0, 0, //'!' - 0, 7, 7, 0, 7, 7, 0, //'"' - 20, 127, 127, 20, 127, 127, 20, //'#' - 36, 46, 107, 107, 58, 18, 0, //'$' - 70, 102, 48, 24, 12, 102, 98, //'%' - 48, 122, 79, 93, 55, 122, 72, //'&' - 4, 7, 3, 0, 0, 0, 0, //''' - 0, 28, 62, 99, 65, 0, 0, //'(' - 0, 65, 99, 62, 28, 0, 0, //')' - 8, 42, 62, 28, 28, 62, 42, //'*' - 8, 8, 62, 62, 8, 8, 0, //'+' - 0, 128, 224, 96, 0, 0, 0, //',' - 8, 8, 8, 8, 8, 8, 0, //'-' - 0, 0, 96, 96, 0, 0, 0, //'.' - 96, 48, 24, 12, 6, 3, 1, //'/' - 62, 127, 113, 89, 77, 127, 62, //'0' - 64, 66, 127, 127, 64, 64, 0, //'1' - 98, 115, 89, 73, 111, 102, 0, //'2' - 34, 99, 73, 73, 127, 54, 0, //'3' - 24, 28, 22, 83, 127, 127, 80, //'4' - 39, 103, 69, 69, 125, 57, 0, //'5' - 60, 126, 75, 73, 121, 48, 0, //'6' - 3, 3, 113, 121, 15, 7, 0, //'7' - 54, 127, 73, 73, 127, 54, 0, //'8' - 6, 79, 73, 105, 63, 30, 0, //'9' - 0, 0, 102, 102, 0, 0, 0, //':' - 0, 128, 230, 102, 0, 0, 0, //';' - 8, 28, 54, 99, 65, 0, 0, //'<' - 36, 36, 36, 36, 36, 36, 0, //'=' - 0, 65, 99, 54, 28, 8, 0, //'>' - 2, 3, 81, 89, 15, 6, 0, //'?' - 62, 127, 65, 93, 93, 31, 30, //'@' - 124,126, 19, 19, 126, 124, 0, //'A' - 65, 127, 127, 73, 73, 127, 54, //'B' - 28, 62, 99, 65, 65, 99, 34, //'C' - 65, 127, 127, 65, 99, 62, 28, //'D' - 65, 127, 127, 73, 93, 65, 99, //'E' - 65, 127, 127, 73, 29, 1, 3, //'F' - 28, 62, 99, 65, 81, 115, 114, //'G' - 127,127, 8, 8, 127, 127, 0, //'H' - 0, 65, 127, 127, 65, 0, 0, //'I' - 48, 112, 64, 65, 127, 63, 1, //'J' - 65, 127, 127, 8, 28, 119, 99, //'K' - 65, 127, 127, 65, 64, 96, 112, //'L' - 127,127, 14, 28, 14, 127, 127, //'M' - 127,127, 6, 12, 24, 127, 127, //'N' - 28, 62, 99, 65, 99, 62, 28, //'O' - 65, 127, 127, 73, 9, 15, 6, //'P' - 30, 63, 33, 113, 127, 94, 0, //'Q' - 65, 127, 127, 9, 25, 127, 102, //'R' - 38, 111, 77, 89, 115, 50, 0, //'S' - 3, 65, 127, 127, 65, 3, 0, //'T' - 127,127, 64, 64, 127, 127, 0, //'U' - 31, 63, 96, 96, 63, 31, 0, //'V' - 127,127, 48, 24, 48, 127, 127, //'W' - 67, 103, 60, 24, 60, 103, 67, //'X' - 7, 79, 120, 120, 79, 7, 0, //'Y' - 71, 99, 113, 89, 77, 103, 115, //'Z' - 0, 127, 127, 65, 65, 0, 0, //'[' - 1, 3, 6, 12, 24, 48, 96, //'\' - 0, 65, 65, 127, 127, 0, 0, //']' - 8, 12, 6, 3, 6, 12, 8, //'^' - 128,128, 128, 128, 128, 128, 128, //'_' - 0, 0, 3, 7, 4, 0, 0, //'`' - 32, 116, 84, 84, 60, 120, 64, //'a' - 65, 127, 63, 72, 72, 120, 48, //'b' - 56, 124, 68, 68, 108, 40, 0, //'c' - 48, 120, 72, 73, 63, 127, 64, //'d' - 56, 124, 84, 84, 92, 24, 0, //'e' - 72, 126, 127, 73, 3, 2, 0, //'f' - 56, 188, 164, 164, 252, 120, 0, //'g' - 65, 127, 127, 8, 4, 124, 120, //'h' - 0, 68, 125, 125, 64, 0, 0, //'i' - 96, 224, 128, 128, 253, 125, 0, //'j' - 65, 127, 127, 16, 56, 108, 68, //'k' - 0, 65, 127, 127, 64, 0, 0, //'l' - 120,124, 28, 56, 28, 124, 120, //'m' - 124,124, 4, 4, 124, 120, 0, //'n' - 56, 124, 68, 68, 124, 56, 0, //'o' - 0, 252, 252, 164, 36, 60, 24, //'p' - 24, 60, 36, 164, 248, 252, 132, //'q' - 68, 124, 120, 76, 4, 28, 24, //'r' - 72, 92, 84, 84, 116, 36, 0, //'s' - 0, 4, 62, 127, 68, 36, 0, //'t' - 60, 124, 64, 64, 60, 124, 64, //'u' - 28, 60, 96, 96, 60, 28, 0, //'v' - 60, 124, 112, 56, 112, 124, 60, //'w' - 68, 108, 56, 16, 56, 108, 68, //'x' - 60, 188, 160, 160, 252, 124, 0, //'y' - 76, 100, 116, 92, 76, 100, 0, //'z' - 8, 8, 62, 119, 65, 65, 0, //'{' - 0, 0, 0, 119, 119, 0, 0, //'|' - 65, 65, 119, 62, 8, 8, 0, //'}' - 2, 3, 1, 3, 2, 3, 1, //'~' - 255,129, 129, 129, 129, 129, 255, //' - 14, 159, 145, 177, 251, 74, 0 //'Á' -}; - -/* 8x8 Normal */ -const uint8_t au8Font8x8[]= { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ASCII - 32 - 0x00,0x00,0x00,0x5F,0x5F,0x00,0x00,0x00, // ASCII - 33 - 0x00,0x00,0x03,0x07,0x00,0x07,0x03,0x00, // ASCII - 34 - 0x00,0x10,0x74,0x1C,0x77,0x1C,0x17,0x04, // ASCII - 35 - 0x00,0x24,0x2E,0x2A,0x7F,0x2A,0x3A,0x10, // ASCII - 36 - 0x00,0x4C,0x6A,0x76,0x1A,0x6A,0x56,0x33, // ASCII - 37 - 0x00,0x30,0x7A,0x4F,0x5D,0x37,0x7A,0x48, // ASCII - 38 - 0x00,0x00,0x04,0x07,0x03,0x00,0x00,0x00, // ASCII - 39 - 0x00,0x00,0x00,0x1C,0x3E,0x63,0x41,0x00, // ASCII - 40 - 0x00,0x00,0x41,0x63,0x3E,0x1C,0x00,0x00, // ASCII - 41 - 0x00,0x08,0x2A,0x3E,0x1C,0x3E,0x2A,0x08, // ASCII - 42 - 0x00,0x08,0x08,0x3E,0x3E,0x08,0x08,0x00, // ASCII - 43 - 0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, // ASCII - 44 - 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, // ASCII - 45 - 0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, // ASCII - 46 - 0x00,0x60,0x30,0x18,0x0C,0x06,0x03,0x01, // ASCII - 47 - 0x00,0x1C,0x3E,0x61,0x43,0x3E,0x1C,0x00, // ASCII - 48 - 0x00,0x00,0x44,0x7F,0x7F,0x40,0x00,0x00, // ASCII - 49 - 0x00,0x46,0x67,0x71,0x59,0x4F,0x66,0x00, // ASCII - 50 - 0x00,0x22,0x63,0x49,0x4D,0x7F,0x32,0x00, // ASCII - 51 - 0x00,0x18,0x1C,0x52,0x7F,0x7F,0x50,0x00, // ASCII - 52 - 0x00,0x2F,0x6F,0x45,0x45,0x7D,0x39,0x00, // ASCII - 53 - 0x00,0x3C,0x7E,0x4B,0x49,0x79,0x30,0x00, // ASCII - 54 - 0x00,0x07,0x43,0x71,0x7D,0x0F,0x03,0x00, // ASCII - 55 - 0x00,0x36,0x7F,0x4D,0x59,0x7F,0x36,0x00, // ASCII - 56 - 0x00,0x06,0x4F,0x49,0x69,0x3F,0x1E,0x00, // ASCII - 57 - 0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00, // ASCII - 58 - 0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00, // ASCII - 59 - 0x00,0x00,0x08,0x1C,0x36,0x63,0x41,0x00, // ASCII - 60 - 0x00,0x14,0x14,0x14,0x14,0x14,0x14,0x00, // ASCII - 61 - 0x00,0x00,0x41,0x63,0x36,0x1C,0x08,0x00, // ASCII - 62 - 0x00,0x02,0x07,0x51,0x59,0x0F,0x06,0x00, // ASCII - 63 - 0x00,0x3E,0x41,0x5D,0x55,0x5D,0x51,0x1E, // ASCII - 64 - 0x00,0x40,0x70,0x1D,0x17,0x1F,0x78,0x60, // ASCII - 65 - 0x00,0x41,0x7F,0x7F,0x49,0x4F,0x7E,0x30, // ASCII - 66 - 0x00,0x1C,0x3E,0x63,0x41,0x41,0x42,0x27, // ASCII - 67 - 0x00,0x41,0x7F,0x7F,0x41,0x63,0x3E,0x1C, // ASCII - 68 - 0x00,0x41,0x7F,0x7F,0x49,0x5D,0x41,0x63, // ASCII - 69 - 0x00,0x41,0x7F,0x7F,0x49,0x1D,0x01,0x03, // ASCII - 70 - 0x00,0x1C,0x3E,0x63,0x41,0x51,0x72,0x77, // ASCII - 71 - 0x00,0x7F,0x7F,0x08,0x08,0x7F,0x7F,0x00, // ASCII - 72 - 0x00,0x00,0x41,0x7F,0x7F,0x41,0x00,0x00, // ASCII - 73 - 0x00,0x30,0x70,0x41,0x41,0x7F,0x3F,0x01, // ASCII - 74 - 0x00,0x7F,0x7F,0x08,0x1C,0x77,0x63,0x41, // ASCII - 75 - 0x00,0x41,0x7F,0x7F,0x41,0x40,0x60,0x70, // ASCII - 76 - 0x00,0x7F,0x7E,0x0C,0x18,0x0C,0x7E,0x7F, // ASCII - 77 - 0x00,0x7F,0x7E,0x0C,0x18,0x30,0x7F,0x7F, // ASCII - 78 - 0x00,0x1C,0x3E,0x63,0x41,0x63,0x3E,0x1C, // ASCII - 79 - 0x00,0x41,0x7F,0x7F,0x49,0x09,0x0F,0x06, // ASCII - 80 - 0x00,0x1C,0x3E,0x63,0x51,0x63,0x3E,0x1C, // ASCII - 81 - 0x00,0x7F,0x7F,0x09,0x19,0x7F,0x66,0x40, // ASCII - 82 - 0x00,0x66,0x6F,0x4D,0x59,0x7B,0x33,0x00, // ASCII - 83 - 0x00,0x03,0x41,0x7F,0x7F,0x41,0x03,0x00, // ASCII - 84 - 0x00,0x3F,0x7F,0x40,0x40,0x40,0x7F,0x3F, // ASCII - 85 - 0x00,0x03,0x0F,0x3D,0x70,0x1D,0x07,0x01, // ASCII - 86 - 0x00,0x0F,0x7F,0x30,0x1C,0x30,0x7F,0x0F, // ASCII - 87 - 0x00,0x63,0x77,0x1C,0x1C,0x77,0x63,0x00, // ASCII - 88 - 0x01,0x03,0x47,0x7C,0x78,0x47,0x03,0x01, // ASCII - 89 - 0x00,0x67,0x73,0x59,0x4D,0x67,0x73,0x00, // ASCII - 90 - 0x00,0x00,0x00,0x7F,0x7F,0x41,0x41,0x00, // ASCII - 91 - 0x00,0x01,0x03,0x06,0x0C,0x18,0x30,0x60, // ASCII - 92 - 0x00,0x00,0x41,0x41,0x7F,0x7F,0x00,0x00, // ASCII - 93 - 0x00,0x00,0x04,0x06,0x03,0x06,0x04,0x00, // ASCII - 94 - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ASCII - 95 - 0x00,0x00,0x01,0x03,0x06,0x04,0x00,0x00, // ASCII - 96 - 0x00,0x68,0x6C,0x54,0x54,0x3C,0x78,0x40, // ASCII - 97 - 0x00,0x41,0x7F,0x3F,0x6C,0x44,0x7C,0x38, // ASCII - 98 - 0x00,0x38,0x7C,0x44,0x44,0x6C,0x2C,0x00, // ASCII - 99 - 0x00,0x38,0x7C,0x44,0x49,0x3F,0x7F,0x40, // ASCII - 100 - 0x00,0x38,0x7C,0x54,0x54,0x5C,0x58,0x00, // ASCII - 101 - 0x00,0x00,0x48,0x7E,0x7F,0x49,0x0B,0x02, // ASCII - 102 - 0x00,0x48,0x7C,0x34,0x34,0x2C,0x68,0x44, // ASCII - 103 - 0x00,0x41,0x7F,0x7F,0x08,0x04,0x7C,0x78, // ASCII - 104 - 0x00,0x00,0x44,0x7D,0x7D,0x40,0x00,0x00, // ASCII - 105 - 0x00,0x60,0x60,0x04,0x7D,0x7D,0x00,0x00, // ASCII - 106 - 0x00,0x41,0x7F,0x7F,0x10,0x78,0x6C,0x44, // ASCII - 107 - 0x00,0x00,0x41,0x7F,0x7F,0x40,0x00,0x00, // ASCII - 108 - 0x00,0x7C,0x7C,0x0C,0x78,0x0C,0x7C,0x78, // ASCII - 109 - 0x00,0x44,0x7C,0x7C,0x08,0x04,0x7C,0x78, // ASCII - 110 - 0x00,0x38,0x7C,0x44,0x44,0x7C,0x38,0x00, // ASCII - 111 - 0x00,0x04,0x7C,0x78,0x24,0x24,0x3C,0x18, // ASCII - 112 - 0x00,0x18,0x3C,0x24,0x24,0x78,0x7C,0x00, // ASCII - 113 - 0x00,0x44,0x7C,0x78,0x4C,0x04,0x1C,0x18, // ASCII - 114 - 0x00,0x48,0x5C,0x5C,0x74,0x74,0x24,0x00, // ASCII - 115 - 0x00,0x00,0x04,0x3E,0x7F,0x44,0x24,0x00, // ASCII - 116 - 0x00,0x3C,0x7C,0x40,0x40,0x3C,0x7C,0x40, // ASCII - 117 - 0x00,0x04,0x1C,0x3C,0x60,0x30,0x1C,0x04, // ASCII - 118 - 0x00,0x1C,0x7C,0x30,0x1C,0x30,0x7C,0x1C, // ASCII - 119 - 0x00,0x44,0x6C,0x3C,0x10,0x78,0x6C,0x44, // ASCII - 120 - 0x00,0x44,0x4C,0x1C,0x70,0x64,0x1C,0x0C, // ASCII - 121 - 0x00,0x4C,0x64,0x74,0x5C,0x4C,0x64,0x00, // ASCII - 122 - 0x00,0x08,0x08,0x3E,0x77,0x41,0x41,0x00, // ASCII - 123 - 0x00,0x00,0x00,0x7F,0x7F,0x00,0x00,0x00, // ASCII - 124 - 0x00,0x41,0x41,0x77,0x3E,0x08,0x08,0x00, // ASCII - 125 - 0x00,0x02,0x01,0x01,0x03,0x02,0x02,0x01, // ASCII - 126 - 0x00,0x60,0x78,0x4E,0x47,0x5E,0x78,0x60, // ASCII - 127 - 0x00,0x1C,0x3E,0x23,0x41,0x41,0x42,0x27, // ASCII - 128 - 0x00,0x3D,0x7D,0x40,0x41,0x3D,0x7C,0x40, // ASCII - 129 -}; - -/* 8x8 Thin */ -const uint8_t au8Font8x8Thin[]= { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00, - 0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00, - 0x00,0x14,0x7F,0x14,0x14,0x7F,0x14,0x00, - 0x00,0x24,0x2A,0x6B,0x6B,0x2A,0x12,0x00, - 0x00,0x46,0x26,0x10,0x08,0x64,0x62,0x00, - 0x30,0x4A,0x45,0x4D,0x32,0x48,0x48,0x00, - 0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00, - 0x00,0x1C,0x22,0x41,0x00,0x00,0x00,0x00, - 0x00,0x00,0x41,0x22,0x1C,0x00,0x00,0x00, - 0x08,0x2A,0x1C,0x1C,0x1C,0x2A,0x08,0x00, - 0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00, - 0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00, - 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, - 0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, - 0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x00, - 0x00,0x3E,0x61,0x51,0x49,0x45,0x3E,0x00, - 0x00,0x44,0x42,0x7F,0x40,0x40,0x00,0x00, - 0x00,0x62,0x51,0x51,0x49,0x49,0x66,0x00, - 0x00,0x22,0x41,0x49,0x49,0x49,0x36,0x00, - 0x10,0x18,0x14,0x52,0x7F,0x50,0x10,0x00, - 0x00,0x27,0x45,0x45,0x45,0x45,0x39,0x00, - 0x00,0x3C,0x4A,0x49,0x49,0x49,0x30,0x00, - 0x00,0x03,0x01,0x71,0x09,0x05,0x03,0x00, - 0x00,0x36,0x49,0x49,0x49,0x49,0x36,0x00, - 0x00,0x06,0x49,0x49,0x49,0x29,0x1E,0x00, - 0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0x66,0x00,0x00,0x00,0x00, - 0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x00, - 0x00,0x24,0x24,0x24,0x24,0x24,0x24,0x00, - 0x00,0x00,0x00,0x41,0x22,0x14,0x08,0x00, - 0x00,0x02,0x01,0x01,0x51,0x09,0x06,0x00, - 0x00,0x3E,0x41,0x5D,0x55,0x55,0x1E,0x00, - 0x00,0x7C,0x12,0x11,0x11,0x12,0x7C,0x00, - 0x00,0x41,0x7F,0x49,0x49,0x49,0x36,0x00, - 0x00,0x1C,0x22,0x41,0x41,0x41,0x22,0x00, - 0x00,0x41,0x7F,0x41,0x41,0x22,0x1C,0x00, - 0x00,0x41,0x7F,0x49,0x5D,0x41,0x63,0x00, - 0x00,0x41,0x7F,0x49,0x1D,0x01,0x03,0x00, - 0x00,0x1C,0x22,0x41,0x51,0x51,0x72,0x00, - 0x00,0x7F,0x08,0x08,0x08,0x08,0x7F,0x00, - 0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x00, - 0x00,0x30,0x40,0x40,0x41,0x3F,0x01,0x00, - 0x00,0x41,0x7F,0x08,0x14,0x22,0x41,0x40, - 0x00,0x41,0x7F,0x41,0x40,0x40,0x60,0x00, - 0x00,0x7F,0x01,0x02,0x04,0x02,0x01,0x7F, - 0x00,0x7F,0x01,0x02,0x04,0x08,0x7F,0x00, - 0x00,0x3E,0x41,0x41,0x41,0x41,0x3E,0x00, - 0x00,0x41,0x7F,0x49,0x09,0x09,0x06,0x00, - 0x00,0x1E,0x21,0x21,0x31,0x21,0x5E,0x40, - 0x00,0x41,0x7F,0x49,0x19,0x29,0x46,0x00, - 0x00,0x26,0x49,0x49,0x49,0x49,0x32,0x00, - 0x00,0x03,0x01,0x41,0x7F,0x41,0x01,0x03, - 0x00,0x3F,0x40,0x40,0x40,0x40,0x3F,0x00, - 0x00,0x0F,0x10,0x20,0x40,0x20,0x10,0x0F, - 0x00,0x3F,0x40,0x40,0x38,0x40,0x40,0x3F, - 0x00,0x41,0x22,0x14,0x08,0x14,0x22,0x41, - 0x00,0x01,0x02,0x44,0x78,0x44,0x02,0x01, - 0x00,0x43,0x61,0x51,0x49,0x45,0x43,0x61, - 0x00,0x7F,0x41,0x41,0x41,0x00,0x00,0x00, - 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x00, - 0x00,0x41,0x41,0x41,0x7F,0x00,0x00,0x00, - 0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x00, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00, - 0x00,0x20,0x54,0x54,0x54,0x54,0x78,0x40, - 0x00,0x01,0x7F,0x30,0x48,0x48,0x48,0x30, - 0x00,0x38,0x44,0x44,0x44,0x44,0x28,0x00, - 0x00,0x30,0x48,0x48,0x48,0x31,0x7F,0x40, - 0x00,0x38,0x54,0x54,0x54,0x54,0x18,0x00, - 0x00,0x00,0x48,0x7E,0x49,0x01,0x02,0x00, - 0x00,0x98,0xA4,0xA4,0xA4,0xA4,0x78,0x04, - 0x00,0x41,0x7F,0x08,0x04,0x04,0x78,0x00, - 0x00,0x00,0x44,0x7D,0x40,0x00,0x00,0x00, - 0x00,0x60,0x80,0x80,0x80,0x84,0x7D,0x00, - 0x00,0x01,0x7F,0x10,0x28,0x44,0x40,0x00, - 0x00,0x00,0x41,0x7F,0x40,0x00,0x00,0x00, - 0x00,0x7C,0x04,0x04,0x78,0x04,0x04,0x78, - 0x00,0x7C,0x08,0x04,0x04,0x04,0x78,0x00, - 0x00,0x38,0x44,0x44,0x44,0x44,0x38,0x00, - 0x00,0x84,0xFC,0x98,0x24,0x24,0x18,0x00, - 0x00,0x18,0x24,0x24,0x98,0xFC,0x84,0x00, - 0x00,0x44,0x7C,0x48,0x04,0x04,0x18,0x00, - 0x00,0x48,0x54,0x54,0x54,0x54,0x24,0x00, - 0x00,0x04,0x04,0x3F,0x44,0x44,0x20,0x00, - 0x00,0x3C,0x40,0x40,0x40,0x20,0x7C,0x00, - 0x00,0x0C,0x10,0x20,0x40,0x20,0x10,0x0C, - 0x00,0x3C,0x40,0x40,0x38,0x40,0x40,0x3C, - 0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, - 0x00,0x9C,0xA0,0xA0,0xA0,0xA0,0x7C,0x00, - 0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00, - 0x00,0x08,0x08,0x36,0x41,0x41,0x00,0x00, - 0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x00, - 0x00,0x00,0x41,0x41,0x36,0x08,0x08,0x00, - 0x00,0x02,0x01,0x01,0x02,0x02,0x01,0x00, - 0x00,0x70,0x48,0x44,0x42,0x44,0x48,0x70, - 0x00,0x0E,0x91,0x91,0xB1,0xB1,0x4A,0x00, - 0x00,0x3A,0x40,0x40,0x40,0x7A,0x40,0x00, - 0x00,0x38,0x54,0x54,0x55,0x55,0x18,0x00, - 0x00,0x22,0x55,0x55,0x55,0x79,0x42,0x00, - 0x00,0x21,0x54,0x54,0x54,0x78,0x41,0x00, - 0x00,0x20,0x55,0x55,0x54,0x78,0x40,0x00, - 0x00,0x20,0x54,0x55,0x54,0x78,0x40,0x00, - 0x00,0x18,0x24,0xA4,0xA4,0xE4,0x40,0x00, - 0x00,0x3A,0x55,0x55,0x55,0x55,0x1A,0x00, - 0x00,0x39,0x54,0x54,0x54,0x54,0x19,0x00, - 0x00,0x38,0x55,0x55,0x54,0x54,0x18,0x00, - 0x00,0x00,0x01,0x44,0x7C,0x41,0x00,0x00, - 0x02,0x01,0x45,0x7D,0x41,0x01,0x02,0x00, - 0x00,0x00,0x01,0x45,0x7C,0x40,0x00,0x00, - 0x00,0x79,0x14,0x12,0x12,0x14,0x79,0x00, - 0x00,0x70,0x28,0x2B,0x2B,0x28,0x70,0x00, - 0x00,0x44,0x7C,0x54,0x55,0x45,0x00,0x00, - 0x00,0x20,0x54,0x54,0x58,0x38,0x54,0x54, - 0x00,0x7C,0x0A,0x09,0x09,0x7F,0x49,0x49, - 0x00,0x30,0x4A,0x49,0x49,0x4A,0x30,0x00, - 0x00,0x32,0x48,0x48,0x48,0x48,0x32,0x00, - 0x00,0x30,0x49,0x4A,0x48,0x48,0x30,0x00, - 0x00,0x38,0x42,0x41,0x41,0x42,0x38,0x00, - 0x00,0x38,0x41,0x42,0x40,0x40,0x38,0x00, - 0x00,0x1A,0xA0,0xA0,0xA0,0xA0,0x7A,0x00, - 0x00,0x19,0x24,0x42,0x42,0x24,0x19,0x00, - 0x00,0x3D,0x40,0x40,0x40,0x40,0x3D,0x00, - 0x00,0x18,0x24,0x24,0xE7,0x24,0x24,0x00, - 0x00,0x68,0x5E,0x49,0x41,0x42,0x20,0x00, - 0x00,0x15,0x16,0x7C,0x16,0x15,0x00,0x00, - 0x81,0xFF,0x85,0x05,0x17,0xFA,0x90,0x50, - 0x40,0x88,0x88,0x7F,0x09,0x09,0x02,0x00, - 0x00,0x20,0x54,0x54,0x55,0x79,0x40,0x00, -}; - diff --git a/ssd1306.c b/ssd1306.c --- a/ssd1306.c +++ b/ssd1306.c @@ -12,6 +12,7 @@ #include "bsp.h" #include "ssd1306.h" #include "DrawText.h" +#include "smallfonts.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ @@ -600,56 +601,169 @@ const DeviceProp ssd1306_Prop = +// FontData +const char fontData[240][5] = +{ // Refer to "Times New Roman" Font Database + // Basic Characters + {0x00,0x00,0x00,0x00,0x00}, // ( 0) - 0x0020 No-Break Space + {0x00,0x00,0x4F,0x00,0x00}, // ( 1) ! - 0x0021 Exclamation Mark + {0x00,0x07,0x00,0x07,0x00}, // ( 2) " - 0x0022 Quotation Mark + {0x14,0x7F,0x14,0x7F,0x14}, // ( 3) # - 0x0023 Number Sign + {0x24,0x2A,0x7F,0x2A,0x12}, // ( 4) $ - 0x0024 Dollar Sign + {0x23,0x13,0x08,0x64,0x62}, // ( 5) % - 0x0025 Percent Sign + {0x36,0x49,0x55,0x22,0x50}, // ( 6) & - 0x0026 Ampersand + {0x00,0x05,0x03,0x00,0x00}, // ( 7) ' - 0x0027 Apostrophe + {0x00,0x1C,0x22,0x41,0x00}, // ( 8) ( - 0x0028 Left Parenthesis + {0x00,0x41,0x22,0x1C,0x00}, // ( 9) ) - 0x0029 Right Parenthesis + {0x14,0x08,0x3E,0x08,0x14}, // ( 10) * - 0x002A Asterisk + {0x08,0x08,0x3E,0x08,0x08}, // ( 11) + - 0x002B Plus Sign + {0x00,0x50,0x30,0x00,0x00}, // ( 12) , - 0x002C Comma + {0x08,0x08,0x08,0x08,0x08}, // ( 13) - - 0x002D Hyphen-Minus + {0x00,0x60,0x60,0x00,0x00}, // ( 14) . - 0x002E Full Stop + {0x20,0x10,0x08,0x04,0x02}, // ( 15) / - 0x002F Solidus + {0x3E,0x51,0x49,0x45,0x3E}, // ( 16) 0 - 0x0030 Digit Zero + {0x00,0x42,0x7F,0x40,0x00}, // ( 17) 1 - 0x0031 Digit One + {0x42,0x61,0x51,0x49,0x46}, // ( 18) 2 - 0x0032 Digit Two + {0x21,0x41,0x45,0x4B,0x31}, // ( 19) 3 - 0x0033 Digit Three + {0x18,0x14,0x12,0x7F,0x10}, // ( 20) 4 - 0x0034 Digit Four + {0x27,0x45,0x45,0x45,0x39}, // ( 21) 5 - 0x0035 Digit Five + {0x3C,0x4A,0x49,0x49,0x30}, // ( 22) 6 - 0x0036 Digit Six + {0x01,0x71,0x09,0x05,0x03}, // ( 23) 7 - 0x0037 Digit Seven + {0x36,0x49,0x49,0x49,0x36}, // ( 24) 8 - 0x0038 Digit Eight + {0x06,0x49,0x49,0x29,0x1E}, // ( 25) 9 - 0x0039 Dight Nine + {0x00,0x36,0x36,0x00,0x00}, // ( 26) : - 0x003A Colon + {0x00,0x56,0x36,0x00,0x00}, // ( 27) ; - 0x003B Semicolon + {0x08,0x14,0x22,0x41,0x00}, // ( 28) < - 0x003C Less-Than Sign + {0x14,0x14,0x14,0x14,0x14}, // ( 29) = - 0x003D Equals Sign + {0x00,0x41,0x22,0x14,0x08}, // ( 30) > - 0x003E Greater-Than Sign + {0x02,0x01,0x51,0x09,0x06}, // ( 31) ? - 0x003F Question Mark + {0x32,0x49,0x79,0x41,0x3E}, // ( 32) @ - 0x0040 Commercial At + {0x7E,0x11,0x11,0x11,0x7E}, // ( 33) A - 0x0041 Latin Capital Letter A + {0x7F,0x49,0x49,0x49,0x36}, // ( 34) B - 0x0042 Latin Capital Letter B + {0x3E,0x41,0x41,0x41,0x22}, // ( 35) C - 0x0043 Latin Capital Letter C + {0x7F,0x41,0x41,0x22,0x1C}, // ( 36) D - 0x0044 Latin Capital Letter D + {0x7F,0x49,0x49,0x49,0x41}, // ( 37) E - 0x0045 Latin Capital Letter E + {0x7F,0x09,0x09,0x09,0x01}, // ( 38) F - 0x0046 Latin Capital Letter F + {0x3E,0x41,0x49,0x49,0x7A}, // ( 39) G - 0x0047 Latin Capital Letter G + {0x7F,0x08,0x08,0x08,0x7F}, // ( 40) H - 0x0048 Latin Capital Letter H + {0x00,0x41,0x7F,0x41,0x00}, // ( 41) I - 0x0049 Latin Capital Letter I + {0x20,0x40,0x41,0x3F,0x01}, // ( 42) J - 0x004A Latin Capital Letter J + {0x7F,0x08,0x14,0x22,0x41}, // ( 43) K - 0x004B Latin Capital Letter K + {0x7F,0x40,0x40,0x40,0x40}, // ( 44) L - 0x004C Latin Capital Letter L + {0x7F,0x02,0x0C,0x02,0x7F}, // ( 45) M - 0x004D Latin Capital Letter M + {0x7F,0x04,0x08,0x10,0x7F}, // ( 46) N - 0x004E Latin Capital Letter N + {0x3E,0x41,0x41,0x41,0x3E}, // ( 47) O - 0x004F Latin Capital Letter O + {0x7F,0x09,0x09,0x09,0x06}, // ( 48) P - 0x0050 Latin Capital Letter P + {0x3E,0x41,0x51,0x21,0x5E}, // ( 49) Q - 0x0051 Latin Capital Letter Q + {0x7F,0x09,0x19,0x29,0x46}, // ( 50) R - 0x0052 Latin Capital Letter R + {0x46,0x49,0x49,0x49,0x31}, // ( 51) S - 0x0053 Latin Capital Letter S + {0x01,0x01,0x7F,0x01,0x01}, // ( 52) T - 0x0054 Latin Capital Letter T + {0x3F,0x40,0x40,0x40,0x3F}, // ( 53) U - 0x0055 Latin Capital Letter U + {0x1F,0x20,0x40,0x20,0x1F}, // ( 54) V - 0x0056 Latin Capital Letter V + {0x3F,0x40,0x38,0x40,0x3F}, // ( 55) W - 0x0057 Latin Capital Letter W + {0x63,0x14,0x08,0x14,0x63}, // ( 56) X - 0x0058 Latin Capital Letter X + {0x07,0x08,0x70,0x08,0x07}, // ( 57) Y - 0x0059 Latin Capital Letter Y + {0x61,0x51,0x49,0x45,0x43}, // ( 58) Z - 0x005A Latin Capital Letter Z + {0x00,0x7F,0x41,0x41,0x00}, // ( 59) [ - 0x005B Left Square Bracket + {0x02,0x04,0x08,0x10,0x20}, // ( 60) \ - 0x005C Reverse Solidus + {0x00,0x41,0x41,0x7F,0x00}, // ( 61) ] - 0x005D Right Square Bracket + {0x04,0x02,0x01,0x02,0x04}, // ( 62) ^ - 0x005E Circumflex Accent + {0x40,0x40,0x40,0x40,0x40}, // ( 63) _ - 0x005F Low Line + {0x01,0x02,0x04,0x00,0x00}, // ( 64) ` - 0x0060 Grave Accent + {0x20,0x54,0x54,0x54,0x78}, // ( 65) a - 0x0061 Latin Small Letter A + {0x7F,0x48,0x44,0x44,0x38}, // ( 66) b - 0x0062 Latin Small Letter B + {0x38,0x44,0x44,0x44,0x20}, // ( 67) c - 0x0063 Latin Small Letter C + {0x38,0x44,0x44,0x48,0x7F}, // ( 68) d - 0x0064 Latin Small Letter D + {0x38,0x54,0x54,0x54,0x18}, // ( 69) e - 0x0065 Latin Small Letter E + {0x08,0x7E,0x09,0x01,0x02}, // ( 70) f - 0x0066 Latin Small Letter F + {0x06,0x49,0x49,0x49,0x3F}, // ( 71) g - 0x0067 Latin Small Letter G + {0x7F,0x08,0x04,0x04,0x78}, // ( 72) h - 0x0068 Latin Small Letter H + {0x00,0x44,0x7D,0x40,0x00}, // ( 73) i - 0x0069 Latin Small Letter I + {0x20,0x40,0x44,0x3D,0x00}, // ( 74) j - 0x006A Latin Small Letter J + {0x7F,0x10,0x28,0x44,0x00}, // ( 75) k - 0x006B Latin Small Letter K + {0x00,0x41,0x7F,0x40,0x00}, // ( 76) l - 0x006C Latin Small Letter L + {0x7C,0x04,0x18,0x04,0x7C}, // ( 77) m - 0x006D Latin Small Letter M + {0x7C,0x08,0x04,0x04,0x78}, // ( 78) n - 0x006E Latin Small Letter N + {0x38,0x44,0x44,0x44,0x38}, // ( 79) o - 0x006F Latin Small Letter O + {0x7C,0x14,0x14,0x14,0x08}, // ( 80) p - 0x0070 Latin Small Letter P + {0x08,0x14,0x14,0x18,0x7C}, // ( 81) q - 0x0071 Latin Small Letter Q + {0x7C,0x08,0x04,0x04,0x08}, // ( 82) r - 0x0072 Latin Small Letter R + {0x48,0x54,0x54,0x54,0x20}, // ( 83) s - 0x0073 Latin Small Letter S + {0x04,0x3F,0x44,0x40,0x20}, // ( 84) t - 0x0074 Latin Small Letter T + {0x3C,0x40,0x40,0x20,0x7C}, // ( 85) u - 0x0075 Latin Small Letter U + {0x1C,0x20,0x40,0x20,0x1C}, // ( 86) v - 0x0076 Latin Small Letter V + {0x3C,0x40,0x30,0x40,0x3C}, // ( 87) w - 0x0077 Latin Small Letter W + {0x44,0x28,0x10,0x28,0x44}, // ( 88) x - 0x0078 Latin Small Letter X + {0x0C,0x50,0x50,0x50,0x3C}, // ( 89) y - 0x0079 Latin Small Letter Y + {0x44,0x64,0x54,0x4C,0x44}, // ( 90) z - 0x007A Latin Small Letter Z + {0x00,0x08,0x36,0x41,0x00}, // ( 91) { - 0x007B Left Curly Bracket + {0x00,0x00,0x7F,0x00,0x00}, // ( 92) | - 0x007C Vertical Line + {0x00,0x41,0x36,0x08,0x00}, // ( 93) } - 0x007D Right Curly Bracket + {0x02,0x01,0x02,0x04,0x02}, // ( 94) ~ - 0x007E Tilde + {0x08,0x14,0x2A,0x14,0x22}, // ( 95) << - 0x00AB Left-Pointing Double Angle Quotation Mark + {0x00,0x02,0x05,0x02,0x00}, // ( 96) - 0x00B0 Degree Sign + {0x44,0x44,0x5F,0x44,0x44}, // ( 97) +- - 0x00B1 Plus-Minus Sign + {0x7E,0x20,0x20,0x10,0x3E}, // ( 98) u - 0x00B5 Micro Sign + {0x22,0x14,0x2A,0x14,0x08}, // ( 99) >> - 0x00BB Right-Pointing Double Angle Quotation Mark + {0x30,0x48,0x45,0x40,0x20}, // (100) ? - 0x00BF Inverted Question Mark + {0x22,0x14,0x08,0x14,0x22}, // (101) x - 0x00D7 Multiplcation Sign + {0x08,0x08,0x2A,0x08,0x08}, // (102) + - 0x00F7 Division Sign + {0x18,0x14,0x08,0x14,0x0C}, // (103) - 0x221E Infinity + {0x44,0x4A,0x4A,0x51,0x51}, // (104) < - 0x2264 Less-Than or Equal to + {0x51,0x51,0x4A,0x4A,0x44}, // (105) > - 0x2265 Greater-Than or Equal to + {0x54,0x14,0x64,0x08,0x70}, // (106) .: - RF Symbol + {0x70,0x7C,0x72,0x7C,0x70}, // (107) ^ - Lock symbol + {0x70,0x5C,0x52,0x54,0x70}, // (108) / - Unlock symbol + {0x0C,0x1E,0x3C,0x1E,0x0C}, // (109) <3 - Heart Symbol + {0x18,0x22,0xFF,0x12,0x0C}, // (110) U - USB Symbol +}; -/* -void ssd1306_DrawChar(uint8_t x, uint8_t y, uint8_t c, struct FONT_DEF font) +void setStartPage(unsigned char d) { - uint8_t col, column[font.u8Width]; - - // Check if the requested character is available - if ((c >= font.u8FirstChar) && (c <= font.u8LastChar)) - { - // Retrieve appropriate columns from font data - for (col = 0; col < font.u8Width; col++) - { - column[col] = font.au8FontTable[((c - 32) * font.u8Width) + col]; // Get first column of appropriate character - } - } - else - { - // Requested character is not available in this font ... send a space instead - for (col = 0; col < font.u8Width; col++) - { - column[col] = 0xFF; // Send solid space - } - } - - // Render each column - uint16_t xoffset, yoffset; - for (xoffset = 0; xoffset < font.u8Width; xoffset++) - { - for (yoffset = 0; yoffset < (font.u8Height + 1); yoffset++) - { - uint8_t bit = 0x00; - bit = (column[xoffset] << (8 - (yoffset + 1))); // Shift current row bit left - bit = (bit >> 7); // Shift current row but right (results in 0x01 for black, and 0x00 for white) - if (bit) - { - ssd1306_DrawPixel(x + xoffset, y + yoffset, 1); - } - } - } + WriteCommand(0xB0|d); // Set Page Start Address for Page Addressing Mode + // Default => 0xB0 (0x00) +} +/* Below are functions used to configure the OLED */ +void setStartColumn(unsigned char d) +{ + WriteCommand(0x00+d%16); // Set Lower Column Start Address for Page Addressing Mode + WriteCommand(0x10+d/16); // Set Higher Column Start Address for Page Addressing Mode + // Default => 0x10 } -ssd1306_DrawString(uint8_t x, uint8_t y, const char *text, struct FONT_DEF font) +/* Print a single character from font.cpp */ +void ssd1306_DrawChar(char ascii, unsigned char row, unsigned char xPos) { - uint8_t l; - for (l = 0; l < strlen(text); l++) - { - ssd1306DrawChar(x + (l * (font.u8Width + 1)), y, text[l], font); - } + char *srcPointer = 0; + unsigned char i; + + srcPointer = &fontData[(ascii-32)][0]; + + setStartPage(row); + setStartColumn(xPos); + + for(i=0;i<5;i++) + { + WriteData(*srcPointer); + srcPointer++; + } + WriteData(0x00); } -*/ +void ssd1306_DrawString(const char *dataPtr, unsigned char row, unsigned char xPos) +{ + char *srcPointer; + + srcPointer = (char*)dataPtr; + ssd1306_DrawChar(' ',row,xPos); // NBSP must be written first before the string start + + while(1) + { + ssd1306_DrawChar(*srcPointer,row,xPos); + srcPointer++; + xPos+=6; + if(*srcPointer == 0) break; + } +} diff --git a/ssd1306.h b/ssd1306.h --- a/ssd1306.h +++ b/ssd1306.h @@ -14,5 +14,7 @@ unsigned char ssd1306_GetContrast(); unsigned char* ssd1306_GetBuffer(); unsigned long ssd1306_DrawPoint(Pos_t x, Pos_t y, Color_t color); void ssd1306_block_write(void); +void ssd1306_DrawChar(char ascii, unsigned char row, unsigned char xPos); +void ssd1306_DrawString(const char *dataPtr, unsigned char row, unsigned char xPos); #endif