Hogar hardware de red Conexión de una pantalla LSD. LCD de caracteres y Arduino

Conexión de una pantalla LSD. LCD de caracteres y Arduino

¿Cómo conectar una placa Arduino con una pantalla de caracteres? ¡Bastante sencillo! Todo está a continuación en orden y con detalles.

Si desea recibir información de Arduino sin conectarse a una computadora y enviarla a un puerto serie, puede usar una pantalla de caracteres. No es tan difícil de hacer. La comodidad que se obtiene con la comunicación es invaluable.
Para trabajar, utilicé una pantalla LCD de caracteres J204A basada en el chip HD44780, que a menudo se encuentra en eBay como LCD2004. 4 líneas de 20 caracteres, invertidas. Comprado con muchos otros en eBay, por unos pocos centavos, de 60 a 100 rublos cada uno. El idioma ruso no es compatible de forma predeterminada, pero este es un problema que se puede solucionar, hablaremos de eso la próxima vez. Y los conectores del diagrama no están soldados, tendrás que trabajar con un soldador.
La biblioteca se utiliza para trabajar con pantallas. Cristal líquido.h incluido en el IDE predeterminado de Arduino.

Pero no encontré una hoja de datos para la pantalla LCD2004, pero Internet está lleno de tablas de visualización. Pero prácticamente no se diferencian entre sí. Los controles y conexiones son completamente idénticos. La única diferencia es el número de líneas/caracteres en la pantalla. Pero esto no tendrá ningún efecto si tienes 1602.

Todos los contactos están definidos en la tabla. Si toma la pantalla y la gira hacia usted, los contactos se ubicarán de izquierda a derecha, respectivamente, en la tabla se enumeran en orden creciente. En la columna de contactos, la designación en la hoja de datos se indica entre paréntesis.

# Contactos ¿Para qué se usa esto? Nota
1 VSS (VSS) Tierra. Tierra. Fuente de alimentación para microcontrolador de display. 0V
2 VDD(VCC) Tensión de alimentación para el microcontrolador de pantalla. +5V
3 V0(VEE) Contraste de caracteres en la pantalla. Es mejor conectarse mediante un potenciómetro. de 0v a +5V
4 RS (RS) Selección de registro.
5 LEER (LEER/ESPERAR) Cambio de modo de lectura/escritura. Tiremoslo al suelo, solo necesitamos transmitir información a la pantalla. 0-escritura +5V-lectura
6 mi Marcar
7 D0 (DB0) Datos
8 D1 (DB1) Transferencia de datos. (No lo usaremos) Datos
9 D2 (DB2) Transferencia de datos. (No lo usaremos) Datos
10 D3 (DB3) Transferencia de datos. (No lo usaremos) Datos
11 D4 (DB4) Datos
12 D5 (DB5) Transferencia de datos. (Activado) Datos
13 D6 (DB6) Transferencia de datos. (Activado) Datos
14 D7 (DB7) Transferencia de datos. (Activado) Datos
15 Un (LED+) El voltaje de +5 V, la retroiluminación de la pantalla y el brillo de la pantalla se pueden ajustar mediante un potenciómetro. +5V
16 K(LED-) GND Tierra, retroiluminación de la pantalla 0V

v

La transmisión de datos a la pantalla es posible en dos opciones: 8 y 4 bits por reloj. Porque Arduino tiene pocos contactos, usaremos 4; esto es más que suficiente para actualizar la información en la pantalla a una velocidad prohibitiva para la percepción.

Así es como todo está conectado conmigo. Puede parecer un caos, pero aquí hay un sistema. Puedes distinguir cables rojos, verdes, amarillos y naranjas. Los rojos siempre van a +5V, los verdes a GND, y los amarillos y naranjas son los cables de conexión al Arduino, que transportan datos.

La parte más importante es la conexión física de la pantalla. Al hacer clic se abre en alta resolución, donde todo es claramente visible.
R1 - resistencia de 200OM. La resistencia limita la corriente que pasa a través de la luz de fondo de la pantalla.
R2 - Potenciómetro con resistencia hasta 10kOM. Giramos el bolígrafo y seleccionamos el contraste de los símbolos.


Y un boceto sumamente sencillo para mostrar un par de líneas en la pantalla.

H> // Conectamos la biblioteca para trabajar con la pantalla. /* Comando LiquidCrystal lcd(rs, enable, d4, d5, d6, d7); Creamos una variable de tipo LiquidCrystal y determinamos a través de qué contactos trabaja Arduino con la pantalla. más detalles sobre este comando aquí http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() ( lcd.begin(20, 4); // determina las características de la pantalla (20 caracteres por línea, 4 líneas) // Para la pantalla 1602, debes especificar lcd.begin(16, 2); lcd .setCursor(1, 1); // Especifica desde qué posición comenzar a mostrar el texto. ¡¡¡Las líneas y caracteres comienzan desde 0!!! // 1 ya moverá el carro una división desde el principio de la pantalla y moverá el texto una. línea debajo lcd.print("compblog.vlukyanov"); // imprime el texto comenzando desde la posición especificada. lcd.setCursor(7, 2); // imprime desde el octavo carácter en la pantalla lcd.print(".com); "); // texto a imprimir. loop() ( // no hacemos nada más en el bucle; todo ya se hizo durante la inicialización de la placa. )

