You are on page 1of 17

El Display LCD

Existen muchos tipos de LCD (distintos tamaos,colores,iluminados, sin iluminar...) Pero


el funcionamiento general de todos es el mismo.

En este tutorial nos centrarems en el control de un LCD de 16pixeles de largo por 2 de alto.
Explicado muy brevemente y sin entrar en profundida en el tema, podemos decir que un lcd
de este tipo cuenta con cristal liquido en cada uno de sus pixeles. Para iluminar alguno de
ellos lo que se hace es aplicar un campo electrico en la zona deseada, de esta forma el
cristal liquido se polariza y la percibimos de otro color.
La gestion de crear el campo y delimitar el numero de pixeles necesarios para el caracter
que queremos mostrar la realiza un controlador, generalmente un hitachi HD44780,
nosotros solamente tenemos que pasarle algunos parametros, como el lugar donde escribirlo
y, claro esta, el caracter en si.
Conexin

Las patillas tienen estas funciones:


NPin Nombre
1
GND
Tierra

Funcin

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Vcc

5V
Regula el contraste de la pantalla. Esto se puede hacer con el pwn de
Contraste
Arduino o con este circuito
RS
Seleccin del registro a leer/Escribir
R/W
Selecciona si vamos a leer o escribir
E
Enable
DB0
Datos
DB1
Datos
DB2
Datos
DB3
Datos
DB4
Datos
DB5
Datos
DB6
Datos
DB7
Datos

Y la forma de conectarlas a Arduino seria esta:


Arduino
2
3
4
5
9
10
11
12

LCD
4
5
6
3 (Si se quiere controlar asi el contraste)
11
12
13
14

Este seria el esquema para conectarlo:

Esta Librera, llamada LiquidCrystal, nos proporciona gran numero de herramientas para
trabajar con un LCD. Estas son las fucciones que se incluyen en la versin 1.0.

Print
Descripcin

Escribe un texto en el LCD


Sintaxis

lcd.print(textoParaMostrar);

lcd.print(textoParaMostrar,BASE);
Parametros

textoParaMostrar: el texto que queremos que aparezca en la pantalla. Puede ser mediante
una variable en la que lo tuvisemos almacenado o poniendo el texto directamente entre
comillas simples.
BASE: Esto es OPCIONAL y sirve para definir el formato en el que queremos mostrarlo.
Puede ser:

BIN: Binario (base 2)


DEC: Decimal (base 10)
OCT: Octal (base 8)
HEX: Hexadecimal. (base 16).

Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>;
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup(){
6. }
7. void loop(){
8.
lcd.print('HOLA MUNDO');
9. }

Begin
Descripcin

Esta funcin sirve para especificar el tamao de nuestro Display.


Sintaxis

lcd.begin(columnas,filas)
Parametros

Columnas: Numero de columnas que tiene nuestro LCD.


Filas: Numero de filas que tiene nuestro LCD.
Ejemplo

view plainprint?
1. //Para un display de 2x16
2. #include <LiquidCrystal.h>;
3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
5. LiquidCrystal lcd(2,3,4,9,10,11,12);
6. void setup(){
7.
lcd.begin(2,16);
8. }
9. void loop(){
10. lcd.print('HOLA MUNDO');
11. }

Clear
Descripcin

Esta funcin borra todo lo que estuviese escrito en nuestro LCD


Sintaxis

lcd.clear()
Parametros

SIN PARAMETROS
Ejemplo
view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup(){
6.
lcd.begin(2,16);
7. }
8. void loop(){
9.
//escribimos un texto
10. lcd.print('HOLA MUNDO');
11. //Esperamos
12. delay(1000);
13. //Y lo borramos
14. lcd.clear();

15. }

Home

Descripcin

Coloca el cursor en la esquina superior derecha del display.


Sintaxis

