jueves, 30 de abril de 2015

CCS Compiler (PIC C Compiler) - Manejo de LCD 16x2

¿Qué es un LCD?

El LCD(Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo empleado para la visualización de contenidos, mediante carácteres, símbolos o pequeños dibujos dependiendo del modelo.
En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de 2 filas de 16 caracteres cada una. Los píxeles de cada símbolo o carácter, varían en función de cada modelo.

¿Cómo se conecta?

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo  podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Ánodo y cátodo de led.


Pines de alimentación:

Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K

Pines de control:

RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un carácter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o leer desde el LCD.

Pines de Bus de datos:

El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a D7) o empleando los 4 bits mas significativos del bus de datos(D4 a D7)


La librería del LCD:

Para poder visualizar los caracteres o símbolos en el LCD es necesario que en el programa de código fuente a emplear, incluyamos la librería.
En este caso empleamos la librería "lcd.c".
La librería viene configurada de esta manera

#define LCD_ENABLE_PIN    PIN_E0
#define LCD_RS_PIN               PIN_E1
#define LCD_RW_PIN             PIN_E2
#define LCD_DATA4               PIN_D4
#define LCD_DATA5               PIN_D5
#define LCD_DATA6               PIN_D6
#define LCD_DATA7               PIN_D7  

Vamos a configurar para poder usar el PIN que nosotros deseamos, en este caso para usar el puerto D del PIC.

#define LCD_ENABLE_PIN    PIN_D0
#define LCD_RS_PIN               PIN_D1
#define LCD_RW_PIN             PIN_D2
#define LCD_DATA4               PIN_D4
#define LCD_DATA5               PIN_D5
#define LCD_DATA6               PIN_D6
#define LCD_DATA7               PIN_D7  

o también de esta manera

#define LCD_DATA_PORT getenv("SFR:PORTD")
#define LCD_ENABLE_PIN    PIN_D0
#define LCD_RS_PIN               PIN_D1
#define LCD_RW_PIN             PIN_D2