Resultado. Si sabes cómo se conecta todo y cómo escribir el código, entonces el tiempo para todo el trabajo es de 5 minutos.

La pantalla también puede realizar algunas funciones de forma independiente y también es posible configurar algunos parámetros.

Por ejemplo:

  • Texto de desplazamiento;
  • Posición del cursor de destello;
  • Encender / apagar.

¡Y ahora el bono!
La retroiluminación de la pantalla desperdicia energía que, por ejemplo, si se alimenta con una batería, uno desearía ahorrar. Hice esta opción por mí mismo: cuando presionas el botón, la luz de fondo de la pantalla se enciende durante 5 segundos.

H> // Conectamos la biblioteca para trabajar con la pantalla. botón intInt = 0; // Número de la interrupción que será llamada. int pantallaLed = 4; // Número del pin al que está conectada la pantalla. +5V volátil largo x = 5000; // variable para almacenar el tiempo LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup adjunto() (Interrupt(buttonInt, screenon, FALLING); // parámetros de interrupción lcd.begin(20, 4); pinMode(screenLed, OUTPUT); digitalWrite(screenLed,HIGH); // enciende la pantalla lcd. setCursor(0 , 0); lcd.print("¡Iniciar pantalla en prueba!"); // Función que se ejecutará cuando se presione el botón. void screenon() ( x = millis()+5000; // Recuerde el momento en el que necesita apagar la luz de fondo. Tiempo de funcionamiento actual +5 segundos. digitalWrite(screenLed,HIGH); // Aplique voltaje a la luz de fondo de la pantalla. ) void loop() ( lcd.setCursor(0, 2); // va a la tercera línea lcd.print(x); // y muestra la hora en que la pantalla se apaga lcd.setCursor(0, 3); / / ir a la cuarta línea lcd.print( millis()); // imprimir el tiempo de funcionamiento actual if (x)< millis()) // если время работы выключения наступило >( digitalWrite(screenLed,LOW); // luego apaga la pantalla) )

Y el resultado:

Las pantallas LCD de 1602 tamaños, creadas sobre la base del controlador HD44780, siguen siendo hoy en día una de las más asequibles, sencillas y demandadas para desarrollar cualquier tipo de dispositivo electrónico. No es de extrañar que se puedan ver tanto en unidades simples montadas literalmente sobre la rodilla como en unidades industriales más serias, por ejemplo, máquinas de café. Es con esta pantalla que se ensamblan los módulos y protectores más populares relacionados con Arduino, por ejemplo el módulo LCD I2C y el protector de teclado LCD.

Este artículo explica en detalle con imágenes cómo conectar una pantalla LCD a Arduino y mostrar información.

Paso 1: Pantalla LCD 1602 para Arduino

1602 pantallas tienen dos versiones diferentes:

Luz de fondo amarilla con letras negras.
- o (esto sucede con mucha más frecuencia) retroiluminación azul con luces blancas.

El tamaño de las pantallas del controlador HD44780 varía mucho, pero se controlan de la misma manera. Las dimensiones más habituales son 16 por 02 (es decir, 16 caracteres en dos líneas) o 20 por 04. Los propios caracteres tienen una resolución de 5 por 8 píxeles.

La mayoría de las pantallas no admiten cirílico (a excepción de las pantallas con la marca CTK). Pero este problema tiene solución parcial y el artículo describe con más detalle cómo hacerlo.

La pantalla tiene un conector de 16 PIN para su conexión. Las conclusiones tienen marcas en la parte posterior del tablero, es el siguiente:

1 (VSS) – fuente de alimentación negativa para el controlador.
2 (VDD) – fuente de alimentación positiva para el controlador.
3 (VO) – ajustes de control de contraste.
4 (RS) – selección de registro.
5 (R/W) – lectura y escritura, en particular, escritura cuando está conectado a tierra.
6 (E) – activación (habilitar).
7–10 (DB0-DB3): bits de orden inferior de la interfaz de ocho bits.
11–14 (DB4-DB7): bits más significativos de la interfaz
15 (A) – ánodo positivo para alimentación de retroiluminación.
16 (K) – cátodo negativo para fuente de alimentación de retroiluminación.

Paso 2: conecte la pantalla LCD

