打印
[PIC32/SAM]

OLED12864 I2C显式示例

[复制链接]
1273|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wiba|  楼主 | 2019-7-25 13:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇主要讲述如何使用PIC32MZ来点亮OLED12864。
OLED12864可以控制一个一个像素点,所以需要自建字库,有专门生成的软件,字库为字母字符,放到最后面。注意不同12864排列或者共极不同,则需要自行取模。



使用特权

评论回复
沙发
wiba|  楼主 | 2019-7-25 13:33 | 只看该作者
本片需要调用I2C通信中的基础代码,需要delay和i2c-Hardware,以下不再贴这部分代码。

第一部分是字模文件
codetab.h
#ifndef _CODETAB_H
#define _CODETAB_H


/***************************16*16 Chinese, common gnd - column style - reverse output*********/
extern uint8_t F16x16[];

/************************************6*8************************************/
extern const uint8_t F6x8[][6];
/****************************************8*16************************************/
extern const uint8_t F8X16[];

extern uint8_t BMPimage[];

#endif

使用特权

评论回复
板凳
wiba|  楼主 | 2019-7-25 13:33 | 只看该作者
codetab.c
#include "codetab.h"

/***************************16*16 Chinese, common gnd - column style - reverse output?********/
uint8_t F16x16[] =
{
        0x00,0x02,0x02,0xFA,0xFA,0xAA,0xAA,0xFF,0xFF,0xAA,0xAA,0xFA,0xFA,0x02,0x02,0x00,
        0x00,0x42,0x72,0x72,0x3A,0x7A,0x42,0x4B,0x5B,0x52,0x62,0x62,0x13,0x77,0x66,0x00,/*hui,0*/

        0x20,0x3C,0x1C,0xFF,0xFF,0xB0,0xB4,0x24,0x24,0x3F,0x3F,0xE4,0xE4,0x24,0x24,0x20,
        0x02,0x02,0x03,0xFF,0xFF,0x00,0x01,0x05,0x1D,0x59,0xC1,0xFF,0x7F,0x01,0x01,0x01,/*te,1*/

        0x00,0x00,0x00,0xF8,0xF8,0x48,0x4C,0x4F,0x4B,0x4A,0x48,0x48,0xF8,0xF8,0x00,0x00,
        0x00,0x00,0x00,0xFF,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0xFF,0x00,0x00,/*zi,2*/

        0x20,0x24,0x24,0xE4,0xE4,0x24,0x24,0x24,0x30,0x10,0xFF,0xFF,0x10,0xF0,0xF0,0x00,
        0x08,0x1C,0x1F,0x0B,0x0C,0x0D,0x4F,0x6E,0x34,0x1C,0x0F,0x23,0x60,0x7F,0x3F,0x00,/*dong,3*/

        0x80,0xC0,0x60,0xF8,0xFF,0x07,0x02,0x00,0xFF,0xFF,0xE0,0x70,0x3C,0x1C,0x08,0x00,
        0x00,0x00,0x00,0x7F,0x7F,0x04,0x06,0x03,0x3F,0x7F,0x40,0x40,0x40,0x78,0x78,0x00,/*hua,4*/
};

使用特权

评论回复
地板
wiba|  楼主 | 2019-7-25 13:34 | 只看该作者
/************************************6*8的点阵************************************/
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
};

使用特权

评论回复
5
wiba|  楼主 | 2019-7-25 13:34 | 只看该作者
/****************************************8*16************************************/
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
};

使用特权

评论回复
6
wiba|  楼主 | 2019-7-25 13:34 | 只看该作者
oled12864.h
#ifndef _OLED12864_H
#define _OLED12864_H


#include "i2c-hardware.h"

#include "delay.h"

#include "codetab.h"

#define writeSlaveAddr 0x78  //write addr


bool OLED12864_Initial(void);

void OLED12864_Write_Commmand(uint8_t com);

void OLED12864_Write_data(uint8_t data);

void OLED12864_SetPos(unsigned char x, unsigned char y); //???????

void OLED12864_Fill(unsigned char fill_Data); //????

void OLED12864_CLS(void); //??

void OLED12864_ON(void);

void OLED12864_OFF(void);

void OLED12864_ShowStr(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize);

void OLED12864_Printf(const uint8_t *fmt,...);

void OLED12864_ShowCN(unsigned char x, unsigned char y, unsigned char N);

void OLED12864_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);

#endif

使用特权

评论回复
7
wiba|  楼主 | 2019-7-25 13:34 | 只看该作者
oled12864.c
注意这里使用printf的重定向,可以打印数字,并且支持自动行增加打印
#include "oled12864.h"


void delta_oled12864(uint8_t x)
{
        delay_ms(x);
}

使用特权

评论回复
8
wiba|  楼主 | 2019-7-25 13:35 | 只看该作者
//write command
void OLED12864_Write_Commmand(uint8_t com)
{       
    uint8_t tmp[] = {0x00, com};  //command register addr and command
        IIC_WriteBytes(writeSlaveAddr,tmp,2);
    //delta_oled12864(1);
}

