Conexión de una pantalla de texto a Arduino. Arduino y pantalla LCD de caracteres.

Hay una gran cantidad de variedades de texto, o como también se les llama pantallas de cristal líquido que sintetizan caracteres. Las pantallas más comunes se basan en chips HD44780 de Hitachi, KS0066 de Samsung o compatibles con ellos. Para trabajar con este tipo de pantallas, existe una biblioteca Arduino estándar Liquid Crystal.

A este tipo de visualizaciones pertenecen en particular las pantallas de texto de Melt. Este artículo describe en detalle el diagrama de conexión de esta pantalla, pero también es adecuado para muchas otras visualizaciones de texto.

El artículo describe principios generales. Puedes ir a la descripción detallada de tu display:

Componentes requeridos

Conexión

Conecte la pantalla a la placa y conecte la alimentación de +5 V y tierra desde el Arduino a los rieles de alimentación de la placa.

Necesitarás energía y aterrizarás más de una vez, por lo que es más conveniente tirarlos sobre los rieles.

Enciende la luz de fondo

La iluminación de la pantalla es un circuito separado, no conectado con el resto. Puede encenderlo aplicando +5 V al pin 15 de la pantalla y conectando el pin 16 a tierra. Al conectar estos dos pines a los rieles correspondientes, puede encender el Arduino y ver la pantalla iluminarse.

Tenga en cuenta que en algunos modelos la numeración de los contactos no es solo de derecha a izquierda, del primero al dieciseisavo, sino algo más astuta. Así, por ejemplo, en una pantalla de 16×2 de Melt, el primer contacto se sitúa físicamente en la posición 14, el segundo en la 13 y así de derecha a izquierda hasta el 14 en la primera posición, y el 15 y El 16 se encuentra a la derecha. La numeración cerca de los contactos de la pantalla le ayudará a evitar confusiones.

Activando el poder del sintetizador de personajes.

    El primero es la tierra. Conéctelo al riel de tierra.

    El segundo es la nutrición. Conéctelo al carril de +5V.

    El tercero es el contraste. Para obtener el máximo contraste, conéctelo al riel de tierra. Puede aplicar un voltaje arbitrario de 0 a 5 V a este contacto; cuanto más alto sea, más oscura será la imagen, pero al mismo tiempo disminuirá el consumo de energía. Para poder ajustar suavemente el contraste, puede aplicar una señal de salida de potenciómetro a este contacto.

Después de la conexión, si enciende el Arduino, podrá ver espacios familiares rectangulares. Dependiendo de la combinación de colores del texto y la retroiluminación, pueden ser brillantes y claramente visibles o apenas perceptibles. Esto es normal: en cualquier caso, el texto quedará genial.

Conexión de bus de datos

Para la comunicación entre el Arduino y la pantalla se deben utilizar varias líneas de comunicación:

    2 o 3 para comando de pantalla

    4 u 8 para transmisión de datos (códigos de caracteres y comandos)

Así, se ocuparán de 6 a 11 contactos de ambos dispositivos. Si no necesitas leer desde la pantalla, que se adapta a la mayoría de los escenarios de uso, los comandos requerirán 2 líneas.

Si la velocidad de actualización de datos tampoco es un problema, 4 líneas son suficientes para transferir datos.

Entonces, para conectar la pantalla, basta con usar 6 líneas, 6 pines en el Arduino. Consideremos este escenario particular.

Como se mencionó, no tenemos nada que leer en la pantalla, solo escribiremos en ella. Por lo tanto, conectamos el quinto pin de la pantalla, que es responsable de seleccionar lectura/escritura, al riel de tierra. Esto significa "escribir siempre".

Luego, conectamos el Arduino y la pantalla con nuestras 6 líneas de comunicación. No importa qué contactos se seleccionarán en Arduino: los especificaremos en el programa, pero para el ejemplo se eligió la siguiente configuración:

    El pin 6 de la pantalla es el pin 5 de Arduino. Esta es la línea de permiso de acceso a datos. Conocido como E o Habilitar. Cuando esta línea se convierte en uno, la pantalla ejecuta un comando o genera un carácter de la línea de datos.

    Los pines de pantalla 11, 12, 13 y 14 son los pines Arduino 10, 11, 12 y 13 respectivamente. Estas son líneas de datos. Conocido como DB4, DB5, DB6, DB7.