Funciones a usar:
  • lcd_init(): Inicializa el lcd
  • lcd_gotoxy(x,y): Establece la posición de escritura en el lcd.
  • lcd_putc(char s): nos muestra un dato en la siguiente posición del lcd.
          \f se limpia el lcd
              \n el cursor se posiciona al inicio de la segunda línea
                \b el cursor retrocede una posición
      • lcd_getc(x,y): lee el carácter de la posición (x,y)
      • printf(lcd_putc, cadena, variable)

             Ejemplo:   printf(lcd_putc,"\n %2.2f la temperatura es: ",temp);
                               donde temp: variable

      EN EL TUTORIAL PODRAN VER COMO SE HACE USO DEL LCD

      DESCARGA EL PROGRAMA Y LA SIMULACION EN



      37 comentarios :

      1. Respuestas
        1. Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
          ~
          Aprendiendoelectrónica >>>>> Download Now

          >>>>> Download Full

          Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
          ~
          Aprendiendoelectrónica >>>>> Download LINK

          >>>>> Download Now

          Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
          ~
          Aprendiendoelectrónica >>>>> Download Full

          >>>>> Download LINK 2q

          Eliminar
      2. Los fuses no afectan en un pic 18f4550?

        ResponderEliminar
      3. Cada PIC tiene sus respectivos fuses, para ver mas detalles de estos leer el datasheet del PIC

        ResponderEliminar
      4. Saludos, tengo un problema, ya hice todo lo que dice en el video, y me leí lo del blog, pero no consigo hacer que funcione, ni en simulador, ni en la protoboard, tengo el código exactamente igual que en el video. Ayuda por favor.

        ResponderEliminar
      5. he conectado los pines del lcd a los pines del puerto D del pic pero no se a que se debe que no me permite cambiar estos pines que bienen por defecto a los del puerto b, si alguien sabe la solucion se lo agradeceria saludos.

        ResponderEliminar
      6. sigo sin poder ver en la simulacion los caracteres del lcd alguien sabe a que se debe?, la compilacion no tiene errores pero al cargarlo en el proteus no puedo ver los caracteres

        ResponderEliminar
      7. Este comentario ha sido eliminado por el autor.

        ResponderEliminar
      8. Funciona muy bien, tambien lo hice con el 16f887 y funciona igual, solo una cosa en el set tris a, colocas (0b00011), cuando el puerto "a" tiene 6 pines en lugar de 5, creo que te falto un cero, igual funciona.

        ResponderEliminar
      9. No es necesario colocar para todos los pines, solo para los pines que deseo, al final ambos tendran un mismo valor decimal. En el ejemplo solo se usa los pines a0 y a1, por tanto pude haber colocado set_tris_a(0b11);

        ResponderEliminar
      10. hola una pregunta como puedo recuperar datos de la lcd para posteriormente utilizarlas, en un retardo de tiempo

        ResponderEliminar
      11. ayuda mucho esta pagina, me enseña mas que mi maestro gracias por todo animo!!

        ResponderEliminar
      12. Para que es el "do{}" y porque el "while(x x x x ...)" va sin "{}"

        ResponderEliminar
      13. Buenas tardes. Me gustó el video solo que el cuadro negro que aparece con el cursor sobra y es molesto. Te pregunto, poruqe la patalla se ilumina, veo que los pines alternan en tre rojo y azul pero no aparece ninguna letra?
        Gracias.

        ResponderEliminar
      14. Hola muy buen aporte se agradece !! Pero tengo un problema no me deja compilar me da errores el archivo de las librerias lcd.c y no puedo hacerlo funcionar ayuda please

        ResponderEliminar
      15. AUXILIO¡¡¡¡ NECESITO URGENTE LA FOTO DEL CIRCUITOOO XFAS...URGENTE AUN ME FALTAN 10MINUTOS Y SE ME PERDIOO YAUXILIOOO
        }

        ResponderEliminar
      16. AUXILIO¡¡¡¡ NECESITO URGENTE LA FOTO DEL CIRCUITOOO XFAS...URGENTE AUN ME FALTAN 10MINUTOS Y SE ME PERDIOO YAUXILIOOO
        }

        ResponderEliminar
      17. Buenas tardes excelentes vídeos
        Porque en el lcd al organizar el contraste, me aparece un cuadro en parpadeo y aveces una linea en parpadeo
        gracias

        ResponderEliminar
      18. Buenas. Tengo alguna incertidumbre en el uso del LCD en lo que respecta a la creación de caracteres personalizados. En otro compilador se manejan varios pero en CCS supuestamente sólo se pueden crear 8. Estaría necesitando crear más. De hecho, los únicos que he creado fueron ocho y no me funcionan más que dos de ellos. ¿Existe alguna manera de hacerlo?

        ResponderEliminar
      19. Chavos hay algo que me di cuenta al programar.
        El \f te posiciona automáticamente en (1,1) y borra.
        Así que les recomiendo si quieren poner un mensaje en otra posición que no sea (1,1) primero borren y después se ubican.Ejem:

        Lcd_putc("\f");
        Lcd_gotoxy(3,1);
        Printf(lcd_putc,"HOLA MUNDO");
        Delay_ms(500);
        Lcd_putc("\f");
        Lcd_gotoxy(4,3);
        Printf(lcd_putc,"HI WORLD");
        Delay_ms(500);

        ResponderEliminar
      20. Como uso el lcd con interrupciones

        ResponderEliminar
      21. Hola buenas tardes, soy rodrigo de uruguay y queria saber si podrias mostrar como se programa un PIC, con un LCD por comunicacion I2C, desde ya muchas gracias

        ResponderEliminar
      22. Mi display se pasa de 1 a 9 y el 0 programacion ?

        ResponderEliminar
      23. SALUDOS tengo un problema al compilar .... me a error y me marca el ejemplo siguiente ,,, #include me lo marca como error me pueden ayudar gracias

        ResponderEliminar
      24. Alguien me podria responder porque cuando quero cambiar al puerto b el lcd no me da nada no fu ciona hize todo pero no me funciona pero por defecto el puerto d ahi lo conecto y funciona

        ResponderEliminar
        Respuestas
        1. Es que hace falta cambiar la configuración de la librería de la lcd

          Eliminar
      25. Este comentario ha sido eliminado por un administrador del blog.

        ResponderEliminar
      26. Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
        ~
        Aprendiendoelectrónica >>>>> Download Now

        >>>>> Download Full

        Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
        ~
        Aprendiendoelectrónica >>>>> Download LINK

        >>>>> Download Now

        Ccs Compiler (Pic C Compiler) - Manejo De Lcd 16X2
        ~
        Aprendiendoelectrónica >>>>> Download Full

        >>>>> Download LINK

        ResponderEliminar