Antes de conectar la pantalla y transferirle información, vale la pena comprobar su funcionalidad. Primero, aplique voltaje al controlador VSS y VDD, encienda la luz de fondo (A, K) y luego ajuste el contraste. Para tales ajustes es adecuado un potenciómetro de 10 kOhm; su forma no importa; Se suministran +5V y GND a las patas exteriores, y la pata del centro está conectada al pin VO.

Cuando se suministra energía al circuito, es necesario lograr el contraste necesario; si se ajusta incorrectamente, la imagen en la pantalla no será visible. Para ajustar el contraste es necesario “jugar” con el potenciómetro. Cuando el circuito está ensamblado correctamente y el contraste está ajustado correctamente, la línea superior de la pantalla debe llenarse de rectángulos.

Para que la pantalla funcione, se utiliza una biblioteca especial, LiquidCrystal.h, integrada en el IDE de Arduino, sobre la que escribiré a continuación. Puede funcionar en modo de 8 y 4 bits. En la primera opción, solo se utilizan los bits más significativos y menos significativos (BB0-DB7), en la segunda, solo los menos significativos (BB4-DB7).

Pero usar el modo de 8 bits en esta pantalla es una decisión equivocada, casi no hay ventaja en velocidad, ya que su frecuencia de actualización es siempre inferior a 10 veces por segundo. Para mostrar texto, debe conectar los pines DB7, DB6, DB5, DB4, E y RS a los pines del controlador. Se pueden conectar a cualquier pin Arduino, lo principal es establecer la secuencia correcta en el código.

Si el símbolo requerido aún no está en la memoria del controlador, puede definirlo manualmente (hasta siete símbolos en total). La celda en las pantallas consideradas tiene una extensión de cinco por ocho píxeles. La tarea de crear un símbolo es escribir una máscara de bits y colocar unos en los lugares donde los puntos deberían iluminarse y ceros donde no deberían iluminarse.

El diagrama de conexión comentado anteriormente no siempre es bueno, ya que en el Arduino se utilizan al menos seis salidas digitales.

Paso 3: solución alternativa

Exploremos una opción para solucionar este problema y conformarnos con solo dos. Necesitamos un módulo convertidor adicional de LCD a IIC/I2C. En las imágenes a continuación se puede ver cómo se suelda a la pantalla y se conecta al Arduino.

Pero esta opción de conexión sólo funciona con una biblioteca especial, LiquidCrystal_I2C1602V1, que, sin embargo, es fácil de encontrar e instalar en Internet, tras lo cual podrás utilizarla sin problemas.

Paso 4: Biblioteca LiquidCrystal.h

La biblioteca LiquidCrystal.h se puede descargar desde el recurso oficial -. También puedes descargar desde los siguientes enlaces:

Bosquejo

Una vez que haya descargado el archivo, reemplace la carpeta LiquidCrystal en la carpeta de bibliotecas de su directorio de instalación de Arduino.

Puedes ver un boceto de muestra en Archivo -> Ejemplos -> LiquidCrystal -> HelloWorld_SPI(Archivo -> Ejemplos -> LiquidCrystal -> HelloWorld_SPI).

Esto concluye nuestra próxima lección. ¡Te deseamos proyectos de calidad!

Ha llegado Arduino Nano, ha llegado un kit que contiene una placa de pruebas (breadboard) y una pantalla LCD. La pantalla en el tablero dice - 1602A, debajo - QAPASS. Comencé a esculpir el primer dispositivo y, por supuesto, quería mostrar información en la pantalla y no parpadear los LED.

Google me ayudó, me dijo que se trata de una visualización de caracteres; Si no lo distorsiona, lo más probable es que haya caracteres ASCII disponibles: números, latín y algunos de los caracteres básicos.

Los siguientes materiales ayudaron a iniciar la pantalla: Manejar una pantalla LCD de tipo caracteres desde un puerto de impresora de PC; Cómo conectar Arduino con una pantalla LCD de caracteres; PDF de control del motor servocontrolador Pwm.

La pantalla es bastante común y ya se han inventado escudos para ella: hay opciones con SPI, como, y/o con I2C, e Internet está lleno de recetas para estos casos. Pero sólo tenía la pantalla original de 16x2 y el Arduino al que quería conectarlo.

La pantalla tiene un modo de operación y transmisión de datos en nibbles, de 4 bits cada uno, mientras que los bits de orden inferior del bus no se utilizan. La conexión de solo la mitad del bus de datos se describe en muchos lugares y no descubrí cómo conectar la pantalla y trabajar con ella en 8 líneas. Estoy bastante contento con cómo funciona.

Encontré una buena descripción de pantallas de este tipo aquí: http://greathard.ucoz.com/44780_rus.pdf. Y aquí (http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40748) hay un ejemplo de cómo especificar un generador de caracteres.

Conexión

Mi pantalla vino con contactos sin soldar. Desde el principio quise soldar el cable, cortar 16 hilos con duponts y limpiarlos. Y luego busqué en la ballena y encontré un peine DuPont para soldar al tablero. A partir de ahí rompí 16 contactos y los soldé.
Mi pantalla se veía así (antes de soldar los contactos):

