Sunteți pe pagina 1din 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 }

S-ar putea să vă placă și

  • IPv6 Direccionamiento
    IPv6 Direccionamiento
    Document33 pagini
    IPv6 Direccionamiento
    Antony Charles Tejada
    Încă nu există evaluări
  • Linguagem C Aula 1
    Linguagem C Aula 1
    Document2 pagini
    Linguagem C Aula 1
    Antony Charles Tejada
    Încă nu există evaluări
  • PLC
    PLC
    Document2 pagini
    PLC
    Antony Charles Tejada
    Încă nu există evaluări
  • Ipv6 Ruteo PDF
    Ipv6 Ruteo PDF
    Document28 pagini
    Ipv6 Ruteo PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • OSPF y VLAN
    OSPF y VLAN
    Document2 pagini
    OSPF y VLAN
    Antony Charles Tejada
    Încă nu există evaluări
  • U1 - S2 - Ejercicios para Actividad Virtual
    U1 - S2 - Ejercicios para Actividad Virtual
    Document1 pagină
    U1 - S2 - Ejercicios para Actividad Virtual
    Antony Charles Tejada
    Încă nu există evaluări
  • Configuracion Basica
    Configuracion Basica
    Document1 pagină
    Configuracion Basica
    Antony Charles Tejada
    Încă nu există evaluări
  • PÁGINAS
    PÁGINAS
    Document1 pagină
    PÁGINAS
    Antony Charles Tejada
    Încă nu există evaluări
  • NAT, OSPF y VLAN
    NAT, OSPF y VLAN
    Document3 pagini
    NAT, OSPF y VLAN
    Antony Charles Tejada
    Încă nu există evaluări
  • Ed13cp09 IPService PDF
    Ed13cp09 IPService PDF
    Document19 pagini
    Ed13cp09 IPService PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • SNMP
    SNMP
    Document24 pagini
    SNMP
    Antony Charles Tejada
    Încă nu există evaluări
  • Ed14cp19 Etherchannelv1 0
    Ed14cp19 Etherchannelv1 0
    Document13 pagini
    Ed14cp19 Etherchannelv1 0
    Antony Charles Tejada
    Încă nu există evaluări
  • Sub Netting
    Sub Netting
    Document25 pagini
    Sub Netting
    Antony Charles Tejada
    Încă nu există evaluări
  • U2 Derivadas
    U2 Derivadas
    Document32 pagini
    U2 Derivadas
    Antony Charles Tejada
    Încă nu există evaluări
  • Mascara S
    Mascara S
    Document6 pagini
    Mascara S
    Antony Charles Tejada
    Încă nu există evaluări
  • Sub Netting
    Sub Netting
    Document25 pagini
    Sub Netting
    Antony Charles Tejada
    Încă nu există evaluări
  • Ed13cp09 IPService
    Ed13cp09 IPService
    Document22 pagini
    Ed13cp09 IPService
    Antony Charles Tejada
    Încă nu există evaluări
  • Curso de Redes Ip: Centraltech
    Curso de Redes Ip: Centraltech
    Document30 pagini
    Curso de Redes Ip: Centraltech
    Antony Charles Tejada
    Încă nu există evaluări
  • Subnetting 2
    Subnetting 2
    Document5 pagini
    Subnetting 2
    Antony Charles Tejada
    Încă nu există evaluări
  • Ed13cp09 IPService PDF
    Ed13cp09 IPService PDF
    Document19 pagini
    Ed13cp09 IPService PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • Subnetting 2
    Subnetting 2
    Document5 pagini
    Subnetting 2
    Antony Charles Tejada
    Încă nu există evaluări
  • Metric A
    Metric A
    Document2 pagini
    Metric A
    Antony Charles Tejada
    Încă nu există evaluări
  • Curso de Redes Ip: Centraltech
    Curso de Redes Ip: Centraltech
    Document24 pagini
    Curso de Redes Ip: Centraltech
    Antony Charles Tejada
    Încă nu există evaluări
  • Servicios
    Servicios
    Document14 pagini
    Servicios
    Antony Charles Tejada
    Încă nu există evaluări
  • Subnetting2 R Ok PDF
    Subnetting2 R Ok PDF
    Document4 pagini
    Subnetting2 R Ok PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • Subnetting2 R Ok
    Subnetting2 R Ok
    Document4 pagini
    Subnetting2 R Ok
    Antony Charles Tejada
    Încă nu există evaluări
  • Ed13cp24 First Hop Redundancy Protocol PDF
    Ed13cp24 First Hop Redundancy Protocol PDF
    Document13 pagini
    Ed13cp24 First Hop Redundancy Protocol PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • Sub Netting 2
    Sub Netting 2
    Document4 pagini
    Sub Netting 2
    Antony Charles Tejada
    Încă nu există evaluări
  • Span PDF
    Span PDF
    Document11 pagini
    Span PDF
    Antony Charles Tejada
    Încă nu există evaluări
  • Span PDF
    Span PDF
    Document11 pagini
    Span PDF
    Antony Charles Tejada
    Încă nu există evaluări