Вы находитесь на странице: 1из 20

Control de un mdulo LCD a travs del bus I2C

Requerimientos hardware
Placa basada en microcontrolador pic 16F877x (Plataforma Monibot) Mdulo lcd por I2C modelo LCD03 Cable de comunicacin de 4 hilos (Vcc, Gnd, sda, scl)

La placa entrenadora
Como placa de control utilizaremos la placa base Monibot:

El mdulo LCD03 (I)


Como display lcd i2c utilizaremos el LCD03:

Caractersticas:
Se trata de un mdulo lcd de 4 lneas de 20 caracteres con retro iluminacin controlable por software. Puede ser configurado para trabajar mediante el protocolo serie o i2c. Incluye conector con posibilidad de conectar un teclado matricial de 12 teclas

El mdulo LCD03 (II)


Vista delantera

!Importante! Este puente debe estar abierto para que el lcd trabaje en modo I2C.

Vista trasera

El cable de conexin
Se construye un cable con conectores molex de cuatro hilos segn el esquema siguiente:
CON8 (placa) Gnd Vcc Sda=RC4 Scl=RC3 CON_i2c (lcd) Vcc Sda Scl Gnd

El programa de control (I)


Vamos a utilizar el asistente del CSS para nuestro primer programa

El programa de control (II)


Seleccionamos nuestro modelo de pic, frecuencia del reloj, tipo de oscilador y fuses.

El programa de control (III)


En la pestaa de comunicaciones seleccionamos I2C

El programa de control (IV)


El archivo .h que nos genera es el siguiente

El programa de control (V)


El archivo .c que nos genera es el siguiente

El programa de control (VI)


El cdigo que nosotros tenemos que aadir es el siguiente

El programa de control (VI)


La salida por pantalla es:

El programa de control (VII)


La tabla de comandos que reconoce el lcd es la siguiente:

Funciones I2C del compilador


Las funciones para manejar el bus I2C son:
i2c_start(); Comando de start del bus I2C en modo master. Lo pondremos siempre al principio de nuestro programa. El microcontrolador actuar como maestro y el LCD_I2C actuar siempre como esclavo. i2c_stop(); Comando de stop del bus I2C. Lo usaremos cuando no queramos seguir mandando datos al bus.

Funciones I2C del compilador


i2c_write(); Es la funcin ms importante para este ejemplo. Se usa para seleccionar el dispositivo (mandando al bus su nmero de identificacin. Dato 0xC6 para nuestro lcd. i2c_read();
Usamos esta funcin cuando queremos leer un registro de un dispositivo conectado al bus: Ejemplo:
i2c_start(); i2c_write(0xa1); data1 = i2c_read(); data2 = i2c_read(); i2c_stop(); // Leemos un byte del dispositivo con id=0xA1 // Leemos el siguiente byte

Funciones I2C del compilador


i2c_write(); Es la funcin ms importante para este ejemplo. Se usa para seleccionar el dispositivo (mandando al bus su nmero de identificacin. Dato 0xC6 para nuestro lcd. i2c_read();
Usamos esta funcin cuando queremos leer un registro de un dispositivo conectado al bus: Ejemplo:
i2c_start(); i2c_write(0xa1); data1 = i2c_read(); data2 = i2c_read(); i2c_stop(); // Leemos un byte del dispositivo con id=0xA1 // Leemos el siguiente byte

Creando nuestras propias funciones de control


///////////////////////////////////////////////////// // FICHERO CON LAS FUNCIONES DE CONTROL DEL L.C.D // // para placa MONIBOT basada en pic-16F877A con // // interface I2C conectado en CON8 scl=RC3,sda=RC4 // // Fecha: mayo-2009 Rev: 9.05.11 // // By: Domingo Llorente // // ************************************************// #use i2c(master, sda=PIN_C4, scl=PIN_C3) // Configurar Dispositivo como Master ////////////////////////////// // Declaracin de funciones // ////////////////////////////// void LCDI2C_Envia_comando(unsigned char comandos); void LCDI2C_Init(void); void LCDI2C_Stop(void); void LCDI2C_Envia_dato(unsigned char datoi2c); void LCDI2C_Envia_cadena(char *texto); void LCDI2C_Cursorpos(char fil, char col); void LCDI2C_BorrarL1(void); void LCDI2C_Nibble(unsigned char dato8bits); void LCDI2C_Binbcd(unsigned char dato8bits);

Creando nuestras propias funciones de control


///////////////////////////// // Declaracin de comandos // ///////////////////////////// #define borrar_lcd 0x0C #define cursor_home 0x01 #define cursor_ocultar 0x04 #define cursor_mostrar 0x05 #define cursor_parpadear 0x06 #define cambio_linea 0x0D #define lcd_on 0x13 #define lcd_off 0x14 // // // // // // // // Borrar lcd Situa cursor en pos 1,1 Ocultar cursor Mostrar cursor bajo Mostrar cursor bajo Retorno de carro Iluminacin ON Iluminacin OFF

(*) El cdigo fuente de todas las funciones se encuentra en el archivo: lcd_i2c.c

Segundo programa usando nuestras funciones de control


#include <16F877A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #include <lcd_i2c.c> /// MENSAJES DE TEXTO /// char msg1[]= " D.P.E (2009) "; char msg2[]= " IES LUIS DE LUCENA "; char msg3[]= " GUADALAJARA "; char msg4[]= " ------------- "; void main(){ LCDI2C_Init(); LCDI2C_Envia_cadena(msg1); LCDI2C_Envia_cadena(msg2); LCDI2C_Envia_cadena(msg3); LCDI2C_Envia_cadena(msg4);

// // // //

Escribe Escribe Escribe Escribe

la la la la

cadena cadena cadena cadena

msg1 msg2 msg3 msg4

en en en en

L1 L2 L3 L4

del del del del

lcd lcd lcd lcd

LCDI2C_Envia_dato(':'); LCDI2C_Envia_dato('-'); LCDI2C_Envia_dato(')'); LCDI2C_Stop(); // Comando de "Stop" del bus i2c while(1); // Bucle infinito }

Вам также может понравиться

  • PÁGINAS
    PÁGINAS
    Документ1 страница
    PÁGINAS
    Antony Charles Tejada
    Оценок пока нет
  • NAT, OSPF y VLAN
    NAT, OSPF y VLAN
    Документ3 страницы
    NAT, OSPF y VLAN
    Antony Charles Tejada
    Оценок пока нет
  • IPv6 Direccionamiento
    IPv6 Direccionamiento
    Документ33 страницы
    IPv6 Direccionamiento
    Antony Charles Tejada
    Оценок пока нет
  • Mascara S
    Mascara S
    Документ6 страниц
    Mascara S
    Antony Charles Tejada
    Оценок пока нет
  • U1 - S2 - Ejercicios para Actividad Virtual
    U1 - S2 - Ejercicios para Actividad Virtual
    Документ1 страница
    U1 - S2 - Ejercicios para Actividad Virtual
    Antony Charles Tejada
    Оценок пока нет
  • Subnetting 2
    Subnetting 2
    Документ5 страниц
    Subnetting 2
    Antony Charles Tejada
    Оценок пока нет
  • Comandos v2
    Comandos v2
    Документ9 страниц
    Comandos v2
    Antony Charles Tejada
    Оценок пока нет
  • Comandos v2
    Comandos v2
    Документ9 страниц
    Comandos v2
    Antony Charles Tejada
    Оценок пока нет
  • Mascara S
    Mascara S
    Документ6 страниц
    Mascara S
    Antony Charles Tejada
    Оценок пока нет