La pantalla está conectada y lista para recibir datos. Todo lo que queda es escribir un programa para Arduino.

Programación

Para generar texto desde Arduino, lo más conveniente es utilizar la biblioteca incorporada Liquid Crystal. Para mostrar el saludo y el cronómetro, use un código como este:

Hola.pde #include lcd.comenzar(16, 2); //imprime la primera línea lcd.print("¡Hola mundo!"); // coloca el cursor en la columna 0, línea 1. Es decir, en // esta es en realidad la segunda línea, porque la numeración comienza desde cero lcd.setCursor(0, 1); //imprime la segunda línea lcd.print ("foo bar baz");

) bucle vacío() ( )

Todo es bastante simple y debe quedar claro en los comentarios.

La información de esta sección se aplica específicamente a las pantallas de Melt. Es poco probable que sus homólogos chinos y europeos tengan cirílico en su conjunto de caracteres; consulte la documentación de la pantalla para obtener más información al respecto.

Imprimir letras rusas no es del todo trivial: no se puede simplemente escribir lcd.print("Vasya") . Esto está relacionado con el concepto de codificaciones. Sabes que cada carácter tiene un código correspondiente y al compilar un programa, si una cadena contiene cirílico, se convertirá en códigos usando la tabla utf-8, cp-1251 o alguna otra, dependiendo de la configuración del compilador. La pantalla, a su vez, espera ver datos en su propia codificación.

Por ejemplo, la letra “I” corresponde al código B1 en el sistema hexadecimal. Para transmitir la cadena "Yandex" a la pantalla, debe incrustar explícitamente el código de carácter en la cadena usando la secuencia \x##:

Lcd.imprimir(" \xB1 índice") ;

Puedes mezclar caracteres normales y códigos explícitos en una línea como quieras. La única advertencia es que después de que el compilador ve la secuencia \x en una línea, lee todos los caracteres detrás de ella que pueden ser dígitos del sistema hexadecimal, incluso si hay más de dos. Debido a esto, no puede simplemente usar caracteres en el rango 0-9, a-f seguido de un código de carácter de dos dígitos: causará un error de compilación. Para solucionar este punto, puedes aprovechar el hecho de que dos líneas escritas una al lado de la otra están pegadas. Entonces, si quieres escribir "Yeee":

Lcd.imprimir(" \xB1 eee") ; // error lcd.imprimir("\xB1"

"eee" );

// Bien Por ejemplo, para escribir “Saludos desde Amperka”, se utilizó el código: cirílico.pde #include Lcd de cristal líquido (4, 5, 10, 11, 12, 13); configuración vacía() ( lcd.begin(16, 2); lcd.print("\xA8 p\xB8 \xB3 " "mi\xBF" ) ; lcd.setCursor(0, 1);

lcd.imprimir(" o

\xBF A\xBC \xBE "

"ep

\xBA\xB8"

) ; ) bucle vacío() ( ) Cambiar páginas del generador de caracteres El módulo de visualización almacena dos páginas del generador de caracteres en la memoria. El valor predeterminado es la página cero. Para cambiar de página utilice el método comando(0x101010) y viceversa: comando(0x101000). La pantalla no puede mostrar caracteres de diferentes páginas al mismo tiempo.// RS, E, DB4, DB5, DB6, DB7 LCD de cristal líquido (4, 5, 10, 11, 12, 13); configuración nula() (// establece el tamaño (número de columnas y filas) de la pantalla lcd.comenzar(16, 2);) bucle vacío() ( //imprime la primera línea// establece la página del generador de caracteres en 0 (este es el valor predeterminado) comando.lcd(0b101000); lcd.imprimir(" \x9b \x9c \x9d \x9e \x9f ") ; // espera 1 segundo de retraso(1000);// instalar 1 página generadora de caracteres

comando.lcd(0b101010); // espera 1 segundo de retraso(1000);//limpiar la pantalla lcd.clear();)