使用特权

评论回复
9
wiba|  楼主 | 2019-7-25 13:36 | 只看该作者
//write data
void OLED12864_Write_data(uint8_t data)       
{
    uint8_t tmp[] = {0x40,data}; //data register addr and data
    IIC_WriteBytes(writeSlaveAddr,tmp ,2);
    //delta_oled12864(1);
}

使用特权

评论回复
10
wiba|  楼主 | 2019-7-25 13:36 | 只看该作者
bool OLED12864_Initial(void)
{
    delay_ms(300); // very important delay
   
    OLED12864_Write_Commmand(0xAE); //display off
        OLED12864_Write_Commmand(0x20);        //Set Memory Addressing Mode       
        OLED12864_Write_Commmand(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
        OLED12864_Write_Commmand(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7
        OLED12864_Write_Commmand(0xc8);        //Set COM Output Scan Direction
        OLED12864_Write_Commmand(0x00); //---set low column address
        OLED12864_Write_Commmand(0x10); //---set high column address
        OLED12864_Write_Commmand(0x40); //--set start line address
        OLED12864_Write_Commmand(0x81); //--set contrast control register
        OLED12864_Write_Commmand(0xff); //???? 0x00~0xff
        OLED12864_Write_Commmand(0xa1); //--set segment re-map 0 to 127
        OLED12864_Write_Commmand(0xa6); //--set normal display
        OLED12864_Write_Commmand(0xa8); //--set multiplex ratio(1 to 64)
        OLED12864_Write_Commmand(0x3F); //
        OLED12864_Write_Commmand(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
        OLED12864_Write_Commmand(0xd3); //-set display offset
        OLED12864_Write_Commmand(0x00); //-not offset
        OLED12864_Write_Commmand(0xd5); //--set display clock divide ratio/oscillator frequency
        OLED12864_Write_Commmand(0xf0); //--set divide ratio
        OLED12864_Write_Commmand(0xd9); //--set pre-charge period
        OLED12864_Write_Commmand(0x22); //
        OLED12864_Write_Commmand(0xda); //--set com pins hardware configuration
        OLED12864_Write_Commmand(0x12);
        OLED12864_Write_Commmand(0xdb); //--set vcomh
        OLED12864_Write_Commmand(0x20); //0x20,0.77xVcc
        OLED12864_Write_Commmand(0x8d); //--set DC-DC enable
        OLED12864_Write_Commmand(0x14); //
        OLED12864_Write_Commmand(0xaf); //--turn on oled panel
   
    OLED12864_CLS();
    return true;
}

使用特权

评论回复
11
wiba|  楼主 | 2019-7-25 13:37 | 只看该作者
//Set the cursor position of start
void OLED12864_SetPos(unsigned char x, unsigned char y)
{
        OLED12864_Write_Commmand(0xb0+y);
        OLED12864_Write_Commmand(((x&0xf0)>>4)|0x10);
        OLED12864_Write_Commmand((x&0x0f)|0x01);
}

使用特权

评论回复
12
wiba|  楼主 | 2019-7-25 13:37 | 只看该作者
//Fill screen wit data
//0x00 is black
//0xff is blue
void OLED12864_Fill(unsigned char fill_Data)
{
        unsigned char m,n;
        for(m=0;m<8;m++)
        {
                OLED12864_Write_Commmand(0xb0+m);                //page0-page1
                OLED12864_Write_Commmand(0x00);                //low column start address
                OLED12864_Write_Commmand(0x10);                //high column start address
                for(n=0;n<128;n++)
        {
            OLED12864_Write_data(fill_Data);
        }
        }
}

使用特权

评论回复
13
wiba|  楼主 | 2019-7-25 13:38 | 只看该作者
void OLED12864_CLS_LINE(uint8_t rowIndex)
{
    uint8_t n=0;
    OLED12864_Write_Commmand(0xb0+rowIndex);                //page0-page1
    OLED12864_Write_Commmand(0x00);                //low column start address
    OLED12864_Write_Commmand(0x10);                //high column start address
    for(n=0;n<128;n++)
    {
        OLED12864_Write_data(0x00);
    }
}

使用特权

评论回复
14
wiba|  楼主 | 2019-7-25 13:38 | 只看该作者
//clear screen( fill screen with black)
void OLED12864_CLS(void)
{
        OLED12864_Fill(0x00);
}

使用特权

评论回复
15
wiba|  楼主 | 2019-7-25 13:38 | 只看该作者
//--------------------------------------------------------------
// wake up screen from hibernation
//--------------------------------------------------------------
void OLED12864_ON(void)
{
        OLED12864_Write_Commmand(0X8D);  //set charge
        OLED12864_Write_Commmand(0X14);  //open charge
        OLED12864_Write_Commmand(0XAF);  //OLED wake up
}

使用特权

评论回复
16
wiba|  楼主 | 2019-7-25 13:39 | 只看该作者
//--------------------------------------------------------------
// Prototype      : void OLED12864_OFF(void)
// Calls          :
// Parameters     : none
// Description    : ?OLED?? -- ?????,OLED????10uA
//--------------------------------------------------------------
void OLED12864_OFF(void)
{
        OLED12864_Write_Commmand(0X8D);  //set charge
        OLED12864_Write_Commmand(0X10);  //close charge
        OLED12864_Write_Commmand(0XAE);  //OLED hibernate
}

使用特权

评论回复
17
wiba|  楼主 | 2019-7-25 13:39 | 只看该作者
//--------------------------------------------------------------
// show string
// x,y -- start position(x:0~127,column; y:0~7,row);
// ch[] -- the string to show;
// TextSize -- (1:6*8 ; 2:8*16)
//OLED12864_ShowStr(0,3,"I2C Test",1);// 6*8
//OLED12864_ShowStr(0,4,"Hello Delta",2) //8*16
//--------------------------------------------------------------
void OLED12864_ShowStr(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize)
{
        unsigned char c = 0,i = 0,j = 0;
        switch(TextSize)
        {
                case 1:
                {
                        while(ch[j] != '\0' && ch[j] !='\n')
                        {
                                c = ch[j] - 32;
                                if(x > 126)
                                {
                                        x = 0;
                                        y++;
                                }
                                OLED12864_SetPos(x,y);
                                for(i=0;i<6;i++)
                                        OLED12864_Write_data(F6x8[c][i]);
                                x += 6;
                                j++;
                        }
                }break;
                case 2:
                {
                        while(ch[j] != '\0'  && ch[j] !='\n')
                        {
                                c = ch[j] - 32;
                                if(x > 120)
                                {
                                        x = 0;
                                        y++;
                                }
                                OLED12864_SetPos(x,y);
                                for(i=0;i<8;i++)
                                        OLED12864_Write_data(F8X16[c*16+i]);
                                OLED12864_SetPos(x,y+1);
                                for(i=0;i<8;i++)
                                        OLED12864_Write_data(F8X16[c*16+i+8]);
                                x += 8;
                                j++;
                        }
                }break;
        }
}

使用特权

评论回复
18
wiba|  楼主 | 2019-7-25 13:39 | 只看该作者
uint8_t rowNum = 0;
void OLED12864_Printf(const uint8_t *fmt,...)
{
    va_list ap;  
    char string[1024];  
      
    va_start(ap,fmt);  
    vsprintf(string,fmt,ap);
   
   
    if(rowNum>7)
        rowNum=0;
   
   
    OLED12864_CLS_LINE(rowNum);
    OLED12864_ShowStr(0,rowNum,string,1);
   
    uint8_t nextRow = rowNum + 1;
    nextRow=nextRow>7?0:nextRow;
   
    OLED12864_CLS_LINE(nextRow);
    OLED12864_ShowStr(0,nextRow,"  --- next ---",1);
   
            
    rowNum++;
    va_end(ap);
}

使用特权

评论回复
19
wiba|  楼主 | 2019-7-25 13:39 | 只看该作者
//--------------------------------------------------------------
// x,y -- start position(x:0~127,column; y:0~7,row);
// the N is the chinese index of F16x16 in codetab
/*
for(i=0;i<5;i++)
{
    OLED12864_ShowCN(22+i*16,0,i);
}
*/
//--------------------------------------------------------------
void OLED12864_ShowCN(unsigned char x, unsigned char y, unsigned char N)
{
        unsigned char wm=0;
        unsigned int  adder=32*N;
        OLED12864_SetPos(x , y);
        for(wm = 0;wm < 16;wm++)
        {
                OLED12864_Write_data(F16x16[adder]);
                adder += 1;
        }
        OLED12864_SetPos(x,y + 1);
        for(wm = 0;wm < 16;wm++)
        {
                OLED12864_Write_data(F16x16[adder]);
                adder += 1;
        }
}

使用特权

评论回复
20
wiba|  楼主 | 2019-7-25 13:40 | 只看该作者
//--------------------------------------------------------------
// x0,y0 -- start position(x:0~127,column; y:0~7,row);
// x1,y1 -- end position(x:0~127,column; y:0~7,row);
// BMP[] is the binary byte of a bmp file
// OLED12864_DrawBMP(0,0,128,8,(unsigned char *)BMPimage);
//--------------------------------------------------------------
void OLED12864_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
{
        unsigned int j=0;
        unsigned char x,y;

  if(y1%8==0)
                y = y1/8;
  else
                y = y1/8 + 1;
        for(y=y0;y<y1;y++)
        {
                OLED12864_SetPos(x0,y);
        for(x=x0;x<x1;x++)
                {
                        OLED12864_Write_data(BMP[j++]);
                }
        }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

3305

帖子

3

粉丝