El Display LCD

17
 El Display LCD Existen muchos tipos de LCD (distintos tamaños,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. Conexión Las patillas tienen estas funciones: NºPin Nombre Función 1 GND Tierra

description

Metodos de conexion del LCD 16x2

Transcript of El Display LCD

  • 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 Funcin

    1 GND Tierra

    http://www.trastejant.es/tutoriales/arduino/img/lclcd/Tiposdelcd.jpg

  • 2 Vcc 5V

    3 Contraste Regula el contraste de la pantalla. Esto se puede hacer con el pwn de

    Arduino o con este circuito

    4 RS Seleccin del registro a leer/Escribir

    5 R/W Selecciona si vamos a leer o escribir

    6 E Enable

    7 DB0 Datos

    8 DB1 Datos

    9 DB2 Datos

    10 DB3 Datos

    11 DB4 Datos

    12 DB5 Datos

    13 DB6 Datos

    14 DB7 Datos

    15

    16

    Y la forma de conectarlas a Arduino seria esta:

    Arduino LCD

    2 4

    3 5

    4 6

    5 3 (Si se quiere controlar asi el contraste)

    9 11

    10 12

    11 13

    12 14

    Este seria el esquema para conectarlo:

    http://www.trastejant.es/tutoriales/arduino/controlContraste.html

  • 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 ; 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

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • view plainprint?

    1. //Para un display de 2x16 2. #include ; 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 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();

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 15. }

    Home

    Descripcin

    Coloca el cursor en la esquina superior derecha del display.

    Sintaxis

    lcd.home();

    Parametros

    SIN PARAMETROS

    Ejemplo

    view plainprint?

    1. #include 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.

    http://www.trastejant.es/tutoriales/arduino/homehttp://www.trastejant.es/tutoriales/arduino/homehttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • Sintaxis

    lcd.write(caracter);

    Parametros

    variable lcd

    carcter: el carcter que queremos mostrar por pantalla

    Ejemplo

    view plainprint?

    1. 2. #include 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?

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 1. #include 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 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");

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 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 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() {

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 10. // Apagamos el Display: 11. lcd.noDisplay(); 12. delay(500); 13. // Encendemos el Display: 14. lcd.display(); 15. delay(500); 16. }

    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 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();

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 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 tutoriales.

    2. #include

  • 18. for (int numero = 0; numero < 10; numero++) { 19. lcd.print(numero); 20. delay(500); 21. } 22. 23. // Nos dirimos a la esquina inferior derecha. 24. lcd.setCursor(16,1); 25. // activamos el autoscroll para que mueva los caracteres segun escribimos. 26. lcd.autoscroll(); 27. // volvemos a escribir los numeros del 0 al 9 28. for (int numero = 0; numero < 10; numero++) { 29. lcd.print(numero); 30. delay(500); 31. } 32. }

    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

  • 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 ; 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);

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 22. //Mostramos la posicion en la que estamos, para ello utilizaremos la misma variable 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 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() {

    http://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.htmlhttp://www.trastejant.es/tutoriales/arduino/lclcd.html

  • 14. lcd.print("A"); 15. //Este bucle "arrastra" la A de un lado al otro del display, una posicion cada segun

    do.

    16. for (int mover= 0; mover

  • 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() {}