原先用LiteOS點亮過OLED,這次用HarmonyOS點亮OLED
?
1、在applications/sample/wifi-iot/app下新建myshow文件夾,myshow文件夾下新建myshow.c、oled_ssd1306.c、oled_ssd1306.h、BUILD.gn四個文件。
?
?
oled_ssd1306.c為:
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
/************************************6*8的點陣************************************/
static unsigned char F6x8[][6] =
{
? ?{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
? ?{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
? ?{ 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
? ?{ 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
? ?{ 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
? ?{ 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
? ?{ 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
? ?{ 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
? ?{ 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
? ?{ 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
? ?{ 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
? ?{ 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
? ?{ 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
? ?{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
? ?{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
? ?{ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
? ?{ 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
? ?{ 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
? ?{ 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
? ?{ 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
? ?{ 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
? ?{ 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
? ?{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
? ?{ 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
? ?{ 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
? ?{ 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
? ?{ 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
? ?{ 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
? ?{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
? ?{ 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
? ?{ 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
? ?{ 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
? ?{ 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
? ?{ 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
? ?{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
? ?{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
? ?{ 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
? ?{ 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
? ?{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
? ?{ 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
? ?{ 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
? ?{ 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
? ?{ 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
? ?{ 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
? ?{ 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
? ?{ 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
? ?{ 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
? ?{ 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
? ?{ 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
? ?{ 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
? ?{ 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
? ?{ 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
? ?{ 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
? ?{ 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
? ?{ 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
? ?{ 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
? ?{ 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
? ?{ 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
? ?{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
? ?{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
? ?{ 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
? ?{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
? ?{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
? ?{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
? ?{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
? ?{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
? ?{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
? ?{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
? ?{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
? ?{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
? ?{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
? ?{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
? ?{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
? ?{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
? ?{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
? ?{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
? ?{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
? ?{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
? ?{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
? ?{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
? ?{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
? ?{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
? ?{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
? ?{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
? ?{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
? ?{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
? ?{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
? ?{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
? ?{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
? ?{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
? ?{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
? ?{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }, // horiz lines
};
/****************************************8*16的點陣************************************/
static const unsigned char F8X16[]=
{
? ?0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
? ?0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
? ?0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
? ?0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
? ?0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
? ?0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
? ?0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
? ?0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
? ?0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
? ?0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
? ?0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
? ?0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
? ?0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
? ?0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
? ?0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
? ?0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
? ?0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
? ?0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
? ?0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
? ?0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
? ?0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
? ?0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
? ?0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
? ?0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
? ?0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
? ?0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
? ?0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
? ?0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
? ?0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
? ?0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
? ?0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
? ?0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
? ?0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
? ?0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
? ?0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
? ?0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
? ?0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
? ?0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
? ?0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
? ?0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
? ?0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
? ?0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
? ?0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
? ?0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
? ?0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
? ?0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
? ?0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
? ?0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
? ?0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
? ?0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
? ?0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
? ?0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
? ?0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
? ?0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
? ?0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
? ?0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
? ?0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
? ?0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
? ?0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
? ?0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
? ?0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,// 60
? ?0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
? ?0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
? ?0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
? ?0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
? ?0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
? ?0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
? ?0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
? ?0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
? ?0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
? ?0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
? ?0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
? ?0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
? ?0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
? ?0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
? ?0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
? ?0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
? ?0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
? ?0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
? ?0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
? ?0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
? ?0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
? ?0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
? ?0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
? ?0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
? ?0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
? ?0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
? ?0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
? ?0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
? ?0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
? ?0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
? ?0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
? ?0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
? ?0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
? ?0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};
/*---6*6 點陣*/
static const unsigned char F6X6[]=
{
? ?0x00,0x1E,0x1E,0x1E,0x1E,0x00, //■
};
/*---8*8 點陣*/
static const unsigned char F8X8[]=
{
? //0x00,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x00,
? 0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x00, //■
};
static uint32 OledWriteByte(uint8 regAddr, uint8 byte)
{
?// TODO: Check SSD1306 DataSheet if must write by byte.
? ?uint8 buffer[] = {regAddr, byte};
?return IoTI2cWrite(OLED_I2C_IDX, OLED_I2C_ADDR, buffer, ARRAY_SIZE(buffer));
}
/**
* [url=home.php?mod=space&uid=2666770]@Brief[/url] Write a command byte to OLED device.
*
* [url=home.php?mod=space&uid=3142012]@param[/url] cmd the commnad byte to be writen.
* [url=home.php?mod=space&uid=1141835]@Return[/url] Returns {[url=home.php?mod=space&uid=41289]@Link[/url] WIFI_IOT_SUCCESS} if the operation is successful;
* returns an error code defined in {@link wifiiot_errno.h} otherwise.
*/
static uint32 OledWriteCmd(uint8 cmd)
{
? ?return OledWriteByte(OLED_I2C_CMD, cmd);
}
/**
* @brief Write a data byte to OLED device.
*
* @param cmd the data byte to be writen.
* @return Returns {@link WIFI_IOT_SUCCESS} if the operation is successful;
* returns an error code defined in {@link wifiiot_errno.h} otherwise.
*/
static uint32 OledWriteData(uint8 data)
{
?return OledWriteByte(OLED_I2C_DATA, data);
}
/**
* @brief ssd1306 OLED Initialize.
*/
uint32 OledInit(void)
{
? ?static const uint8 initCmds[] = {
? ? ? ?0xAE, // --display off
? ? ? ?0x00, // ---set low column address
? ? ? ?0x10, // ---set high column address
? ? ? ?0x40, // --set start line address
? ? ? ?0xB0, // --set page address
? ? ? ?0x81, // contract control
? ? ? ?0xFF, // --128
? ? ? ?0xA1, // set segment remap
? ? ? ?0xA6, // --normal / reverse
? ? ? ?0xA8, // --set multiplex ratio(1 to 64)
? ? ? ?0x3F, // --1/32 duty
? ? ? ?0xC8, // Com scan direction
? ? ? ?0xD3, // -set display offset
? ? ? ?0x00, //
? ? ? ?0xD5, // set osc division
? ? ? ?0x80, //
? ? ? ?0xD8, // set area color mode off
? ? ? ?0x05, //
? ? ? ?0xD9, // Set Pre-Charge Period
? ? ? ?0xF1, //
? ? ? ?0xDA, // set com pin configuartion
? ? ? ?0x12, //
? ? ? ?0xDB, // set Vcomh
? ? ? ?0x30, //
? ? ? ?0x8D, // set charge pump enable
? ? ? ?0x14, //
? ? ? ?0xAF, // --turn on oled panel
? ?};
? ?IoTI2cInit(OLED_I2C_IDX, OLED_I2C_BAUDRATE);
?for (uint32 i = 0; i < ARRAY_SIZE(initCmds); i++) {
? ? ? ?uint32 status = OledWriteCmd(initCmds[i]);
? ? ? ?if (status != IOT_SUCCESS) {
? ? ? ? ? ?return status;
? ? ? ?}
? ?}
? ?return IOT_SUCCESS;
}
void OledSetPosition(uint8 x, uint8 y)
{
? ?OledWriteCmd(0xb0 + y);
? ?OledWriteCmd(((x & 0xf0) >> 4) | 0x10);
? ?OledWriteCmd(x & 0x0f);
}
void OledFillScreen(uint8 fillData)
{
? ?uint8 m = 0;
? ?uint8 n = 0;
? ?for (m=0; m < 8; m++) {
? ? ? ?OledWriteCmd(0xb0 + m);
? ? ? ?OledWriteCmd(0x00);
? ? ? ?OledWriteCmd(0x10);
? ? ? ?for (n=0; n < 128; n++) {
? ? ? ? ? ?OledWriteData(fillData);
? ? ? ?}
? ?}
}
/**
* @brief 8*16 typeface
* @param x: write positon start from x axis
* @param y: write positon start from y axis
* @param ch: write data
* @param font: selected font
*/
void OledShowChar(uint8 x, uint8 y, uint8 ch, Font font)
{ ? ? ? ?
?uint8 c = 0;
? ?uint8 i = 0;
? ?c = ch - ' '; //得到偏移后的值 ?
? ?if (x > OLED_WIDTH - 1) {
? ? ? ?x = 0;
? ? ? ?y = y + 2;
? ?}
? ?if (font == FONT8x16) {
? ? ? ?OledSetPosition(x, y); ?
? ? ? ?for (i = 0; i < 8; i++){
? ? ? ? ? ?OledWriteData(F8X16[c*16 + i]);
? ? ? ?}
? ? ? ?OledSetPosition(x, y+1);
? ? ? ?for (i = 0; i < 8; i++) {
? ? ? ? ? ?OledWriteData(F8X16[c*16 + i + 8]);
? ? ? ?}
? ?}else {
? ? ? ?OledSetPosition(x, y);
? ? ? ?for (i = 0; i < 6; i++) {
? ? ? ? ? ?OledWriteData(F6x8[c][i]);
? ? ? ?}
? ?}
}
void OledShowString(uint8 x, uint8 y, const char* str, Font font)
{
?uint8 j = 0;
? ?if (str == NULL) {
? ? ? ?printf("param is NULL,Please check!!!
");
? ? ? ?return;
? ?}
?while (str[j]) {
? ? ? ?OledShowChar(x, y, str[j], font);
? ? ? ?x += 8;
? ? ? ?if (x > 120)
? ? ? ?{
? ? ? ? ? ?x = 0;
? ? ? ? ? ?y += 2;
? ? ? ?}
? ? ? ?j++;
?}
}
?
oled_ssd1306.h:
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
/**
* @brief ssd1306 OLED Initialize.
*/
uint32 OledInit(void);
/**
* @brief Set cursor position
*
* @param x the horizontal posistion of cursor
* @param y the vertical position of cursor
* @return Returns {@link WIFI_IOT_SUCCESS} if the operation is successful;
* returns an error code defined in {@link wifiiot_errno.h} otherwise.
*/
void OledSetPosition(uint8 x, uint8 y);
void OledFillScreen(uint8 fillData);
enum Font {
? ?FONT6x8 = 1,
? ?FONT8x16
};
typedef enum Font Font;
enum DisOnOff{
?DISOFF,
?DISON
};
typedef enum DisOnOff DisOnOff;
void OledShowChar(uint8 x, uint8 y, uint8 ch, Font font);
void OledShowString(uint8 x, uint8 y, const char* str, Font font);
void PrintBlock(uint8 x0, uint8 y0);
void DisplayBlock(uint8 x0, uint8 y0);
?
myshow.c:
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
void mymain(void)
{
? ?OledInit();
? ?OledFillScreen(0x00); ?
? ?OledShowString(26, 2, "HELLO WORLD!", FONT8x16);
}
SYS_RUN(mymain);
?
myshow/BUILD.gn:
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
static_library("myshow") {
?sources = [
? ?"oled_ssd1306.c",
? ?"myshow.c",
?]
?include_dirs = [
? ? ?"http://utils/native/lite/include",
? ? ?"http://kernel/liteos_m/kal/cmsis",
? ? ?"http://base/iot_hardware/peripheral/interfaces/kits",
?]
}
?
然后修改app/BUILD.gn:
?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
import("http://build/lite/config/component/lite_component.gni")
lite_component("app") {
? ?features = [
? ? ? ?# "demo_snake",
? ? ? ?"myshow:myshow",
? ?]
? ?deps = []
}
?
保存后編譯:
?
?
然后把生成的Hi3861_wifiiot_app_allinone.bin用HiBurn工具下載到開發(fā)板:
?
?
下載完成后OLED顯示如下圖:
?
?
?
審核編輯:湯梓紅
評論
查看更多