A lo largo de mi pasión por la electrónica, he tenido la oportunidad de utilizar LCD de varios fabricantes:

DataVision, WINSTAR, Uniworld Technology Corp.
. Se diferenciaban en el tipo de controlador, el número de pines y la longitud de las líneas, pero todos tenían el mismo diagrama de conexión, sistema de comando y eran atendidos por el mismo programa del microcontrolador. Por tanto, aunque ahora hablaremos de la pantalla

WH0802A de WINSTAR

, todo lo que se dice a continuación se aplica a las pantallas LCD de caracteres de otras empresas.

Entonces, conectamos la pantalla WH0802A-YGH-CT al microcontrolador.

WH0802A es una pantalla de caracteres de dos líneas para 8 caracteres con un controlador de control KS0066 incorporado.

Veamos el propósito de los pines de visualización.

Algunas pantallas tienen dos pines adicionales: pines de retroiluminación +LED y –LED. Además, si hay conclusiones, esto no significa que haya retroiluminación. Así como viceversa. Mi pantalla tiene luz de fondo, pero no tiene pines de control.

El ciclo de escritura para un bus de 8 bits tiene este aspecto:
1. Configure RS (0 - comando, 1 - datos)
2. Envíe el valor del byte de datos al bus DB7…DB0.
3. Establecer E=1
4. Retraso del software 1
5. Establecer E=0
6. Retraso del software 2

El controlador de pantalla de caracteres LCD no es infinitamente rápido, por lo que se utilizan retrasos de software entre algunas operaciones. El primero es necesario para mantener la señal estroboscópica durante algún tiempo, el segundo para que el controlador tenga tiempo de escribir datos o ejecutar un comando. Los valores de retardo siempre se dan en la descripción del controlador de pantalla y siempre se debe mantener al menos su valor mínimo, de lo contrario las fallas en el funcionamiento del controlador son inevitables.

En general, el controlador de pantalla tiene el llamado indicador de ocupado: BF. Si el indicador es 1, el controlador está ocupado, si es 0, está libre. En lugar de un segundo retraso de software, puede leer el indicador de ocupado y comprobar cuándo el controlador de pantalla está libre. Pero como queremos obtener rápidamente los primeros resultados, nos ocuparemos de la bandera de ocupado más adelante.

//conecta la pantalla LCD de caracteres al AVR
#incluir
#incluir

//puerto al que está conectado el bus de datos LCD
#definir PORT_DATA PORTD
#definir PIN_DATOS PIND
#definir DDRX_DATA DDRD

//puerto al que están conectados los pines de control
#definir PORT_SIG PORTB
#definir PIN_SIG PINB
#definir DDRX_SIG DDRB

//números de pines del microcontrolador
//al que están conectados los pines de control del LCD
#definir RS 5
#definir RW ​​6
#definir ES 7

//macros para trabajar con bits
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#definir SetBit(reg, bit) reg |= (1<<(bit))

#definir F_CPU 8000000
#define_delay_us(nosotros) __delay_ciclos((F_CPU / 1000000) * (nosotros));
#define_delay_ms(ms) __delay_ciclos((F_CPU/1000) * (ms));

