3 files added
2 files modified
New file |
| | |
| | | /********************************************************************** |
| | | * Copyright: (C)2021 LingYun IoT System Studio <www.weike-iot.com> |
| | | * Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292 |
| | | * Description: ISKBoard OLED font generated by PCtoLCD.exe |
| | | * |
| | | * ChangeLog: |
| | | * Version Date Author Description |
| | | * V1.0.0 2021.08.10 GuoWenxue Release initial version |
| | | ***********************************************************************/ |
| | | #ifndef __FONT_OLED_H |
| | | #define __FONT_OLED_H |
| | | |
| | | #include <stdint.h> |
| | | |
| | | /*+--------------------------------+ |
| | | *| ASCII font size 6x8 | |
| | | *+--------------------------------+*/ |
| | | |
| | | static const uint8_t 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 |
| | | }; |
| | | |
| | | /*+--------------------------------+ |
| | | *| ASCII font size 8x16 | |
| | | *+--------------------------------+*/ |
| | | |
| | | static const uint8_t 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 |
| | | }; |
| | | |
| | | |
| | | |
| | | /*+--------------------------------+ |
| | | *| BMP Logo for 128x32 | |
| | | *+--------------------------------+*/ |
| | | |
| | | /* lingyun-128x32.bmp 使用 PCtoLCD.exe 取模软件生成配置(图形模式): 阴码、列行式、逆向、十六进制数、C51格式 */ |
| | | |
| | | static const uint8_t bmp_logo[] = { |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0xFF,0xFF,0x03,0x03,0x00,0x00, |
| | | 0x00,0xFC,0xFE,0x87,0x03,0x03,0x87,0xFE,0xFC,0x00,0x03,0x03,0xFF,0xFF,0x03,0x03, |
| | | 0x00,0x00,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x78,0x78,0x78,0x78,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF8,0x78,0x78,0x78, |
| | | 0xF8,0xF8,0xF8,0xF0,0xE0,0x80,0x00,0x00,0x00,0x80,0x80,0xE0,0xE0,0xF0,0xF0,0x78, |
| | | 0x78,0x78,0x78,0x78,0x78,0xF0,0xF0,0xE0,0xE0,0xC0,0x80,0x00,0x00,0xF0,0xF0,0xF0, |
| | | 0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0xF0,0xF0, |
| | | 0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00, |
| | | 0xC0,0xE0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xFB,0xFB,0xF3,0xF3,0xE3,0xC3,0x00,0x03, |
| | | 0x03,0x00,0x01,0x03,0x03,0x03,0x03,0x01,0x00,0x03,0x03,0x00,0x03,0x03,0x00,0x00, |
| | | 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00, |
| | | 0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x00,0x00, |
| | | 0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE1,0xE3,0xE3,0xE3,0xE3,0xE0,0x00,0x1F,0x3F,0x7F, |
| | | 0xFF,0xFC,0xF0,0xE0,0xF0,0xF0,0xF8,0xFF,0xFF,0xFF,0x3F,0x1F,0x00,0x00,0xFF,0xFF, |
| | | 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, |
| | | 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x00,0x00, |
| | | 0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00, |
| | | 0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x03,0x0F,0x1F,0x3F,0x7E,0x7C,0x78,0x70, |
| | | 0x70,0x60,0x61,0x71,0x71,0x7F,0x7F,0x7F,0x3F,0x1F,0x07,0x03,0x00,0x00,0x00,0x00, |
| | | 0x00,0x01,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F, |
| | | 0x3F,0x7F,0x7F,0x78,0x70,0x70,0x70,0x70,0x78,0x7F,0x3F,0x1F,0x0F,0x00,0x00,0x00, |
| | | 0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x00,0x00, |
| | | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 |
| | | }; |
| | | |
| | | |
| | | /*+--------------------------------+ |
| | | *| Chines Font 16x16 SongTi | |
| | | *+--------------------------------+*/ |
| | | |
| | | /* 汉字生成使用 PCtoLCD.exe(字符模式):宋体、16x16、阴码、列行式、逆向、十六进制数、C51格式 */ |
| | | |
| | | /* 宋体 16X16: 凌云实验室 */ |
| | | |
| | | #define HZK_LEN_LINGYUN 5 |
| | | static const uint8_t Hzk_LingYun[][32]= |
| | | { |
| | | {0x00,0x02,0x0C,0xC0,0x00,0x20,0xA4,0x64,0xA4,0x3F,0x24,0x64,0xA4,0x20,0x20,0x00}, |
| | | {0x02,0x02,0x7F,0x00,0x80,0x89,0x44,0x46,0x2B,0x12,0x2A,0x46,0x80,0x81,0x00,0x00},/*"凌",0*/ |
| | | |
| | | {0x40,0x40,0x42,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00}, |
| | | {0x00,0x20,0x70,0x28,0x24,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0xE0,0x00,0x00,0x00},/*"云",1*/ |
| | | |
| | | {0x10,0x0C,0x04,0x84,0x14,0x64,0x05,0x06,0xF4,0x04,0x04,0x04,0x04,0x14,0x0C,0x00}, |
| | | {0x04,0x84,0x84,0x44,0x47,0x24,0x14,0x0C,0x07,0x0C,0x14,0x24,0x44,0x84,0x04,0x00},/*"实",2*/ |
| | | |
| | | {0x02,0xFA,0x82,0x82,0xFE,0x80,0x40,0x20,0x50,0x4C,0x43,0x4C,0x50,0x20,0x40,0x00}, |
| | | {0x08,0x18,0x48,0x84,0x44,0x3F,0x40,0x44,0x58,0x41,0x4E,0x60,0x58,0x47,0x40,0x00},/*"验",3*/ |
| | | |
| | | {0x10,0x0C,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x24,0x14,0x0C,0x00}, |
| | | {0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00},/*"室",4*/ |
| | | }; |
| | | |
| | | /* 宋体 16x16: 温度 */ |
| | | #define HZK_LEN_TEMP 2 |
| | | static const uint8_t Hzk_Temp[][32]= |
| | | { |
| | | {0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00}, |
| | | {0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*"温",0*/ |
| | | |
| | | {0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00}, |
| | | {0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",1*/ |
| | | }; |
| | | |
| | | /* 宋体 16x16: 湿度 */ |
| | | #define HZK_LEN_HUMD 2 |
| | | static const uint8_t Hzk_Humd[][32]= |
| | | { |
| | | {0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00}, |
| | | {0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00},/*"湿",0*/ |
| | | |
| | | {0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00}, |
| | | {0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",1*/ |
| | | }; |
| | | |
| | | /* 宋体 16X16: 光强 */ |
| | | #define HZK_LEN_LIGHT 2 |
| | | static const uint8_t Hzk_Light[][32]= |
| | | { |
| | | {0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F,0x40,0xC0,0x50,0x48,0x46,0x40,0x40,0x00}, |
| | | {0x80,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00},/*"光",0*/ |
| | | |
| | | {0x02,0xE2,0x22,0x22,0x3E,0x00,0x80,0x9E,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00}, |
| | | {0x00,0x43,0x82,0x42,0x3E,0x40,0x47,0x44,0x44,0x44,0x7F,0x44,0x44,0x54,0xE7,0x00},/*"强",1*/ |
| | | }; |
| | | |
| | | |
| | | /* 宋体 16X16: 声音 */ |
| | | #define HZK_LEN_NOISY 2 |
| | | static const uint8_t Hzk_Noisy[][32]= |
| | | { |
| | | {0x04,0x14,0xD4,0x54,0x54,0x54,0x54,0xDF,0x54,0x54,0x54,0x54,0xD4,0x14,0x04,0x00}, |
| | | {0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x03,0x00,0x00,0x00},/*"声",0*/ |
| | | |
| | | {0x40,0x40,0x44,0x44,0x54,0x64,0x45,0x46,0x44,0x64,0x54,0x44,0x44,0x40,0x40,0x00}, |
| | | {0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00},/*"音",1*/ |
| | | }; |
| | | |
| | | #endif |
New file |
| | |
| | | /********************************************************************** |
| | | * Copyright: (C)2021 LingYun IoT System Studio <www.weike-iot.com> |
| | | * Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292 |
| | | * Description: ISKBoard OLED(N091-2832TSWFG02-H14, 128x32) driver |
| | | * |
| | | * ChangeLog: |
| | | * Version Date Author Description |
| | | * V1.0.0 2021.08.10 GuoWenxue Release initial version |
| | | ***********************************************************************/ |
| | | |
| | | #include "hal_oled.h" |
| | | |
| | | #define mdelay(ms) HAL_Delay(ms) |
| | | |
| | | enum |
| | | { |
| | | OLED_CMD = 0, |
| | | OLED_DATA, |
| | | }; |
| | | |
| | | static void IIC_Write_Command(uint8_t command) |
| | | { |
| | | /* Send I2C start signal */ |
| | | I2C_StartCondition(); |
| | | |
| | | /* Send OLED I2C slave write address */ |
| | | I2C_SendAddress(I2C_WR); |
| | | |
| | | /* send command value */ |
| | | I2C_WriteByte(0x00); |
| | | I2C_WriteByte(command); |
| | | |
| | | /* Send I2C stop signal */ |
| | | I2C_StopCondition(); |
| | | } |
| | | |
| | | static void IIC_Write_Data(uint8_t data) |
| | | { |
| | | /* Send I2C start signal */ |
| | | I2C_StartCondition(); |
| | | |
| | | /* Send OLED I2C slave write address */ |
| | | I2C_SendAddress(I2C_WR); |
| | | |
| | | /* send data value */ |
| | | I2C_WriteByte(0x40); |
| | | I2C_WriteByte(data); |
| | | |
| | | /* Send I2C stop signal */ |
| | | I2C_StopCondition(); |
| | | } |
| | | |
| | | |
| | | /* OLED write a byte command data or command */ |
| | | void OLED_WR_Byte(uint8_t data, uint8_t type) |
| | | { |
| | | if( OLED_CMD==type ) |
| | | { |
| | | IIC_Write_Command(data); |
| | | } |
| | | else |
| | | { |
| | | IIC_Write_Data(data); |
| | | } |
| | | } |
| | | |
| | | /* |
| | | *+-------------------------------------------------+ |
| | | *| OLED initial/control function API | |
| | | *+-------------------------------------------------+ |
| | | */ |
| | | |
| | | /* Turn OLED display onʾ */ |
| | | void OLED_Display_On(void) |
| | | { |
| | | OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC command |
| | | OLED_WR_Byte(0X14, OLED_CMD); //DCDC ON |
| | | OLED_WR_Byte(0XAF, OLED_CMD); //DISPLAY ON |
| | | } |
| | | |
| | | /* Turn OLED display off */ |
| | | void OLED_Display_Off(void) |
| | | { |
| | | OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC command |
| | | OLED_WR_Byte(0X10, OLED_CMD); //DCDC OFF |
| | | OLED_WR_Byte(0XAE, OLED_CMD); //DISPLAY OFF |
| | | } |
| | | |
| | | /* Clear OLED, it will be black */ |
| | | void OLED_Clear(void) |
| | | { |
| | | uint8_t i, j; |
| | | |
| | | /* update display */ |
| | | for(i=0;i<8;i++) |
| | | { |
| | | OLED_WR_Byte (0xb0+i, OLED_CMD); // set page address: 0~7 |
| | | OLED_WR_Byte (0x00, OLED_CMD); // set display address, column address lower bytes;ַ |
| | | OLED_WR_Byte (0x10, OLED_CMD); // set display address, column address higher bytes; |
| | | |
| | | for(j=0; j<128; j++) |
| | | OLED_WR_Byte(0, OLED_DATA); |
| | | } |
| | | |
| | | OLED_Set_Pos(0, 0); |
| | | } |
| | | |
| | | void OLED_On(void) |
| | | { |
| | | uint8_t i, j; |
| | | |
| | | /* update display */ |
| | | for(i=0; i<8; i++) |
| | | { |
| | | OLED_WR_Byte (0xb0+i, OLED_CMD); // set page address: 0~7 |
| | | OLED_WR_Byte (0x00, OLED_CMD); // set display address, row address lower bytes;ַ |
| | | OLED_WR_Byte (0x10, OLED_CMD); // set display address, row address higher bytes; |
| | | |
| | | for(j=0; j<128; j++) |
| | | OLED_WR_Byte(1, OLED_DATA); |
| | | } |
| | | } |
| | | |
| | | void OLED_Init(void) |
| | | { |
| | | if( i2c_lock(OLED_CHIPADDR) ) |
| | | { |
| | | return ; |
| | | } |
| | | |
| | | mdelay(10); |
| | | |
| | | OLED_WR_Byte(0xAE,OLED_CMD); // Disable |
| | | |
| | | OLED_WR_Byte(0x40,OLED_CMD); //---set low column address |
| | | OLED_WR_Byte(0xB0,OLED_CMD); //---set high column address |
| | | |
| | | OLED_WR_Byte(0xC8,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0x81,OLED_CMD); |
| | | OLED_WR_Byte(0xff,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xa1,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xa6,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xa8,OLED_CMD); |
| | | OLED_WR_Byte(0x1f,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xd3,OLED_CMD); |
| | | OLED_WR_Byte(0x00,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xd5,OLED_CMD); |
| | | OLED_WR_Byte(0xf0,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xd9,OLED_CMD); |
| | | OLED_WR_Byte(0x22,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xda,OLED_CMD); |
| | | OLED_WR_Byte(0x02,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xdb,OLED_CMD); |
| | | OLED_WR_Byte(0x49,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0x8d,OLED_CMD); |
| | | OLED_WR_Byte(0x14,OLED_CMD); |
| | | |
| | | OLED_WR_Byte(0xaf,OLED_CMD); |
| | | |
| | | OLED_Clear(); |
| | | } |
| | | |
| | | /* |
| | | *+-------------------------------------------------+ |
| | | *| OLED display function API | |
| | | *+-------------------------------------------------+ |
| | | */ |
| | | |
| | | /* set OLED display position */ |
| | | void OLED_Set_Pos(uint8_t x, uint8_t y) |
| | | { |
| | | OLED_WR_Byte(0xb0+y, OLED_CMD); |
| | | OLED_WR_Byte(((x&0xf0)>>4)|0x10, OLED_CMD); |
| | | OLED_WR_Byte((x&0x0f), OLED_CMD); |
| | | } |
| | | |
| | | /* show a character on OLED as $Char_Size */ |
| | | void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t char_Size) |
| | | { |
| | | uint8_t c=0,i=0; |
| | | |
| | | c=chr-' '; // get offset value |
| | | |
| | | if( x>X_WIDTH-1 ) |
| | | { |
| | | x=0; |
| | | y=y+2; |
| | | } |
| | | |
| | | if(char_Size ==16) |
| | | { |
| | | OLED_Set_Pos(x,y); |
| | | |
| | | for(i=0; i<8; i++) |
| | | OLED_WR_Byte(F8X16[c*16+i],OLED_DATA); |
| | | |
| | | OLED_Set_Pos(x,y+1); |
| | | |
| | | for(i=0;i<8;i++) |
| | | OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA); |
| | | } |
| | | else |
| | | { |
| | | OLED_Set_Pos(x,y); |
| | | for(i=0;i<6;i++) |
| | | OLED_WR_Byte(F6x8[c][i],OLED_DATA); |
| | | } |
| | | } |
| | | |
| | | /* show a string on OLED */ |
| | | void OLED_ShowString(uint8_t x, uint8_t y, char *chr, uint8_t font_size) |
| | | { |
| | | uint8_t j=0; |
| | | |
| | | while( chr[j]!='\0' ) |
| | | { |
| | | OLED_ShowChar(x, y, chr[j], font_size); |
| | | |
| | | x+=8; |
| | | |
| | | if(x>120) |
| | | { |
| | | x=0; |
| | | y+=2; |
| | | } |
| | | |
| | | j++; |
| | | } |
| | | } |
| | | |
| | | /* Show Chinese on OLED */ |
| | | void OLED_ShowChinese(const uint8_t (*Hzk)[32], uint8_t x, uint8_t y, uint8_t number) |
| | | { |
| | | uint8_t t,adder=0; |
| | | |
| | | OLED_Set_Pos(x, y); |
| | | for(t=0;t<16;t++) |
| | | { |
| | | OLED_WR_Byte(Hzk[2*number][t],OLED_DATA); |
| | | adder+=1; |
| | | } |
| | | |
| | | OLED_Set_Pos(x,y+1); |
| | | for(t=0;t<16;t++) |
| | | { |
| | | OLED_WR_Byte(Hzk[2*number+1][t],OLED_DATA); |
| | | adder+=1; |
| | | } |
| | | } |
| | | |
| | | /* Show BMP images(32) on OLED, x: 0~127 y:0~7 */ |
| | | void OLED_DrawBMP(uint8_t x0, uint8_t y0, uint8_t x_width, uint8_t y_width, const uint8_t *bmp) |
| | | { |
| | | uint32_t j=0; |
| | | uint8_t x,y; |
| | | |
| | | if( y_width%8==0 ) |
| | | y = y_width/8; |
| | | else |
| | | y = y_width/8+1; |
| | | |
| | | for(y=y0; y<y_width; y++) |
| | | { |
| | | OLED_Set_Pos(x0, y); |
| | | for(x=x0; x<x_width; x++) |
| | | { |
| | | OLED_WR_Byte(bmp[j++],OLED_DATA); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | /********************************************************************** |
| | | * Copyright: (C)2021 LingYun IoT System Studio <www.weike-iot.com> |
| | | * Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292 |
| | | * Description: ISKBoard OLED(N091-2832TSWFG02-H14, 128x32) driver |
| | | * |
| | | * ChangeLog: |
| | | * Version Date Author Description |
| | | * V1.0.0 2021.08.10 GuoWenxue Release initial version |
| | | ***********************************************************************/ |
| | | |
| | | #ifndef INC_HAL_OLED_H_ |
| | | #define INC_HAL_OLED_H_ |
| | | |
| | | #include "stm32l4xx_hal.h" |
| | | #include "i2c_bitbang.h" |
| | | #include "font_oled.h" |
| | | |
| | | #define OLED_CHIPADDR 0x3C /* OLED chip address */ |
| | | |
| | | #define X_WIDTH 128 |
| | | #define Y_WIDTH 32 |
| | | |
| | | #define OLED_FONT16 16 |
| | | #define OLED_FONT8 8 |
| | | |
| | | /* |
| | | *+-------------------------------------------------+ |
| | | *| OLED initial/control function API | |
| | | *+-------------------------------------------------+ |
| | | */ |
| | | void OLED_Init(void); |
| | | void OLED_On(void); |
| | | void OLED_Clear(void); |
| | | void OLED_Display_On(void); |
| | | void OLED_Display_Off(void); |
| | | |
| | | /* |
| | | *+-------------------------------------------------+ |
| | | *| OLED display function API | |
| | | *+-------------------------------------------------+ |
| | | */ |
| | | void OLED_Set_Pos(uint8_t x, uint8_t y); |
| | | void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size); |
| | | void OLED_ShowString(uint8_t x,uint8_t y, char *p,uint8_t font_size); |
| | | |
| | | /* Show Chinese on OLED */ |
| | | void OLED_ShowChinese(const uint8_t (*Hzk)[32], uint8_t x, uint8_t y, uint8_t number); |
| | | |
| | | /* Show BMP images(128x64) on OLED, x: 0~127 y:0~7 */ |
| | | void OLED_DrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, const uint8_t * bmp); |
| | | |
| | | #endif /* INC_HAL_OLED_H_ */ |
| | |
| | | *+---------------------------------+ |
| | | */ |
| | | |
| | | #define mdelay(x) HAL_Delay(x) |
| | | #define mdelay(ms) HAL_Delay(ms) |
| | | |
| | | enum |
| | | { |
| | |
| | | i2c_bus_t i2c_bus = |
| | | { |
| | | /* Addr SCL_Pin SDA_Pin */ |
| | | 0x00, {GPIOB, GPIO_PIN_6 }, {GPIOB, GPIO_PIN_7 }, |
| | | 0x00, {GPIOB, GPIO_PIN_6 }, {GPIOB, GPIO_PIN_7 }, /* SHT20, RTC, OLED */ |
| | | }; |
| | | |
| | | static inline void SDA_IN(void) |
| | |
| | | #include "miscdev.h" |
| | | #include "sht20.h" |
| | | #include "w25q.h" |
| | | #include "hal_oled.h" |
| | | /* USER CODE END Includes */ |
| | | |
| | | /* Private typedef -----------------------------------------------------------*/ |
| | |
| | | { |
| | | |
| | | /* USER CODE BEGIN 1 */ |
| | | int rv; |
| | | float temperature, humidity; |
| | | int pos_x = 25; |
| | | int pos_y = 1; |
| | | /* USER CODE END 1 */ |
| | | |
| | | /* MCU Configuration--------------------------------------------------------*/ |
| | |
| | | MX_TIM1_Init(); |
| | | MX_SPI1_Init(); |
| | | /* USER CODE BEGIN 2 */ |
| | | |
| | | beep_start(2, 300); |
| | | OLED_Init(); |
| | | |
| | | spinor_test(); |
| | | |
| | | do {} while(1); |
| | | /* USER CODE END 2 */ |
| | | |
| | | /* Infinite loop */ |
| | | /* USER CODE BEGIN WHILE */ |
| | | while (1) |
| | | { |
| | | rv = sht20_sample_TrH(&temperature, &humidity); |
| | | if( rv ) |
| | | { |
| | | printf("ERROR: SHT20 sample data failure, rv=%d\r\n", rv); |
| | | } |
| | | else |
| | | { |
| | | printf("SHT20 sample temperature: %.2f relative humidity: %.1f%%\r\n", temperature, humidity); |
| | | } |
| | | HAL_Delay(1000); |
| | | OLED_Clear(); |
| | | OLED_ShowString(pos_x, pos_y, "ISKBoard", OLED_FONT16); |
| | | HAL_Delay(1000); |
| | | |
| | | OLED_Clear(); |
| | | for(int i=0; i<HZK_LEN_LINGYUN; i++) |
| | | OLED_ShowChinese(Hzk_LingYun, pos_x+i*16, pos_y, i); |
| | | HAL_Delay(1000); |
| | | |
| | | OLED_Clear(); |
| | | OLED_DrawBMP(0,0, X_WIDTH,Y_WIDTH/2, bmp_logo); |
| | | HAL_Delay(1000); |
| | | |
| | | /* USER CODE END WHILE */ |
| | | |