Logo

Escritura en un display OLED mediante I2C de un valor leído desde la EEPROM del PIC18F4550

Escritura en un display OLED mediante I2C de un valor leído desde la EEPROM del PIC18F4550

Descripción: Programación del PIC18F4550 para lectura de un hola mundo y valor leído de memoria EEPROM, con uso del modo I2C del PIC. Muestra texto 'Hola Mundo' en el displey OLED, como tambien el número leído de la memoria no volatil EEPROM del PIC.

Especificaciones: En datasheet del PIC se indica se utilizan dos pines para la transferencia de datos con I2C: Serial clock (SCL) en pin RB1 y Serial data (SDA) en pin RB0. La EEPROM de datos es una matriz de memoria no volátil, separada de la RAM de datos y de la memoria de programa, que se utiliza para el almacenamiento a largo plazo de datos de programa. Se utilizan cuatro registros SFRs para leer y escribir en la EEPROM de datos, así como en la memoria de programa. Estos son: • EECON1 • EECON2 • EEDATA • EEADR

Funcionamiento:
Función MostrarDatosOLED para mostrar los datos en OLED:
void MostrarDatosOLED(void) {
//Declaración del buffer(aquí es lo importante)
char buffer[40];
SSD1306_Clear(); // Borra framebuffer
// Líneas para escritura en OLED
sprintf(buffer, "Saludo: %s", dato); //escritura del hola mundo
SSD1306_DrawString(0, 0, buffer);
sprintf(buffer, "Dato EEPROM: %u", valor); //escritura del valor del EEPROM
SSD1306_DrawString(0, 2, buffer);
SSD1306_UpdateScreen(); // Enviar framebuffer al display
}
Función principal:
void main(void) {
OSCCONbits.IRCF = 0b110; // 4 MHz
OSCCONbits.SCS = 0b10; // Oscilador interno
__delay_ms(50); // estabiliza reloj
I2C_Init(); // Inicializa I2C (implementa en i2c.c)
SSD1306_Init(); // Inicializa OLED
SSD1306_Clear(); // Borra framebuffer
// Escribir en EEPROM
escribirEEPROM(0x10, 250);
// Leer desde EEPROM
valor = leerEEPROM(0x10);
MostrarDatosOLED();
while (1) {
}
}