Primero conecté el pin 15 (A) a +5V, 16 (K) a tierra y me aseguré de que la luz de fondo funcionara. En general lo correcto es conectar el cátodo a tierra mediante una resistencia de 220 Ohm, que es lo que hice entonces.

Luego conecté tierra (1) y alimentación (2). Arduino se puede alimentar desde USB, desde un voltaje estabilizado de 5V y desde uno no estabilizado de 6-12V, se selecciona automáticamente el voltaje más alto. Ahora el Arduino se alimenta desde USB y me preguntaba dónde conseguir 5 voltios. Resultó que hay 5V en el pin Arduino, donde se conectan 5V estabilizados externos. O mejor dicho, resultó ser 4,7 V, pero para mí fue suficiente.

Después de conectar la alimentación, si todo está bien, la fila superior se ilumina con rectángulos sólidos de familiaridad.

Luego conectamos el potenciómetro de contraste (pin 3 V0). Tiramos uno de los terminales extremos del potenciómetro al suelo, el segundo a +5V, el del medio al pin 3 del display. Se recomienda un potenciómetro de 10K. Tenía 50K de ballena, lo usé primero. El ajuste se realizó sólo en un borde; fue necesario captar muy sutilmente el contraste deseado. Luego encontré uno similar en otra ballena a 5K y lo instalé. El ajuste se extendía desde un borde hasta media vuelta. Aparentemente, puedes llevar un potenciómetro aún más pequeño. Probablemente se recomiende 10K para que el circuito consuma menos. Sí, tuve que soldar un poco; soldé cables con duponts a las terminales de los potenciómetros.

Bosquejo de prueba

Tomamos el boceto de prueba de los ejemplos de Arduino Studio - "C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\ex amples\HelloWorld\HelloWorld.ino", solo necesitamos cambiar los contactos por los nuestros - LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);

En principio, este boceto también contiene una descripción de qué conectar y dónde. Puedes conectarlo como se indica allí, entonces no necesitas cambiar nada en absoluto.

// incluye el código de la biblioteca: #include // inicializamos la biblioteca con los números de los pines de la interfaz LiquidCrystal lcd(7, 6, 5, 4, 3, 2); void setup() ( // configura el número de columnas y filas de la pantalla LCD: lcd.begin(16, 2); // imprime un mensaje en la pantalla LCD. lcd.print("¡hola, mundo!"); ) void loop() ( // establece el cursor en la columna 0, línea 1 // (nota: la línea 1 es la segunda fila, ya que el conteo comienza con 0): lcd.setCursor(0, 1); // imprime el número de segundos desde el reinicio: lcd.print(millis() / 1000);

Resulta algo como esto:

Por cierto, la pantalla que llegó a mis manos no funciona sin retroiluminación. Quiero decir, funciona, pero casi no se ve nada.

Contactos de pantalla 1602A

# contacto Nombre Como conectar
1 VSS Tierra
2 VDD +5V
3 V0 Contraste - al terminal medio del potenciómetro
4 RS (selección de registro) D7Arduino
5 R/W (lectura o escritura) Tierra
6 E (Habilitar señal) Arduino D6
7-14 D0-D7 D0-D3 - no conectado; D4-D7 - conectado a los pines D5-D2 de Arduino
15 A Ánodo de retroiluminación, conectado a +5V
16 k Cátodo de retroiluminación, conectado a tierra mediante una resistencia de 220 ohmios.

La pantalla de cristal líquido (LCD), abreviada como LCD, se basa en la tecnología de cristal líquido. Al diseñar dispositivos electrónicos, necesitamos un dispositivo económico para mostrar información y el segundo factor igualmente importante es la disponibilidad de bibliotecas listas para usar para Arduino. De todas las pantallas LCD disponibles en el mercado, la más utilizada es la LCD 1602A, que puede mostrar caracteres ASCII en 2 líneas (16 caracteres en 1 línea), cada carácter en una matriz de 5x7 píxeles. En este artículo veremos los conceptos básicos para conectar una pantalla a Arduino.

Especificaciones técnicas

Tensión de alimentación: 5 V
Tamaño de pantalla: 2,6 pulgadas
Tipo de visualización: 2 líneas x 16 caracteres
Color de luz de fondo: azul
Color del personaje: blanco
Dimensiones: 80 mm x 35 mm x 11 mm

Descripción de la pantalla

El LCD 1602A es un módulo electrónico basado en el controlador HD44780 de Hitachi. LCD1602 tiene 16 pines y puede operar en modo de 4 bits (usando solo 4 líneas de datos) o en modo de 8 bits (usando las 8 líneas de datos), también se puede usar. En este artículo hablaré sobre la conexión en modo de 4 bits.

