¿Que es un LCD?
El LCD(Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo empleado para la visualización de contenidos o información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. Está gobernado por un microcontrolador el cual dirige todo su funcionamiento.
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 es su conexionado?
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 Anodo de led backlight y cátodo de led backlight.
Pines de alimentación:
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd.
Pines de control:
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:
¿DDRAM y CGROM?
Son las dos zonas de memoria del LCD.
La memoria DDRAM(Data Display Ram): corresponde a una zona de memoria donde se almacenan los caracteres que se van a representar en pantalla. Es decir es la memoria donde se almacenan los caracteres a mostrar con su correspondiente posición.
La memoria CGROM es una memoria interna donde se almacena una tabla con los caracteres que podemos visualizar en el lcd. En la imagen podemos ver un ejemplo de la tabla con un contenido de 192 caracteres.
La memoria CGRAM(Character Generator Ram): en ella se pueden almacenar nuestros propios caracteres.
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 de este.
En este caso empleamos la librería "lcd.c", la cual hemos modificado. Siempre que utilicemos una librería de este tipo tendremos que analizarla para saber cuales son los pines de control y los pines para el Bus de datos, en este caso podemos observar que están definidos al comienzo de la misma.
#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
En este caso empleamos la librería "lcd.c", la cual hemos modificado. Siempre que utilicemos una librería de este tipo tendremos que analizarla para saber cuales son los pines de control y los pines para el Bus de datos, en este caso podemos observar que están definidos al comienzo de la misma.
#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
En el resto de la librería se puede encontrar todas las estructuras necesarias así como las funciones que nos permiten utilizar nuestro LCD.
Podemos encontrar funciones como :
lcd_init: inicializa el lcd.
lcd_gotoxy: establece la posicion de escritura en el lcd.
lcd_putc: nos muestra un dato en la siguiente posición del lcd, podemos emplear funciones como \f para limpiar el display, \n cambio a la segunda línea, \b mueve una posición atrás.
lcd_getc(x,y): devuelve caracteres a la posición x,y.
Otras funciones: lcd_send_nibble(BYTE n), lcd_send_byte(BYTE address, BYTE n).
Podemos encontrar funciones como :
lcd_init: inicializa el lcd.
lcd_gotoxy: establece la posicion de escritura en el lcd.
lcd_putc: nos muestra un dato en la siguiente posición del lcd, podemos emplear funciones como \f para limpiar el display, \n cambio a la segunda línea, \b mueve una posición atrás.
lcd_getc(x,y): devuelve caracteres a la posición x,y.
Otras funciones: lcd_send_nibble(BYTE n), lcd_send_byte(BYTE address, BYTE n).
Aquí se puede ver un ejemplo de una sencilla programación en una Pic control, y muestra de datos en el LCD, son datos inespecíficos que no muestran ninguna información.
Espero haberte ayudado, me despido dejándote unos links directos a distintos modelos de LCD16x2.
-LCD 16x2
https://s.click.aliexpress.com/e/_mNIsqqe
Si adquieres otro modelo y quieres seguir este tutorial, asegúrate que el que escojas no sea I2c. Ya que cambiaría su conexionado.
Gracias por la información (pero cuida los errores gramaticales)
ResponderEliminargracias va para mi reporte
ResponderEliminarMUY BUENA INFO
ResponderEliminarMUY BUENA INFO
ResponderEliminarte pido permiso para tomar esta informacion para un trabjo muchas fgracias
ResponderEliminarbn xavi y el barca
ResponderEliminarcomo hago para activar la pantalla lcd con un micro ''16f887", la programacion la tengo bien y cuando lo simulo en proteus se me refleja lo que programe pero a la hora de montarlo no se me refleja nada y me sale un caracter negro, ya revise conexiones y todo lo tengo bien alguien me puede colaborar.
ResponderEliminarsaludos.
verifica el contraste
EliminarDonde descargo la libreria del lcd modificado?
ResponderEliminarok a bueno :v
Eliminarme puedes pasar la programacion
ResponderEliminarMuchas gracias por la información
ResponderEliminarMe ha sido de gran ayuda
amigo como se usaría con un i2c ?
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarholaaaaaa!
EliminarMe ayudaste un buen con mi tésis, 10/10. Todo un profesional
ResponderEliminarMe ayudaste bastante con mi tésis 10/10. Todo un profesional
ResponderEliminarde casualidad alguien me podría ayudar tengo que dar un código con un pic18f452 en donde tengo que reflejar 4 posiciones en la pantalla lcd con unos conteos en forma ascendente y descendente en cada una de las posiciones de la pantalla
ResponderEliminarno entendi ni verga
ResponderEliminargracias por la información
ResponderEliminargracias buena info
ResponderEliminarHOLA QUE TAL! PODRÍAS EXPLICAR , LOS CARACTERES SE ACTIVAN EN UN SOLO TIEMPO O ES PUNTO POR PUNTO,LOS CARACTERES ¿SON PUNTOS A PUNTOS QUE SE VE EN LA PANTALLA?, OTRA COSA COMO ¿SABER DE CUANTOS CARACTERES ES UN DISPLAY?, INTENTO UTILIZAR UN DISPLAY DE ESTÉREO, QUIERO PONER MI NOMBRE EN EL O HACER ALGO DIDÁCTICO SALUDOS BUEN DIA.
ResponderEliminar