Autor Tema: Libreria para oled i2c  (Leído 2975 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Libreria para oled i2c
« en: 25 de Julio de 2017, 11:32:42 »
Hola alguien sabe si hay una libreria para oled i2c para ccs?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Libreria para oled i2c
« Respuesta #1 en: 25 de Julio de 2017, 14:00:45 »
Que driver usa ? Por ejemplo aca hay una libreria que compartieron en el foro de CCS para el driver SSD1306

Código: C
  1. #include <16F1788.h>
  2. #device ADC=16
  3. #FUSES NOWDT                    
  4. #FUSES NOBROWNOUT              
  5. #FUSES NOLVP                    
  6. #use delay(internal=32000000)
  7. #use i2c(Master,Fast=400000,sda=PIN_C4,scl=PIN_C3,force_sw) // maybe force_hw
  8. #include <string.h>
  9. #define OLED 0x78
  10. #INCLUDE <stdlib.h>
  11.  
  12. const BYTE TEXT[51][5] =
  13. {
  14.  
  15.    0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
  16.    0x00, 0x00, 0x5F, 0x00, 0x00, // !
  17.    0x00, 0x03, 0x00, 0x03, 0x00, // "
  18.    0x14, 0x3E, 0x14, 0x3E, 0x14, // #
  19.    0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
  20.    0x43, 0x33, 0x08, 0x66, 0x61, // %
  21.    0x36, 0x49, 0x55, 0x22, 0x50, //&
  22.    0x00, 0x05, 0x03, 0x00, 0x00, // '
  23.    0x00, 0x1C, 0x22, 0x41, 0x00, // (
  24.    0x00, 0x41, 0x22, 0x1C, 0x00, //)
  25.    0x14, 0x08, 0x3E, 0x08, 0x14, // *
  26.    0x08, 0x08, 0x3E, 0x08, 0x08, // +
  27.    0x00, 0x50, 0x30, 0x00, 0x00, //,
  28.    0x08, 0x08, 0x08, 0x08, 0x08, // -
  29.    0x00, 0x60, 0x60, 0x00, 0x00, // .
  30.    0x20, 0x10, 0x08, 0x04, 0x02, // /
  31.    0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
  32.    0x04, 0x02, 0x7F, 0x00, 0x00, // 1
  33.    0x42, 0x61, 0x51, 0x49, 0x46, // 2
  34.    0x22, 0x41, 0x49, 0x49, 0x36, // 3
  35.    0x18, 0x14, 0x12, 0x7F, 0x10, // 4
  36.    0x27, 0x45, 0x45, 0x45, 0x39, // 5
  37.    0x3E, 0x49, 0x49, 0x49, 0x32, // 6
  38.    0x01, 0x01, 0x71, 0x09, 0x07, // 7
  39.    0x36, 0x49, 0x49, 0x49, 0x36, // 8
  40.    0x26, 0x49, 0x49, 0x49, 0x3E, // 9
  41.    0x00, 0x36, 0x36, 0x00, 0x00, // :
  42.    0x00, 0x56, 0x36, 0x00, 0x00, //;
  43.  
  44.    0x08, 0x14, 0x22, 0x41, 0x00, // <
  45.    0x14, 0x14, 0x14, 0x14, 0x14, // =
  46.    0x00, 0x41, 0x22, 0x14, 0x08, // >
  47.    0x02, 0x01, 0x51, 0x09, 0x06, // ?
  48.    0x3E, 0x41, 0x59, 0x55, 0x5E, // @
  49.    0x7E, 0x09, 0x09, 0x09, 0x7E, // A
  50.    0x7F, 0x49, 0x49, 0x49, 0x36, // B
  51.    0x3E, 0x41, 0x41, 0x41, 0x22, // C
  52.    0x7F, 0x41, 0x41, 0x41, 0x3E, // D
  53.    0x7F, 0x49, 0x49, 0x49, 0x41, // E
  54.    0x7F, 0x09, 0x09, 0x09, 0x01, // F
  55.    0x3E, 0x41, 0x41, 0x49, 0x3A, // G
  56.    0x7F, 0x08, 0x08, 0x08, 0x7F, // H
  57.    0x00, 0x41, 0x7F, 0x41, 0x00, // I
  58.    0x30, 0x40, 0x40, 0x40, 0x3F, // J
  59.    0x7F, 0x08, 0x14, 0x22, 0x41, // K
  60.    0x7F, 0x40, 0x40, 0x40, 0x40, // L
  61.    0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
  62.    0x7F, 0x02, 0x04, 0x08, 0x7F, // N
  63.    0x3E, 0x41, 0x41, 0x41, 0x3E, // O
  64.    0x7F, 0x09, 0x09, 0x09, 0x06, // P
  65.    0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
  66.    0x7F, 0x09, 0x09, 0x09, 0x76
  67. }; // R
  68.  
  69. const BYTE TEXT2[44][5]=
  70. {
  71.    0x26, 0x49, 0x49, 0x49, 0x32, // S
  72.    0x01, 0x01, 0x7F, 0x01, 0x01, // T
  73.    0x3F, 0x40, 0x40, 0x40, 0x3F, // U
  74.    0x1F, 0x20, 0x40, 0x20, 0x1F, // V
  75.    0x7F, 0x20, 0x10, 0x20, 0x7F, // W
  76.    0x41, 0x22, 0x1C, 0x22, 0x41, // X
  77.    0x07, 0x08, 0x70, 0x08, 0x07, // Y
  78.    0x61, 0x51, 0x49, 0x45, 0x43, // Z
  79.    0x00, 0x7F, 0x41, 0x00, 0x00, // [
  80.    0x02, 0x04, 0x08, 0x10, 0x20, // \
  81.    0x00, 0x00, 0x41, 0x7F, 0x00, // ]
  82.    0x04, 0x02, 0x01, 0x02, 0x04, // ^
  83.    0x40, 0x40, 0x40, 0x40, 0x40, // _
  84.    0x00, 0x01, 0x02, 0x04, 0x00, // `
  85.    0x20, 0x54, 0x54, 0x54, 0x78, // a
  86.    0x7F, 0x44, 0x44, 0x44, 0x38, // b
  87.    0x38, 0x44, 0x44, 0x44, 0x44, // c
  88.    0x38, 0x44, 0x44, 0x44, 0x7F, // d
  89.    0x38, 0x54, 0x54, 0x54, 0x18, // e
  90.    0x04, 0x04, 0x7E, 0x05, 0x05, // f
  91.    0x08, 0x54, 0x54, 0x54, 0x3C, // g
  92.    0x7F, 0x08, 0x04, 0x04, 0x78, // h
  93.    0x00, 0x44, 0x7D, 0x40, 0x00, // i
  94.    0x20, 0x40, 0x44, 0x3D, 0x00, // j
  95.    0x7F, 0x10, 0x28, 0x44, 0x00, // k
  96.    0x00, 0x41, 0x7F, 0x40, 0x00, // l
  97.    0x7C, 0x04, 0x78, 0x04, 0x78, // m
  98.    0x7C, 0x08, 0x04, 0x04, 0x78, // n
  99.    0x38, 0x44, 0x44, 0x44, 0x38, // o
  100.    0x7C, 0x14, 0x14, 0x14, 0x08, // p
  101.    0x08, 0x14, 0x14, 0x14, 0x7C, // q
  102.    0x00, 0x7C, 0x08, 0x04, 0x04, // r
  103.    0x48, 0x54, 0x54, 0x54, 0x20, // s
  104.    0x04, 0x04, 0x3F, 0x44, 0x44, // t
  105.    0x3C, 0x40, 0x40, 0x20, 0x7C, // u
  106.    0x1C, 0x20, 0x40, 0x20, 0x1C, // v
  107.    0x3C, 0x40, 0x30, 0x40, 0x3C, // w
  108.    0x44, 0x28, 0x10, 0x28, 0x44, // x
  109.    0x0C, 0x50, 0x50, 0x50, 0x3C, // y
  110.    0x44, 0x64, 0x54, 0x4C, 0x44, // z
  111.    0x00, 0x08, 0x36, 0x41, 0x41, //
  112.    {
  113.       0x00, 0x00, 0x7F, 0x00, 0x00, //|
  114.       0x41, 0x41, 0x36, 0x08, 0x00, //
  115.    }
  116.  
  117.    0x02, 0x01, 0x02, 0x04, 0x02
  118. }; // ~
  119.  
  120. const INT LOGOS [1024] =
  121. {
  122.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  123.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  124.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  125.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  126.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  127.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  128.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  129.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  130.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xBE, 0xB6, 0xF6, 0xE6, 0x00, 0x00, 0xFE, 0xFE, 0x80,
  131.    0x80, 0x80, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE, 0x84, 0x86, 0x86, 0xFE, 0xFC, 0x00, 0x00, 0xFC,
  132.    0xFE, 0x96, 0x96, 0x96, 0x9E, 0xDC, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x06, 0x06, 0x00, 0x9C, 0xBE,
  133.    0xB6, 0xF6, 0xE6, 0x00, 0x00, 0xFE, 0xFE, 0x80, 0x80, 0x80, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
  134.    0x84, 0x86, 0x86, 0xFE, 0xFC, 0x00, 0x00, 0xFC, 0xFE, 0x96, 0x96, 0x96, 0x9E, 0xDC, 0x00, 0x00,
  135.    0xFE, 0xFE, 0x0C, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x06, 0x06, 0x00, 0xFE, 0xFE, 0x0C, 0x06, 0x06,
  136.    0x00, 0xEC, 0xF6, 0x96, 0x96, 0xFE, 0xFC, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x06, 0x06, 0xFE, 0xFC,
  137.    0x00, 0x00, 0xC6, 0xE6, 0xB6, 0x9E, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  138.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
  139.    0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
  140.    0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
  141.    0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F,
  142.    0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
  143.    0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
  144.    0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01,
  145.    0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  146.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0xB0, 0xD8, 0xD8, 0xD8, 0xD8, 0x18,
  147.    0x30, 0xF0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x80,
  148.    0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0,
  149.    0x80, 0x00, 0x00, 0xD8, 0xD8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  150.    0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
  151.    0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
  152.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  153.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  154.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x60, 0xCF, 0xDF, 0xD8, 0xCC, 0xDF, 0xDB, 0x18,
  155.    0x1C, 0x0F, 0x07, 0x00, 0x00, 0xDB, 0xFF, 0xB6, 0xB6, 0xB7, 0xF3, 0xE0, 0x00, 0x3F, 0x3F, 0x01,
  156.    0x00, 0x00, 0x3F, 0x3F, 0x01, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1D, 0x3E, 0x32, 0x12, 0x3F,
  157.    0x3F, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00,
  158.    0x1F, 0x3F, 0x30, 0x30, 0x30, 0x19, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x3F, 0x1F, 0x00, 0x00,
  159.    0x3F, 0x3F, 0x01, 0x00, 0x00, 0x3F, 0x3F, 0x01, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00,
  160.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  161.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  162.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  163.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  164.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  165.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  166.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  167.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  168.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  169.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  170.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  171.    0x00, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x00, 0xF0, 0xF0, 0x60, 0x30, 0x30, 0x00,
  172.    0xF6, 0xF6, 0x00, 0x00, 0xE0, 0xF0, 0xB0, 0xB0, 0xB0, 0xF0, 0xE0, 0x00, 0x00, 0xE0, 0xF0, 0xB0,
  173.    0xB0, 0x30, 0x00, 0x30, 0xFC, 0xFC, 0x30, 0x30, 0x00, 0x00, 0xE0, 0xF0, 0xB0, 0xB0, 0xB0, 0xF0,
  174.    0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xF6, 0x00, 0x30, 0xFC,
  175.    0xFC, 0x30, 0x30, 0x00, 0x00, 0x60, 0xB0, 0xB0, 0xB0, 0xF0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0x00,
  176.    0x30, 0xF0, 0xC0, 0x00, 0x00, 0xC0, 0xF0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  177.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  178.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  179.    0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00,
  180.    0x0F, 0x0F, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x00, 0x00, 0x0C, 0x0D, 0x0D,
  181.    0x0F, 0x07, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C,
  182.    0x06, 0x00, 0x20, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x07,
  183.    0x0F, 0x0C, 0x0C, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x04, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x00,
  184.    0x00, 0x01, 0x67, 0x7E, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  185.    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  186. };
  187.  
  188. int DISPLAY [1024];
  189.  
  190. void OLED_command(INT ind, int com)
  191. {
  192.    i2c_start ();
  193.    i2c_write (ind);
  194.    i2c_write (0x00);
  195.    i2c_write (com);
  196.    i2c_stop ();
  197. }
  198.  
  199. void OLED_write(INT ind)
  200. {
  201.    LONG i;
  202.    OLED_command (ind, 0x21) ;
  203.    OLED_command (ind, 0x00);
  204.    OLED_command (ind, 127);
  205.    OLED_command (ind, 0x22) ;
  206.    OLED_command (ind, 0x00);
  207.    OLED_command (ind, 7);
  208.    i2c_start ();
  209.    i2c_write (ind) ;
  210.    i2c_write (0x40) ;
  211.    FOR (i = 0; i < 1024; i++)
  212.    {
  213.      
  214.       i2c_write (DISPLAY[i]) ;
  215.    }
  216.  
  217.    i2c_stop ();
  218. }
  219.  
  220. void  OLED_init(INT add)
  221. {
  222.    OLED_command (add, 0xae) ;
  223.    OLED_command (add, 0xa8);
  224.    OLED_command (add, 0x3f);
  225.    OLED_command (add, 0xd3);
  226.    OLED_command (add, 0x00);
  227.    OLED_command (add, 0x40);
  228.    
  229.    OLED_command (add, 0xa0);
  230.    OLED_command (add, 0xa1);
  231.    OLED_command (add, 0xc0);
  232.    
  233.    OLED_command (add, 0xc8);
  234.    OLED_command (add, 0xda);
  235.    OLED_command (add, 0x12);
  236.    OLED_command (add, 0x81);
  237.    OLED_command (add, 0xfF);
  238.    OLED_command (add, 0xa4);
  239.    OLED_command (add, 0xa6) ;
  240.    OLED_command (add, 0xd5);
  241.    OLED_command (add, 0x80);
  242.    OLED_command (add, 0x8d);
  243.    OLED_command (add, 0x14) ;
  244.    OLED_command (add, 0xAF) ;
  245.    OLED_command (add, 0x20) ;
  246.    OLED_command (add, 0x00) ;
  247. }
  248.  
  249. void OLED_pixel(LONG x,long y)
  250. {
  251.    LONG nt;
  252.    LONG pagina;
  253.    LONG bit;
  254.    pagina = y /8;
  255.    bit= y-(pagina*8);
  256.    nt= DISPLAY[pagina*128+x];
  257.    nt |= 1 << bit;
  258.    DISPLAY[pagina*128+x] = nt;
  259. }
  260.  
  261.    VOID OLED_line (int x1, int y1, int x2, int y2)
  262. {
  263.       SIGNED int x, y, addx, addy, dx, dy;
  264.       SIGNED long P;
  265.       INT i;
  266.       dx = abs ( (SIGNED int) (x2 - x1));
  267.       dy = abs ( (SIGNED int) (y2 - y1));
  268.       x = x1;
  269.       y = y1;
  270.  
  271.       IF (x1 > x2)
  272.          addx = -1;
  273.  
  274.       ELSE
  275.       addx = 1;
  276.  
  277.       IF (y1 > y2)
  278.          addy = -1;
  279.  
  280.       ELSE
  281.       addy = 1;
  282.  
  283.       IF (dx >= dy)
  284.       {
  285.          P = 2 * dy - dx;
  286.          FOR (i = 0; i< = dx;  ++i)
  287.          {
  288.             OLED_pixel (x, y);
  289.  
  290.             IF (P < 0)
  291.             {
  292.                P += 2*dy;
  293.                x += addx;
  294.             }
  295.  
  296.             ELSE
  297.             {
  298.                P += 2*dy - 2 * dx;
  299.                x += addx;
  300.                y += addy;
  301.             }
  302.          }
  303.       }
  304.  
  305.       ELSE
  306.       {
  307.          P = 2 * dx - dy;
  308.          FOR (i = 0; i< = dy;  ++i)
  309.          {
  310.             OLED_pixel (x, y);
  311.  
  312.             IF (P < 0)
  313.             {
  314.                P += 2*dx;
  315.                y += addy;
  316.             }
  317.  
  318.             ELSE
  319.             {
  320.                P += 2*dx - 2 * dy;
  321.                x += addx;
  322.                y += addy;
  323.             }
  324.          }
  325.       }
  326. }
  327.  
  328.    VOID OLED_circle(int x, int y, int radius, int1 riemp)
  329.    {
  330.       SIGNED int a, b, P;
  331.       a = 0;
  332.       b = radius;
  333.       P = 1 - radius;
  334.  
  335.       DO
  336.       {
  337.          IF (riemp)
  338.          {
  339.             OLED_line (x - a, y+b, x + a, y + b);
  340.             OLED_line (x - a, y-b, x + a, y - b);
  341.             OLED_line (x - b, y+a, x + b, y + a);
  342.             OLED_line (x - b, y-a, x + b, y - a);
  343.          }
  344.  
  345.          ELSE
  346.          {
  347.             OLED_pixel (a + x, b+y);
  348.             OLED_pixel (b + x, a+y);
  349.             OLED_pixel (x - a, b+y);
  350.             OLED_pixel (x - b, a+y);
  351.             OLED_pixel (b + x, y-a);
  352.             OLED_pixel (a + x, y-b);
  353.             OLED_pixel (x - a, y-b);
  354.             OLED_pixel (x - b, y-a);
  355.          }
  356.  
  357.          IF (P < 0)
  358.             P += 3 + 2 * a++;
  359.  
  360.          ELSE
  361.          P += 5 + 2 * (a++ - b--);
  362.       } WHILE (a <= b);
  363.    }
  364.  
  365.    VOID OLED_text(int x, int y, char* textptr, int size)
  366.    {
  367.       INT i, j, k, l, m;     // Loop counters
  368.       BYTE pixelData[5];     // Stores character data
  369.       FOR (i = 0; textptr[i] != '\0'; ++i, ++x) // Loop through the passed string
  370.       {
  371.          IF (textptr[i] < 'S') // Checks if the letter is in the first text array
  372.             memcpy (pixelData, TEXT[textptr[i] - ' '], 5) ;
  373.  
  374.          else IF (textptr[i] <= '~') // Check if the letter is in the second array
  375.             memcpy (pixelData, TEXT2[textptr[i] - 'S'], 5) ;
  376.  
  377.          ELSE
  378.          memcpy (pixelData, TEXT[0], 5); // DEFAULT to space
  379.          IF (x + 5 * size >= 128)  // Performs character wrapping
  380.          {
  381.             x = 0;       // Set x at far left position
  382.             y += 7*size + 1;    // Set y at next position down
  383.          }
  384.  
  385.          FOR (j = 0; j<5; ++j, x += size)  // Loop through character byte data
  386.          {
  387.             FOR (k = 0; k<7 * size; ++k)  // Loop through the vertical pixels
  388.             {
  389.                IF (bit_test (pixelData[j], k)) // Check if the pixel should be set
  390.                {
  391.                   FOR (l = 0; l<size; ++l) // The next two loops change the
  392.                   {
  393.                      // character's size
  394.                      FOR (m = 0; m<size; ++m)
  395.                      {
  396.                         OLED_pixel (x + m, y+k * size + l); // Draws the pixel
  397.                      }
  398.                   }
  399.                }
  400.             }
  401.          }
  402.       }
  403.    }
  404.  
  405.    VOID OLED_rect(int x1, int y1, int x2, int y2, int riemp)
  406.    {
  407.       IF (riemp)
  408.       {
  409.          INT y, ymax;      // Find the y min and max
  410.          IF (y1 < y2)
  411.          {
  412.             y = y1;
  413.             ymax = y2;
  414.          }
  415.  
  416.          ELSE
  417.          {
  418.             y = y2;
  419.             ymax = y1;
  420.          }
  421.  
  422.          FOR (; y <= ymax; ++y)     // Draw lines to fill the rectangle
  423.             OLED_line (x1, y, x2, y);
  424.       }
  425.  
  426.       ELSE
  427.       {
  428.          OLED_line (x1, y1, x2, y1); // Draw the 4 sides
  429.          OLED_line (x1, y2, x2, y2);
  430.          OLED_line (x1, y1, x1, y2);
  431.          OLED_line (x2, y1, x2, y2);
  432.       }
  433.    }
  434.  
  435.    VOID logo()
  436.    {
  437.       LONG x;
  438.       INT c;
  439.       FOR (x = 0; x < 1024; x++)
  440.       {
  441.          c= LOGOS[x];
  442.          DISPLAY[x] = c;
  443.       }
  444.    }
  445.  
  446.    VOID OLED_clear()
  447.    {
  448.       LONG x;
  449.       FOR (x = 0; x < 1024; x++)
  450.       {
  451.          DISPLAY[x] = 0x00;
  452.       }
  453.    }
  454.  
  455.    VOID main()
  456.    {
  457.       CHAR txt[100];
  458.       OLED_init(OLED);
  459.  
  460.       WHILE (1)
  461.       {
  462.          
  463.          OLED_clear();
  464.          logo();
  465.          OLED_write(OLED);
  466.          delay_ms(3000);
  467.          OLED_clear();
  468.          sprintf(txt,"superfranz!");
  469.          OLED_text(0,0,txt,2);
  470.          OLED_circle(15,40,15,0);
  471.          OLED_rect(35,25,65,55,1);
  472.          OLED_circle(80,40,15,1);
  473.          OLED_rect(90,25,120,55,0);
  474.          OLED_write(OLED);
  475.          delay_ms(3000);
  476.       }
  477.    }

Solo decir que si es otro driver, lo maximo a cambiar en ese codigo seria las funciones, mas que nada por los registros.

OLED_init
OLED_write
OLED_command

Primero asegurate bien de que driver tiene el OLED

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:Libreria para oled i2c
« Respuesta #2 en: 25 de Julio de 2017, 16:21:50 »
Hola, gracias por responder, trate de compilarla pero me da error, yo necesito una libreria que pueda mostrar numeros y que entre en un pic 16f88, el driver es SSD1306

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Libreria para oled i2c
« Respuesta #3 en: 25 de Julio de 2017, 16:32:40 »
que error te da ?