Asignación de contacto:
VSS: fuente de alimentación del módulo “-”
VDD: alimentación del módulo “+”
VO: pin de control de contraste
RS: Registrarse Seleccionar
RW: seleccione el modo de escritura o lectura (cuando esté conectado a tierra, configúrelo en modo de escritura)
E: puerta de caída
DB0-DB3: bits de interfaz
DB4-DB7: bits de interfaz
R: potencia de retroiluminación “+”
K: "-" potencia de retroiluminación

En la parte frontal del módulo hay una pantalla LCD y un grupo de contactos.

En la parte posterior del módulo hay dos chips en diseño de “gota” (ST7066U y ST7065S) y cableado eléctrico, no veo el sentido de dibujar un diagrama de circuito, solo les contaré sobre la resistencia R8 (100 Ohm), que sirve como resistencia limitadora para la retroiluminación LED, por lo que puedes conectar 5V directamente al pin A. Un poco más adelante escribiré un artículo en el que te contaré cómo puedes cambiar la retroiluminación de una pantalla LCD usando un PWB y un transistor.

Conexión de LCD 1602A a Arduino (modo de 4 bits)

Piezas requeridas:
Arduino UNO R3 x 1 ud.
Pantalla LCD 1602A (2×16, 5V, Azul) x 1 ud.
Cable DuPont, 2,54 mm, 20 cm, H-F (Hembra - Hembra) x 1 ud.
Potenciómetro 10 kOhm x 1 ud.
Conector PLS-16 x 1 ud.
Placa de desarrollo MB-102 x 1 ud.
Cable USB 2.0 A-B x 1 ud.

Conexión:
Para conectar usaremos una placa de desarrollo; el diagrama y la tabla para conectar el LCD1602a a Arduino en modo de 4 bits se pueden ver en la siguiente figura.

La conexión de la pantalla a la placa se realizará mediante pines PLS-16 (deben soldarse a la pantalla). Instale el módulo de pantalla en la placa de pruebas y conecte el VDD de alimentación (segundo pin) a 5 V (Arduino) y el VSS (primer pin) a GND (Arduino), luego conecte RS (cuarto pin) al pin digital 8 (Arduino). Conecte a tierra RW (quinto pin) conectándolo a GND (Arduino), luego conecte el pin E al pin 8 (Arduino). Para una conexión de 4 bits, se requieren cuatro pines (DB4 a DB7). Conecte los pines DB4 (pin 11), DB5 (pin 12), DB6 (pin 13) y DB7 (pin 14) a los pines digitales 4, 5, 6 y 7 de Arduino. El potenciómetro de 10 K se utiliza para ajustar el contraste de la pantalla, el diagrama de conexión para La pantalla LCD 1602a se muestra a continuación.

La biblioteca ya está incluida en el IDE de Arduino y no es necesario instalarla. Copie y pegue este código de ejemplo en la ventana del programa Arduino IDE y cárguelo en el controlador.

/* Las pruebas se realizaron en Arduino IDE 1.6.11 Fecha de prueba 20/09/2016. */ #incluir Lcd de cristal líquido (8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Inicializa LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Establece el cursor en la primera línea lcd.print("Hola, world" ); // Imprime el texto lcd.setCursor(0,1); // Establece el cursor en la segunda línea lcd.print("www.site"); // Imprime el texto)

Un poco sobre el programa..
Para facilitar la comunicación entre Arduino y la pantalla LCD, se utiliza la biblioteca incorporada en el IDE de Arduino " Cristal líquido.h « - que está escrito para pantallas LCD usando HD44780 (Hitachi) chipset (o chips compatibles). Esta biblioteca puede manejar conexiones LCD en modo de 4 bits y en modo de 8 bits.

Comprar en Aliexpress
Controlador Arduino UNO R3

Al crear su propio dispositivo, a menudo surge la necesidad de mostrar rápidamente información diversa. Por ejemplo, si está creando un controlador doméstico inteligente, entonces es razonable equipar el dispositivo con un dispositivo de salida que le permita conocer rápidamente el estado actual de los sistemas. La mejor solución es una pantalla de cristal líquido. El consumo de energía cuando la luz de fondo está apagada es mínimo y trabajar con la pantalla es extremadamente simple y no requiere mucha intervención en el código del programa. De hecho, la salida de información a la pantalla LCD no es muy diferente de la salida al puerto serie. El artículo analiza la conexión de una pantalla generadora de caracteres basada en el popular chip HD44780 al controlador Arduino.

¿Cómo funciona una pantalla de texto LCD?

