Display OLED I2C «mostrar imágenes», Pic C Compiler

En esta sección aprenderás a programar un Display OLED para mostrar imágenes. El objetivo es mostrar cualquier imagen en la pantalla oled convirtiendo la imagen en un mapa de bits con un programa sencillo.

Circuito de conexión

Procedimiento

Inicialmente se colocan los parámetros I2C para establecer el PIC como maestro, los pines de conexión y el identificador (STREAM) de la pantalla oled.

#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1,force_sw, stream=OLED_stream)//parametros I2C

Se define la pantalla oled para que la librería muestre los datos correctamente.

#define SH1106_128_64 //DEFINE EL MODELO DE LA PANTALLA OLED
//#define SSD1306_128_64
//#define SSD1306_128_32

Se coloca la librería para la pantalla oled.

#include "OLED_I2C.c"//Librería oled I2C

La librería se coloca en la carpeta del proyecto que se este realizando o en la carpeta de los drivers del PIC C Compiler.

Para convertir la imagen en mapa de bits se utiliza el siguiente programa.

Se crea una variable para el mapa de bits de la imagen y se coloca en la memoria rom del microcontrolador.


rom char imagen [] = {};

Se coloca la función para inicializar la pantalla.

OLED_Begin();

Se limpia la pantalla inicialmente.

OLED_ClearDisplay();

Se pueden invertir los colores de la pantalla.

OLED_InvertDisplay(1);
La función para mostrar el mapa de bits de la imagen.
OLED_ROMBMP(0,0,imagen,128,64);

Finalmente se coloca la función para mostrar la información en pantalla.

OLED_Display();

Código completo


#FUSES NOMCLR

#use i2c(Master,Fast, sda=PIN_B0, scl=PIN_B1,force_sw, stream=OLED_stream)//parametros I2C

#define SH1106_128_64 //DEFINE EL MODELO DE LA PANTALLA OLED
//#define SSD1306_128_64
//#define SSD1306_128_32

#include "OLED_I2C.c" //libreria oled I2C


rom char Imagen [] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x07, 0x07, 0x87, 0x87, 0xCF, 0xCF, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x03, 0x03,
0x0F, 0x1F, 0x1F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xD1, 0xA3, 0x19, 0x3E, 0x0C, 0x83, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x40,
0x60, 0xE0, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x03, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8,
0xA0, 0x40, 0x00, 0x00, 0x00, 0x13, 0x0B, 0x0B, 0x0F, 0x1F, 0x0E, 0x06, 0x00, 0x00, 0x3E, 0xFF,
0xFF, 0xE3, 0x07, 0x07, 0x07, 0x07, 0x07, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F,
0x1F, 0x3F, 0x7F, 0x7F, 0xFE, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x81, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x0E, 0x06, 0x06, 0x0E, 0x0E, 0xC4,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFE, 0xFC, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x30, 0x0C, 0x46, 0x00, 0x00, 0x00, 0x26, 0x27,
0xAF, 0xFF, 0xFF, 0xFE, 0xF8, 0x30, 0x02, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x0F, 0x1F, 0x3F, 0x5F, 0xBF, 0x5F, 0x26, 0x0C, 0x18,
0x20, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0C, 0x1E, 0x2E, 0x04, 0x00, 0x13, 0x13, 0x37,
0x27, 0x6F, 0x6F, 0xCF, 0xFF, 0xFE, 0x7C, 0x0E, 0x00, 0xE0, 0xC8, 0x80, 0xC0, 0x00, 0x01, 0x01,
0x83, 0x03, 0x07, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x20,
0x20, 0xF0, 0xF0, 0xF1, 0xFD, 0xFE, 0x7E, 0xBF, 0xFF, 0xFB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xE1, 0x07, 0xFC, 0xC0, 0x80,
0x80, 0x82, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x1E, 0x7E,
0xFA, 0xFA, 0xFB, 0xFF, 0xFF, 0xF7, 0xFE, 0x6E, 0xEF, 0xFF, 0xCF, 0x9F, 0xA8, 0x80, 0x9C, 0xDF,
0xBF, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x01, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xCE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF8,
0xFB, 0x7B, 0x7B, 0xFF, 0xFF, 0x6E, 0xFF, 0x1F, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x80, 0x40, 0x17, 0xFE, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x22, 0x00, 0x00, 0x41,
0x41, 0x71, 0xFF, 0xE7, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x03, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF9, 0xF7, 0xE7, 0xBF, 0x7F, 0xF7,
0xC7, 0x87, 0x83, 0x81, 0x03, 0x01, 0x00, 0x00, 0x40, 0x40, 0x00, 0x80, 0x81, 0x83, 0xCF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xF1, 0xC0, 0x0F, 0x86, 0xF0, 0xFF, 0xFF, 0xF7, 0x7F, 0xFF,
0xFF, 0x1F, 0x06, 0xE3, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xF8, 0xFE, 0x0F, 0xFB, 0x0F, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF7, 0xE0, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x0F, 0x1C, 0x03, 0xFF, 0xFF, 0xF9, 0xFA, 0xB0, 0x60, 0x00, 0x28, 0xDD, 0x00, 0x08, 0xB7, 0x5E,
0x80, 0x10, 0x0C, 0x38, 0x46, 0x18, 0x03, 0x0E, 0x3C, 0x70, 0xE0, 0xD0, 0xA0, 0x00, 0x00, 0x00,
0x60, 0xE0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0xFB, 0xEF, 0xFF, 0xFF, 0xFF, 0xFC, 0xEC,
0xE1, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
0x80, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0x1F, 0x07, 0x81, 0x81, 0x81, 0x68, 0x7C, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F
};


void main()
{

   OLED_Begin();
   OLED_ClearDisplay();   
   
   OLED_InvertDisplay(1);
   
   while(TRUE)
   {
      
      OLED_ROMBMP(0,0,imagen,128,64);
      OLED_Display();

   }

}
Scroll al inicio