//función de grabación de comandos
vacío LcdWriteCom( carácter sin firmar datos)
{
BorrarBit(PORT_SIG, RS); // establece RS en 0
PORT_DATA = datos; // enviar datos al bus
SetBit(PORT_SIG, EN); // establece E en 1
_delay_us(2);
ClearBit(PORT_SIG, EN); // establece E en 0
_delay_us(40);

//función de grabación de datos

vacío LcdWriteData( carácter sin firmar datos)
{
EstablecerBit(PORT_SIG, RS); //establecemos RS en 1
PORT_DATA = datos; //enviar datos al bus
SetBit(PORT_SIG, EN); //establece E en 1
_delay_us(2);

ClearBit(PORT_SIG, EN); // establece E en 0

Retraso_us(40);
}

entero principal( vacío )
{
mientras (1);
devolver 0;
}

Aquí no hay partes complicadas, todo debe quedar claro. Sigamos adelante.

Cualquier pantalla LCD debe inicializarse antes de su uso. El proceso de inicialización generalmente se describe en la hoja de datos del controlador de pantalla. Pero incluso si no hay información allí, lo más probable es que la secuencia sea así.

1. Servir comida

2. Espere >40 ms

3. Emita el comando Conjunto de funciones

D.L.– bit de ajuste del ancho del bus
Autobús de 0 a 4 bits, autobús de 1 a 8 bits

norte– bit para configurar el número de líneas de visualización
0 – modo de una línea, 1 – modo de dos líneas

F– bit de configuración de fuente
0 – formato 5*8, 1 – formato 5*11

* - no importa lo que haya en estos bits

4. Emita el comando ENCENDIDO/APAGADO de pantalla

D– mostrar bit de encendido/apagado
0 – pantalla apagada, 1 – pantalla encendida

do– bit de activación/desactivación del cursor
0 – cursor deshabilitado, 1 – cursor habilitado

B– bit de habilitación de parpadeo
0 – cursor parpadeante habilitado, 1 – cursor parpadeante deshabilitado

5. Emita el comando Borrar pantalla


6. Espere > 1,5 ms

7. Emita el comando Establecer modo de entrada

IDENTIFICACIÓN– orden de aumento/disminución de la dirección DDRAM (RAM de datos de visualización)
0 – el cursor se mueve hacia la izquierda, la dirección disminuye en 1, 1 – el cursor se mueve hacia la derecha, la dirección aumenta en 1

SH– orden de desplazamiento de toda la pantalla
0 – sin cambio, 1 – el cambio ocurre de acuerdo con la señal I/D – si hay una 0 – la pantalla cambia a la derecha, 1 – la pantalla cambia a la izquierda

Para nuestro ejemplo, la función de inicialización se verá así

Las pantallas LCD de 1602 dimensiones, basadas en el controlador HD44780, son una de las pantallas más simples, asequibles y populares para el desarrollo de diversos dispositivos electrónicos. Se puede encontrar tanto en dispositivos montados en la rodilla como en dispositivos industriales, como, por ejemplo, máquinas de café. Los módulos y escudos con temas de Arduino más populares, como y, se recopilan en base a esta pantalla.

En este artículo te contamos cómo conectarlo a Arduino y mostrar información.

Componentes usados ​​(comprar en China):

. tablero de control

. Cables de conexión

Estas pantallas tienen dos diseños: retroiluminación amarilla con letras negras o, más a menudo, retroiluminación azul con letras blancas.

El tamaño de las pantallas del controlador HD44780 puede ser diferente, pero se controlarán de la misma manera. Las dimensiones más comunes son 16x02 (es decir, 16 caracteres en dos líneas) o 20x04. La resolución de los símbolos en sí es de 5x8 píxeles.

La mayoría de las pantallas no admiten el alfabeto cirílico; sólo las pantallas marcadas como CTK lo tienen. Pero podemos intentar solucionar parcialmente este problema (continúa en el artículo).

Mostrar salidas:

La pantalla tiene un conector de 16 pines para su conexión. Los pines están marcados en la parte posterior del tablero.

1 (VSS) - Fuente de alimentación del controlador (-)
2 (VDD) - Fuente de alimentación del controlador (+)
3 (VO) - Pasador de control de contraste
4 (RS) - Seleccionar registro
5 (R/W) - Lectura/Escritura (modo de escritura cuando está conectado a tierra)
6 (E) - Habilitar (estroboscópico en declive)
7-10 (DB0-DB3): bits de orden inferior de la interfaz de 8 bits
11-14 (DB4-DB7) - Bits de orden superior de la interfaz
15 (A) - Alimentación de retroiluminación del ánodo (+)
16 (K) - Fuente de alimentación de retroiluminación del cátodo (-)

Modo de autoprueba:

Antes de intentar conectarse y generar información, sería una buena idea saber si la pantalla está funcionando o no. Para hacer esto, debe aplicar voltaje al propio controlador ( VSS y VDD), encienda la luz de fondo ( A y K), y también ajustar el contraste.

Para ajustar el contraste utilice un potenciómetro de 10 kOhm. No importa la forma que tenga. +5V y GND se suministran a las patas exteriores, la pata central está conectada a la salida V.O.

Después de aplicar energía al circuito, es necesario lograr el contraste correcto; si no está configurado correctamente, no se mostrará nada en la pantalla. Para ajustar el contraste, debes jugar con el potenciómetro.

Si el circuito está ensamblado correctamente y el contraste se ajusta correctamente, la línea superior debe estar llena de rectángulos en la pantalla.

Salida de información:

La biblioteca LiquidCrystal.h integrada en el IDE de Arduino se utiliza para operar la pantalla.

Funcionalidad de biblioteca

//Trabajando con el cursor lcd.setCursor(0, 0); // Establece el cursor (número de celda, línea) lcd.casa(); // Establece el cursor en cero (0, 0) lcd.cursor(); // Habilitar la visibilidad del cursor (subrayado) lcd.noCursor(); // Elimina la visibilidad del cursor (subrayado) lcd.blink(); // Habilitar el parpadeo del cursor (cursor 5x8) lcd.noBlink(); // Desactiva el parpadeo del cursor (cursor 5x8) //Información de salida lcd.print("sitio"); // información de salida lcd.clear(); // Borrar la pantalla (eliminar todos los datos) poner el cursor en cero lcd.rightToLeft(); // La grabación se realiza de derecha a izquierda. lcd.leftToRight(); // La escritura se realiza de izquierda a derecha. lcd.scrollDisplayRight(); // Cambia todo lo que aparece en la pantalla un carácter a la derecha lcd.scrollDisplayLeft(); // Cambia todo lo que aparece en la pantalla un carácter a la izquierda //Información útil para espías :) lcd.noDisplay(); // La información en la pantalla se vuelve invisible, los datos no se borran // si en el momento en que esta función está activa no se muestra nada, entonces pantalla.lcd(); // Al llamar a la función display(), toda la información que estaba

La propia pantalla puede funcionar en dos modos:

Modo de 8 bits: para esto se utilizan bits bajos y altos (BB0-DB7)

Modo de 4 bits: para ello sólo se utilizan los bits menos significativos (BB4-DB7)

No es recomendable utilizar el modo de 8 bits en esta pantalla. Su funcionamiento requiere 4 patas más, y prácticamente no se gana velocidad porque La frecuencia de actualización de esta pantalla es limitada.< 10раз в секунду.

Para generar texto, debe conectar los pines RS, E, DB4, DB5, DB6, DB7 a los pines del controlador. Se pueden conectar a cualquier pin Arduino, lo principal es establecer la secuencia correcta en el código.

Código de muestra:

//Probado en Arduino IDE 1.0.5 Cambiar páginas del generador de caracteres //Añadir la biblioteca requerida Lcd de cristal líquido (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) vacío configuración()(lcd.begin(16, 2); // Establecer el tamaño de la pantalla lcd.setCursor(0, 0); // Establece el cursor al principio de 1 línea lcd.print("¡Hola mundo!"); // Mostrar texto lcd.setCursor (0, 1); // Establece el cursor al principio de la línea 2 lcd.print("sitio"); // texto de salida) vacío bucle (){ }

Crea tus propios símbolos

Hemos solucionado la salida del texto, las letras del alfabeto inglés están conectadas a la memoria del controlador dentro de la pantalla y no hay problemas con ellas. ¿Pero qué hacer si el símbolo requerido no está en la memoria del controlador?

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.

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 puede ser muy diferente, pero se controlan de la misma forma. 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 el alfabeto cirílico (con la excepción de las pantallas marcadas como 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) – configuración 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 menos significativos y de orden superior (BB0-DB7), en la segunda, solo los bits de orden inferior (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 arreglárnoslas 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!

¿Cómo conectar una placa Arduino con una pantalla de caracteres? ¡Muy 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 utiliza? 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. (Comprometido) Datos
13 D6 (DB6) Transferencia de datos. (Comprometido) Datos
14 D7 (DB7) Transferencia de datos. (Comprometido) 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 necesitas 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 ciclo; 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:




Arriba