Para comprender algunos de los matices, es útil saber cómo funciona una visualización generadora de caracteres. Una característica especial de este tipo de pantalla es la presencia de su propio controlador con su propia memoria. DDRAM: memoria de visualización. Para mostrar un símbolo en la pantalla, debe cargar el símbolo en una celda de memoria y luego pasar un comando para mostrar la celda de memoria. Durante la transmisión, los caracteres se codifican mediante códigos ASCII. Por ejemplo, al escribir el código 0x31 en la memoria, el símbolo " 1 " La correspondencia del código de símbolo con su visualización en la pantalla (es decir, la "imagen" del símbolo) se almacena en la memoria CGROM. CGROM es una memoria no volátil. Por lo tanto, la pantalla sólo puede mostrar aquellos caracteres que están "cableados" en el controlador. Por eso no todas las pantallas son capaces de mostrar, por ejemplo, caracteres rusos. Lamentablemente, los expositores vendidos en nuestra tienda no están rusificados. También hay memoria CGRAM. Es cambiante. Podemos crear nuestros propios símbolos y mostrarlos en la pantalla. Vale la pena considerar que no puedes crear más de ocho personajes.

Todo este trabajo "bajo el capó" es importante sólo para comprender algunos de los matices. Existe una biblioteca simple y directa para Arduino que hace todo el trabajo duro por usted, permitiéndole controlar la salida de la pantalla de manera fácil y sencilla.

Conexión de la pantalla LCD a Arduino

Para conectar la pantalla, por supuesto, debe instalarla en una placa de pruebas. Tenga en cuenta: las pantallas vendidas en nuestra tienda se venden sin conector pin soldado. Si desea recibir una pantalla inmediatamente lista para su instalación en una placa, marque la casilla de verificación "conector de soldadura" en la página del producto y soldaremos el conector por usted. La transferencia de datos a la pantalla se puede organizar de dos formas: 4 u 8 bits a la vez. En consecuencia, necesitarás 4 u 8 pines Arduino. En la práctica, no habrá ganancia de velocidad al utilizar una interfaz de ocho bits. Por tanto, sólo necesitamos 4 pines digitales para transmitir datos. Se necesitarán otros 3 pines para configurar el modo de funcionamiento de la pantalla. En total, para conectar la pantalla solo necesitarás 7 salidas digitales del controlador. Los contactos en la pantalla están etiquetados, lo que le ayudará a evitar confusiones al realizar la conexión:

Numeramos las conclusiones de izquierda a derecha:

  • 1-(VSS) Mostrar terreno. Se conecta al riel de tierra.
  • 2-(VDD) Muestra la fuente de alimentación. Se conecta al riel eléctrico.
  • 3-(V.O.) Entrada de potenciómetro (incluido). El contraste de la pantalla se ajusta mediante un potenciómetro. La salida central del potenciómetro está conectada al pin de visualización.
  • 4-(R.S.) Entrada de señal “Comando”. Se conecta a cualquier pin digital Arduino. En el ejemplo está conectado al pin No. 12.
  • 5-(RW) Establece el modo “lectura” o “escritura”. Vamos a grabar. Conectamos el contacto a tierra.
  • 6-(mi)Permitir. Otra salida de "comando". Cuando se aplica un uno a la salida, la pantalla ejecuta el comando transmitido previamente. Se conecta a cualquier salida digital. En el ejemplo está conectado al pin No. 11.
  • 7-10 (D0-D3) lo dejamos desconectado. Estos son los pines de datos que se utilizan en la interfaz de ocho bits. No lo necesitamos.
  • 11-14 (D4-D7) Contactos para la transmisión de datos en modo de cuatro bits. Nuevamente, están conectados a cualquier salida digital. En el ejemplo, están conectados a los pines 5, 4, 3 y 2 respectivamente (D4 al pin 5, D5 al pin 4, etc.).
  • 15 (A) Ánodo LED de retroiluminación. La resistencia limitadora de corriente ya está instalada en la pantalla, por lo que el ánodo simplemente se conecta al riel de alimentación. Dado que la luz de fondo utiliza el LED más común, puede conectarlo a cualquier pin que lo admita y controlar el brillo de la luz de fondo mediante programación.
  • 16 (k) Cátodo de iluminación. Se conecta al riel de tierra.

Diagrama de conexión visual:

Programación

El IDE de Arduino viene con una excelente biblioteca para pantallas de cristal líquido: LiquidCrystal. La biblioteca contiene ejemplos que revelan completamente las capacidades de la pantalla. Para comenzar, use el ejemplo estándar "HelloWorld" (Archivo -> Ejemplos -> LiquidCrystal -> HelloWorld) o cargue el siguiente código en la placa:

