Gobierno de un display LCD via I2C
18F4550 - 18F2550 - CCS Compiler
– Ejemplo para un PIC:
El esquema de montaje es el siguiente :
– Ejemplo para un PIC:
El esquema de montaje es el siguiente (pulsa botón derecho “ver imagen” para ampliarla):
/*
#include <16F88.h> //pic a utilizar
#fuses NOWDT,NOPROTECT,PUT,NOLVP,
NOMCLR,INTRC_IO, NODEBUG
#use delay (clock=8000000) //Fosc=8Mhz
#use standard_io(A)
#use standard_io(B)
#use i2c(Master,Fast=100000, sda=PIN_B1,
scl=PIN_B4,force_sw)
#include <i2c_Flex_LCD.h> //libreria manejo lcd
/**/
#include <18f4550.h>
#device ICD = TRUE
#device ADC=10
#use delay (clock=48000000)
//#use i2c(Master,Fast=100000,
sda=PIN_D6, scl=PIN_D7,force_sw)
#use i2c(Master,Fast=100000,
sda=PIN_B0, scl=PIN_B1,force_sw)
#include <i2c_Flex_LCD.h>
#fuses
HSPLL,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,USBDIV,PLL5,CPUDIV1,DEBUG // configura fuses
/**/
void main()
{
//Char="Test";
int16 test=1;
lcd_init();
i2c_lcd_backlight_On();
while(TRUE)
{
test=test+1;
lcd_clear(); //Clear Display
printf(LCD_PUTC,"\1%s","LCD Line 1"); //Print on LCD line 1
delay_ms(2000);
printf(LCD_PUTC,"\2%s","LCD Line 2"); //Print on LCD line 2
delay_ms(2000);
printf(LCD_PUTC,"\f\1%s","LCD Line 1");
//Clear display, print
again on Line 1
delay_ms(2000);
printf(LCD_PUTC,"\f\2%s","LCD Line 2");
//Clear display, print
again on Line 2
delay_ms(2000);
i2c_lcd_backlight_Off();
printf(LCD_PUTC,"\f\1%s\2%s","LCD BackLight","
OFF "); //Clear display, print
again on Line 1
delay_ms(2000);
i2c_lcd_backlight_On();
printf(LCD_PUTC,"\f\1%s\2%s","LCD
BackLight"," ON "); //Clear display, print again
on Line 2
delay_ms(2000);
//Al estilo tradicional:
lcd_clear();
lcd_gotoxy(1,1);
printf(LCD_PUTC,"Linea 1 - Tradicional");
delay_ms(2000);
lcd_gotoxy(1,2);
printf(LCD_PUTC,"Linea 2 - Tradicional");
delay_ms(2000);
}
}
|
El ejemplo está programado con el compilador CCS, se hace necesaria una librería para gobernar el modulito, esta es la llamada “i2c_Flex_LCD.h” creada por el autor: Hugo Silva. se puede descargar junto con el ejemplo de aquí: lcd_i2c.
La librería nos da funciones para escribir en la pantalla LCD de varias formas, una es del modo tradicional con goto_xy:
lcd_gotoxy(1,1);
printf(LCD_PUTC,”Linea 1″);
printf(LCD_PUTC,”Linea 1″);
primero nos posicionamos en la coordenada deseada, y luego se escribe a partir de ahí. La otra forma es especificando la línea dentro de las comillas “1”:
printf(LCD_PUTC,”1%s”,”LCD Line 1″);
También dispone de otras funciones para encender y apagar la luz del display de fondo:
i2c_lcd_backlight_On();
i2c_lcd_backlight_Off();
así como para borrar el display:
lcd_clear();
-Dirección del bus I2C:
Una cosa muy importante a tener en cuenta es la dirección del bus I2C, en este modulo, se pueden usar ocho diferentes según esta tablita:
Las direcciones en caso del PIC son las siguientes:
Jp3 Jp2 Jp1
A2 A1 A0 Hex
L L L 0x40
L L H 0x42
L H L 0x44
L H H 0x46
H L L 0x48
H L H 0x4A
H H L 0x4C
H H H 0x4E
A2 A1 A0 Hex
L L L 0x40
L L H 0x42
L H L 0x44
L H H 0x46
H L L 0x48
H L H 0x4A
H H L 0x4C
H H H 0x4E
Y se especifican en la librería en la línea:
#define LCD_ADDR 0x4E //I2C slave address for LCD module
Descargas: lcd_i2c.
La librería ya no está disponible.
ResponderEliminarHay posibilidad de subir la librería a un nuevo servidor.. les agradezco.
ResponderEliminarLink caído
ResponderEliminarno esta la libreria seria bueno que alguien la suba porfavor
ResponderEliminarbuen dia me podra proporcionar la libreria
ResponderEliminarhttps://www.ccsinfo.com/forum/viewtopic.php?t=54063
ResponderEliminaralguien tiene las librerias para mplab. estoy buscando el i2c con las librerias de la lcd mil gracias.
ResponderEliminarel circuito lo monté en proteus y en protoboard y no me funcionó, por lo visto la comunicacion 12c esta bien, pero no me muestra nada en la pantalla... alguien me podria decie en donde esta el error por favor
ResponderEliminar