lcd.home();
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup(){
6. lcd.begin(2,16);
7. }
8. void loop(){
9. //escribimos un texto
10. lcd.print('HOLA MUNDO');
11. //Esperamos
12. delay(1000);
13. //volvemos al principio del display
14. lcd.home();
15. //volvemos a escribir encima
16. lcd.print('Que gusto verte');
17. }

Write
Descripcin

Escribe un carcter en el Display.

Sintaxis

lcd.write(caracter);
Parametros

variable lcd
carcter: el carcter que queremos mostrar por pantalla
Ejemplo

view plainprint?
1.
2. #include <LiquidCrystal.h>
3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
5. LiquidCrystal lcd(2,3,4,9,10,11,12);
6. void setup(){
7.
lcd.begin(2,16);
8. }
9. void loop(){
10. if (Serial.available()) {
11. lcd.write('a');
12. }
13.

Blink
Descripcin

Muestra un cursor con forma de bloque, como el que solan mostrar algunos ordenadores
antiguos.
Sintaxis

lcd.blink()
lcd.noBlink()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?

1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup() {
6.
// Escribimos un texto en el LCD.
7.
lcd.print("HOLA MUNDO");
8. }
9. void loop() {
10. // Quitamos el Blink
11. lcd.noBlink();
12. //Hacemos una espera para poder ver el efecto
13. delay(3000);
14. // Activamos el Blink
15. lcd.blink();
16. //Hacemos una espera para poder ver el efecto
17. delay(3000);
18. }

Cursor
Descripcin

Muestra un cursor con forma de guion bajo.


Sintaxis

lcd.Cursor()
lcd.noCursor()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup() {
6. // Escribimos un texto en el LCD.
7. lcd.print("HOLA MUNDO");

8. }
9. void loop() {
10. // Activamos la visualizacin del cursor
11. lcd.noCursor();
12. //Hacemos una pausa para ver el efecto
13. delay(500);
14. // Desconectamos la visualizacin del cursor
15. lcd.cursor();
16. //Hacemos una pausa para ver el efecto.
17. delay(500);
18. }

Display
Descripcin

Esta funcin permite encender y apagar el Display, pero sin perder lo que estaba
mostrando. Es decir, que si mostramos por pantalla un texto y acto seguido hacemos un
noDisplay() dejaremos de ver la informacin que estbamos mostrando, pero reaparecer
al hacer un Display() sin necesidad de volver a mandar el texto.
Esto puede ser interesante por ejemplo si estamos por ejemplo mostrando un men por un
Display y queremos ahorrar energa. podramos apagalo tras un periodo de inactividad y
volver a encenderlo exactamente en el mismo sitio cuando el usuario vuelva a presionar
algn botn.
Sintaxis

lcd.display() lcd.noDisplay()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup() {
6.
// Escribimos un texto en el LCD.
7.
lcd.print("HOLA MUNDO");
8. }
9. void loop() {

10.
11.
12.
13.
14.
15.
16. }

// Apagamos el Display:
lcd.noDisplay();
delay(500);
// Encendemos el Display:
lcd.display();
delay(500);

Text Direction
Descripcin

rightToLeft(): Cuando se escribe, las letras aparecen a la izquierda del cursor. Es como si
en un editor de textos tuvisemos el texto alineado a la derecha.
leftToRight(): Al contrario que el anterior, las letras aparecen a la derecha del cursor, la
sensacin que da es la de alineacin a la izquierda.
Sintaxis

lcd.leftToRight()
lcd.rightToLeft()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. void setup() {
6. // Escribimos un texto en el LCD.
7.
lcd.print("HOLA");
8. }
9. void loop() {
10. //Hacemos que escriba a la izquierda del cursor.
11. lcd.rightToLeft();
12. lcd.print("izq");
13. delay(500);
14. //Hacemos que escriba a la derecha.
15. lcd.leftToRight();

16. lcd.print("dcha");
17. delay(500);
18. }

Autoscroll
Descripcin

Este programa de ejemplo muestra como usar las funciones autoscroll() y noAutoscroll()
para mover todo el texto de la pantalla a la izquierda o a la derecha.
autoscroll() mueve todo el texto un espacio a la izquierda cada vez que se aade una letra.
noAutoscroll() apaga el desplazamiento
Sintaxis

lcd.autoscroll()
lcd.noAutoscroll()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. //Este ejemplo esta inspirado en el ejemplo que facilita www.arduino.cc entre sus tut
oriales.
2. #include <LiquidCrystal.h
3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
5.
6. LiquidCrystal lcd(2,3,4,9,10,11,12);
7.
8. void setup() {
9.
// Escribimos un texto en el LCD.
10. lcd.print("HOLA");
11. }
12.
13. void loop() {
14. // Nos colocamos en la esquina superior izquierda
15. lcd.setCursor(0, 0);
16. // Escribimos los numeros del 0 al 9
17.

18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32. }

for (int numero = 0; numero < 10; numero++) {


lcd.print(numero);
delay(500);
}
// Nos dirimos a la esquina inferior derecha.
lcd.setCursor(16,1);
// activamos el autoscroll para que mueva los caracteres segun escribimos.
lcd.autoscroll();
// volvemos a escribir los numeros del 0 al 9
for (int numero = 0; numero < 10; numero++) {
lcd.print(numero);
delay(500);
}

SetCursor
Descripcin

Esta funcin sirve para posicionar el cursor del


LCD, o lo que es lo mismo, para decir donde
queremos escribir cada vez.
El primer parmetro del parntesis es la
posicin en X ( es decir, en horizontal, ms a la
izquierda o ms a la derecha) El segundo es la
posicin en Y ( ms arriba o ms abajo).
Por lo tanto, en un Display de 2x16 podremos poner como primer parmetro en el
parntesis un numero del 0 al 15 (cuanto ms alto el numero, mas a la derecha) y en el
segundo un numero del 0 (arriba) al 1 (abajo)
Por ejemplo:
lcd.setCursor(0, 0); // arriba a la izquierda
lcd.setCursor(15, 0); // arriba a la derecha
lcd.setCursor(0, 1); // abajo a la izquierda
lcd.setCursor(15, 1); // abajo a la derecha
Sintaxis

lcd.setCursor(fila, columna);

Parametros

fila:La Fila del pixel que deseamos seleccionar.


columna:La columba del pixel que queremos seleccionar.
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4.
5. LiquidCrystal lcd(2,3,4,9,10,11,12);
6.
7. void setup() {
8.
// Escribimos un texto en el LCD.
9.
lcd.print("HOLA");
10. }
11.
12. void loop() {
13.
14. //Empezamos en la esquina superior izquierda
15. lcd.setCursor(0,0);
16. lcd.print("HOLA");
17. delay(500);
18.
19. //Nos movemos a la posicin 5 en la fila de abajo
20. lcd.setCursor(5,1);
21. lcd.print("HOLA");
22. delay(500);
23.
24. //Ahora a la 10 de la fila de arriba
25. lcd.setCursor(10,0);
26. lcd.print("HOLA");
27. delay(500);
28.
29. //Esquina inferior izquierda
30. lcd.setCursor(0,2);
31. lcd.print("HOLA");
32. delay(500);
33.
34. //octava posicin, primera fila
35. lcd.setCursor(8,0);
36. lcd.print("HOLA");

37. delay(500);
38.
39. //Tercera posicion de la primera fila
40. lcd.setCursor(3,0);
41. lcd.print("HOLA");
42. delay(500);
43.
44. //Misma posicin en horizontal, pero en la segunda fila
45. lcd.setCursor(0,1);
46. lcd.print("HOLA");
47. delay(500);
48.
49. //En la diagonal con respecto al anterior
50. lcd.setCursor(11,0);
51. lcd.print("HOLA");
52. delay(500);
53.
54. }
Este otro muestra el numero de la fila en la que se encuentra.
view plainprint?
1. #include <LiquidCrystal.h>;
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5. //Creamos las constantes de los limites del Display, es importante recordar que EMP
EZAMOS A CONTAR DESDE 0, NO DESDE 1 COMO ESTAMOS ACOSTUMB
RADOS.
6. //Creamos una constante, una con el numero de filas que tiene nuestro Display.
7. const int numFilas = 15;
8. //Creamos otra con el numero de columnas.
9. const int numColumnas =1;
10. void setup() {
11. // Escribimos un texto en el LCD.
12. lcd.print("HOLA");
13. }
14.
15. void loop() {
16. // Con un bucle for vamos recorriendo todas las columnas.
17. for (int columna = 0; columna < numColumnas; columna++){
18.
//Un segundo bucle recorre las filas.
19.
for (int fila = 0; fila < numFilas; fila++) {
20.
//Colocamos el cursos donde corresponde.
21.
lcd.setCursor(fila,0);

22.

//Mostramos la posicion en la que estamos, para ello utilizaremos la misma v


ariable que cuenta las vueltas que da el bucle, ya que empieza y acaba en los limites
del display
23.
lcd.print(fila);
24.
//Una pequea pausa para que veamos como aparecen poco a poco.
25.
delay(500);
26.
}
27. }
28. }

Scroll
Descripcin

Desplaza el texto escrito en el Display.


ScrollDisplayLeft(): Desplaza el texto hacia la izquierda.
ScrollDisplayRight() : Desplaza el texto hacia la derecha.
Sintaxis

lcd.ScrollDisplayLeft()
lcd.ScrollDisplayRight()
Parametros

SIN PARAMETROS
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2.
3. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
4. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
5.
6. LiquidCrystal lcd(2,3,4,9,10,11,12);
7.
8. void setup() {
9.
// Escribimos un texto en el LCD.
10. lcd.print("HOLA");
11. }
12.
13. void loop() {

14.
15.

lcd.print("A");
//Este bucle "arrastra" la A de un lado al otro del display, una posicion cada segun
do.
16. for (int mover= 0; mover <15; mover++){
17.
lcd.scrollDisplayLeft();
18.
delay(1000);
19. }
20. //Como hemos dejado la A en el extremo derecho de la pantalla, la tomamos desd
e ah y la arrastramos a la izquierda 1 posicin cada segundo hasta el comienzo
21. for (int mover = 15; mover <0; mover--){
22.
lcd.scrollDisplayRight();
23.
delay(1000);
24. }
25. }

CreateChar
Descripcin

La idea de esta funcin es la de crear emoticonos en el LCD, puedes crear un mximo de


8, que quedan numerados del 0 al 7 y despus utilizarlos mediante esta funcin.
Sintaxis

lcd.createChar(num, nombre)
Parametros

num: Que carcter de los creados quieres usar.


Nombre: nombre que se le ha puesto al emoticono
Ejemplo

view plainprint?
1. #include <LiquidCrystal.h>
2. //Creamos el objeto "lcd" de de la libreria LiquidCrystal para poder usarla, y le pasa
mos la configuracin,
3. //se corresponden con (rs,rw,enable,d1,d2,d3,d4)
4. LiquidCrystal lcd(2,3,4,9,10,11,12);
5.
6. //Creamos el emoticono, en este caso una carita sonriente.
7.
8. byte smiley[8] = {
9.
B00000,
10. B10001,
11. B00000,

12. B00000,
13. B10001,
14. B01110,
15. B00000,
16. };
17.
18. void setup() {
19. //asignamos el valor 0 al emoticono smiley
20. lcd.createChar(0, smiley);
21. //Configuramos el tamao del display
22. lcd.begin(16, 2);
23. //mostramos en pantalla el emoticono.
24. lcd.write(0);
25. }
26.
27. void loop() {}

You might also like