/* *Pin de pantalla RS al pin 12 de arduino *Habilitar pin de pantalla al pin 11 de arduino *Pin de pantalla D4 a pin 5 de arduino *Pin de pantalla D5 a pin 4 de arduino *Pin de pantalla D6 a pin 3 de arduino *Pin de pantalla D7 a pin 2 de arduino *Salida R/W del display a tierra *Salida del potenciómetro a la salida VO del display */ // conecta la biblioteca: #include ; // Inicializa la pantalla // Enumera los pines de arduino a los que // los contactos de pantalla RS, E, D4, D5, D6, D7 están conectados LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() ( // Especifica el número de columnas y líneas de la pantalla: lcd.begin(16, 2); // Muestra un mensaje en la pantalla. lcd.print("hello, world!"); ) void loop() ( // coloca el cursor en la columna 0 (cero) de la primera fila // de hecho, el cursor se colocará en la segunda fila (inferior) // la numeración de filas y columnas comienza desde cero lcd.setCursor( 0, 1); // muestra el número de segundos que // han pasado desde el momento en que se carga la placa: lcd.print(millis()/1000);

*Pin de pantalla RS al pin 12 de arduino

*Habilitar pin de visualización al pin 11 de arduino

*Pin de pantalla D4 al pin 5 de arduino

*Pin de pantalla D5 al pin 4 de arduino

*Pin de pantalla D6 al pin 3 de arduino

*Pin de pantalla D7 al pin 2 de arduino

*Salida de pantalla R/W a tierra

*Salida del potenciómetro al pin VO de la pantalla

// conecta la biblioteca:

#incluir ;

// Inicializa la pantalla

// Lista los pines de arduino a los que están conectados

// Pines de visualización RS, E, D4, D5, D6, D7

configuración nula() (

// Especifica el número de columnas y filas de la pantalla:

LCD. comenzar(16, 2);

// Mostrar un mensaje en la pantalla.

LCD. imprimir ("¡hola, mundo!");

bucle vacío() (

// la numeración de filas y columnas comienza desde cero

LCD. establecerCursor(0, 1);

//muestra el número de segundos

// transcurrido desde que se cargó el tablero:

LCD. imprimir(milis()/1000);

Después de cargar este código en la placa Arduino, la pantalla mostrará "¡Hola, mundo!"( Inglés "¡Hola Mundo!") en la primera línea y un cronómetro que cuenta los segundos en la segunda línea.

Como suele ser el caso, el código es simple y comprensible. Sin embargo, todavía lo analizaremos con más detalle:

  • LCD de cristal líquido(12, 11, 5, 4, 3, 2): esta línea crea un objeto de visualización con el que trabajaremos en el futuro. Entre paréntesis, los números de pin a los que están conectados los contactos de la pantalla se pasan como argumentos. En consecuencia: RS, E, D4, D5, D6, D7. Como se señaló anteriormente, los números de pin al realizar la conexión se pueden elegir de forma completamente arbitraria.
  • lcd.comenzar(16, 2) - aquí configuramos las dimensiones de la pantalla. Este ejemplo tiene 16 columnas y 2 filas. Para nuestra pantalla 20X4, esta línea se vería así: lcd.comenzar(20, 4).
  • impresión.lcd(“¡Hola, mundo!”): muestra texto en la pantalla. Después de especificar el tamaño de la pantalla (lcd.begin), el cursor se coloca en la esquina superior izquierda de la pantalla. Por lo tanto, este texto se mostrará en la primera línea (superior) a la izquierda.
  • lcd.setCursor(0, 1): coloca el cursor en la posición especificada. En este caso, se indica la posición más a la izquierda de la segunda línea. El número de columna se especifica entre paréntesis y luego el número de fila. Tanto las filas como las columnas están numeradas desde la posición cero. Por lo tanto: lcd.setCursor(0, 0) - colocará el cursor en la esquina superior izquierda, lcd.setCursor(15, 0) - en la esquina inferior derecha.
  • impresión.lcd(millis()/1000) - ya descrito anteriormente. Aquí, en lugar de texto, se pasa como parámetro una fórmula de cálculo. El resultado se muestra en la pantalla.

Ahora que hemos analizado el ejemplo más sencillo, podemos pasar a ejemplos más complejos. Y si ya comprende todo y está listo para comprar una pantalla LCD, he recopilado enlaces a vendedores de pantallas chinos que he verificado:

Pantallas LCD de caracteres

Tamaño de visualización (columnas*filas)Color de retroiluminaciónEstado
20*4 Azulverificado
20*4 Amarilloverificado
16*2 Azulverificado
16*2 Amarilloverificado
16*2 Verdeverificado

Revisión de otros ejemplos de la biblioteca LiquidCrystal

En los ejemplos estándar suministrados con la biblioteca LiquidCrystal puede encontrar los siguientes bocetos:

    • Desplazamiento automático- demuestra la capacidad de desplazar el texto automáticamente. Una especie de línea rastrera. Cuando se muestra un carácter, los caracteres anteriores se desplazan. Así, el nuevo personaje se muestra en el mismo lugar.

    • Parpadear- demuestra la capacidad de habilitar la visualización de un cursor parpadeante en forma de rectángulo.

    • Cursor- demuestra la capacidad de habilitar la visualización de un cursor en forma de línea horizontal parpadeante.

    • Carácter personalizado- Se muestra la posibilidad de crear sus propios símbolos para mostrarlos en la pantalla. Por cierto, hay un error en este boceto. Detalles abajo.

    • Mostrar- muestra una manera de “apagar” la pantalla. Es decir, mostrar u ocultar el texto mostrado.

    • Desplazarse- demuestra la capacidad de desplazar el texto manualmente.

    • Pantalla de serie- muestra en pantalla el texto impreso en la ventana del monitor de puerto (es decir, el texto transmitido a través del puerto serie).
    • establecercursor- llena la pantalla con letras, lo que demuestra la capacidad de colocar el cursor en cualquier posición de la pantalla.
    • Dirección del texto- demuestra la capacidad de cambiar la dirección de salida del texto (de derecha a izquierda o de izquierda a derecha).

Consideremos con más detalle los procedimientos cuyas capacidades se demuestran con estos ejemplos:

lcd.desplazamiento automático()

Después de llamar a este procedimiento, el texto en la pantalla se desplazará automáticamente. Para dejar de desplazarse, llame lcd.noAutoscroll().

lcd.parpadeo()

Después de llamar al procedimiento, el cursor aparecerá como un rectángulo parpadeante. Para desactivar la llamada lcd.noBlink()

lcd.cursor()

Después de llamar al procedimiento, el cursor aparecerá como una línea horizontal parpadeante. Para desactivar la llamada lcd.noСursor(). El cursor volverá a ser invisible.

lcd.createChar()

El procedimiento carga un carácter descrito como una matriz de bytes en la tabla de caracteres de pantalla variable (memoria CGRAM). El argumento es el número del símbolo y una matriz de bytes que describe el símbolo. Veamos esto con más detalle. Puede ingresar un máximo de ocho caracteres en la memoria de la pantalla. Para agregar su propio símbolo necesita:

  1. Crea una matriz de bytes que describa el carácter.
  2. Escriba un símbolo en la memoria de la pantalla asignándole un número en la tabla de símbolos. Los caracteres están numerados en el rango del cero al siete.
  3. Mostrar un personaje en la pantalla usando el procedimiento lcd.escribir()(no confundir con lcd.imprimir()), como argumento del cual se pasa el número de símbolo.

Un error en el entorno de desarrollo y las funciones de la biblioteca provocó la imposibilidad de mostrar el símbolo número 0 (cero). Cuando el compilador encuentra la línea lcd.write(0), arrojará un error: " la llamada de 'write(int)' sobrecargada es ambigua". Esta es exactamente la línea que aparece en el ejemplo. Carácter personalizado bibliotecas. Cuando intente compilar el ejemplo estándar, recibirá un error:

CustomCharacter.ino: En la función 'void setup()': CustomCharacter:115: error: la llamada de 'write(int)' sobrecargada es ambigua /home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal.h:82 : nota: los candidatos son: virtual size_t LiquidCrystal::write(uint8_t) /home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print.h:49: nota: size_t Print::write(const char *)

Carácter personalizado. ino: En la función 'configuración vacía()':

CustomCharacter: 115: error: la llamada de 'escritura (int)' sobrecargada es ambigua

/home/nazarovd/arduino - 1.0.5/libraries/LiquidCrystal/LiquidCrystal. h: 82: nota: los candidatos son: tamaño virtual_t LiquidCrystal :: escribir (uint8_t)

/home/nazarovd/arduino - 1.0.5/hardware/arduino/cores/arduino/Print. h: 49: nota: size_t Imprimir :: escribir (const char *)

Para eliminar el error, simplemente cambie la línea lcd.write( 0 ) a lcd.escribir( (byte)0).
Ahora un pequeño ejemplo sobre cómo crear su propio símbolo. Mostremos el símbolo del rublo.

// Incluir la biblioteca #include ; // Inicializa la pantalla LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Describe nuestro símbolo. // Simplemente "dibujamos" el símbolo con unidades // Cuando se muestran en la pantalla, las unidades aparecerán como puntos rellenos, ceros - byte no relleno rubl = ( 0b00000, 0b01110, 0b01001, 0b01001, 0b01110, 0b01000, 0b11110, 0b01000, ); void setup() ( // escribe nuestro carácter en la memoria de la pantalla // pasa el número de símbolo // y una matriz de bytes que describe nuestro carácter como argumentos lcd.createChar(0, rubl); // configura la pantalla lcd.begin( 16, 2); ) void loop() ( // coloca el cursor en la esquina superior izquierda de la pantalla lcd.setCursor(0,0); // muestra el carácter número cero en la pantalla lcd.write((byte)0 ); // no hacer nada durante 10 segundos delay(10000);

// Incluir la biblioteca

#incluir ;

// Inicializa la pantalla

Lcd de cristal líquido (12, 11, 5, 4, 3, 2);

Nuevo en el sitio

>

Más popular