Tabla de contenido:

LCD HD44780 de 3 cables por menos de 1 dólar: 5 pasos
LCD HD44780 de 3 cables por menos de 1 dólar: 5 pasos

Video: LCD HD44780 de 3 cables por menos de 1 dólar: 5 pasos

Video: LCD HD44780 de 3 cables por menos de 1 dólar: 5 pasos
Video: ¡Mira Como estoy programando una pantalla LCD a la antigua! 2024, Mes de julio
Anonim
LCD HD44780 de 3 cables por menos de 1 dólar
LCD HD44780 de 3 cables por menos de 1 dólar

En este instructible aprenderemos cómo podemos conectar una pantalla LCD basada en el chipset HD44780 al bus SPI y manejarlo con solo 3 cables por menos de $ 1. Aunque me centraré en la pantalla alfanumérica HD44780 en este tutorial, el mismo principio funcionará prácticamente igual para cualquier otra pantalla LCD que utilice un bus de datos paralelo de 8 bits, y se puede adaptar muy fácilmente para adaptarse a pantallas con buses de datos de 16 bits.. Las pantallas alfanuméricas basadas en HD44780 (y compatibles) suelen estar disponibles en configuraciones de 16x2 (2 líneas que constan de 16 caracteres) y 20x4, pero se pueden encontrar en muchas más formas. La pantalla más 'complicada' sería una pantalla de 40x4, este tipo de pantalla es especial ya que tiene 2 controladores HD44780, uno para las dos filas superiores y otro para las dos filas inferiores. Algunas pantallas LCD gráficas también tienen dos controladores. Las pantallas LCD HD44780 son geniales, son muy baratas, legibles y bastante fáciles de usar. Pero también tienen algunos inconvenientes, estas pantallas ocupan muchos pines de E / S cuando se conectan al Arduino. En proyectos simples, esto no es una preocupación, pero cuando los proyectos se hacen grandes, con una gran cantidad de E / S, o donde se necesitan ciertos pines para cosas como una lectura analógica o PWM, el hecho de que estos LCD requieran un mínimo de 6 pines puede convertirse en un problema. problema. Pero podemos solucionar este problema de una forma barata e interesante.

Paso 1: obtener los componentes

Usé TaydaElectronics para la mayoría de los componentes que usé en este proyecto. También puede obtener estas piezas en eBay, pero para facilitar su uso, lo vincularé a Tayda. Shopping List2 - 74HC595 paquete DIP161 - Cabecera macho genérico - 2 pines. Esto no es necesario, lo utilicé como una forma de deshabilitar permanentemente la luz de fondo. 3 - Condensador de cerámica - capacitancia 0.1µF; voltaje 50V1 - Condensador electrolítico - capacitancia 10µF; voltaje 35V1 - Condensador cerámico - capacitancia 220pF; voltaje 50V1 - Transistor NPN - parte # PN2222A * 1 - 1k Ω Resistor1 - Potenciómetro de ajuste - resistencia máxima 5kΩ1 - 470 Ω Resistor * Con un transistor NPN, la luz de fondo permanecerá apagada hasta que se encienda por software. Si desea tener la luz de fondo encendida por defecto, use un transistor tipo PNP. Sin embargo, será necesario realizar cambios en el código de la biblioteca proporcionada. El subtotal de esta lista es $ 0,744. El encabezado del pin tampoco es necesario, por lo que puede ahorrar 15 centavos allí mismo y el subtotal será de $ 0.6.

Paso 2: conozca su hardware n. ° 1

Conozca su hardware # 1
Conozca su hardware # 1

Aquí hay un pin estándar de una pantalla LCD HD44780, también es muy similar a algunas pantallas LCD gráficas. El HD44780 puede funcionar en dos modos: 1. Modo de 4 bits, donde cada byte enviado a la pantalla LCD consta de 2 partes de 4 bits. 2. Modo de 8 bits, en el que nos centraremos. La pantalla LCD tiene 16 pines en total, 3 pines de control y 8 pines de datos: RS - Controla si queremos enviar un comando o datos a la pantalla LCD. Donde 'alto' significa datos (un carácter) y 'bajo' significa un byte de comando. R / W - El controlador HD44780 le permite leer desde su RAM. Cuando este pin está "alto", podemos leer datos de sus pines de datos. Cuando es 'bajo' podemos escribir datos en la pantalla LCD. Aunque la opción de leer desde la pantalla LCD puede ser útil en algunos casos, no la repasaremos en este tutorial, y simplemente conectaremos a tierra este pin para asegurarnos de que siempre esté en modo de Escritura. E - E es el pin 'Habilitar', este pin se alterna entre 'alto' y luego 'bajo' para escribir los datos en su RAM y eventualmente mostrarlos en la pantalla. DB0-7 - Estos son los pines de datos. En el modo de 4 bits solo usamos los 4 bits altos DB4-DB7, y en el modo de 8 bits se utilizan todos. VSS - Este es el pin de tierra. VCC - Este es el pin de alimentación, la pantalla LCD funciona con una fuente de alimentación de 5V, podemos alimentarlo fácilmente desde el pin + 5v de Arduino. Vo - Este es el pin que le permite establecer el nivel de contraste para la pantalla, requiere un potenciómetro, normalmente se usa una olla de 5K Ohm. LED + - Este es el fuente de alimentación para la luz de fondo. Algunas pantallas LCD no vienen con luz de fondo y solo tienen 14 pines. En la mayoría de los casos, este pin también requiere una conexión de + 5v. LED-: esta es la tierra para la luz de fondo. ** Es importante verificar la hoja de datos de las pantallas o inspeccionar su PCB para verificar si hay una resistencia de luz de fondo, la mayoría de las pantallas LCD las tendrán construidas -en cuyo caso todo lo que tiene que hacer es aplicar energía al LED + y tierra al LED-. Pero en el caso de que su LCD no tenga una resistencia incorporada para la luz de fondo, es importante que agregue una, de lo contrario, la luz de fondo consumirá mucha energía y eventualmente se quemará. En la mayoría de los casos, la forma en que esta pantalla LCD está conectada al Arduino es usándola en modo de 4 bits y conectando a tierra el pin R / W. De esta forma usamos los pines RS, E y DB4-DB7. La ejecución en modo de 4 bits tiene otra pequeña desventaja, ya que se tarda el doble de tiempo en escribir datos en la pantalla que en una configuración de 8 bits. La pantalla LCD tiene un tiempo de "establecimiento" de 37 microsegundos, esto significa que debe esperar 37 microsegundos antes de enviar el siguiente comando o byte de datos a la pantalla LCD. Dado que en el modo de 4 bits tenemos que enviar datos dos veces por cada byte, el tiempo total que se tarda en escribir un solo byte sube a 74 microsegundos. Esto sigue siendo lo suficientemente rápido, pero quería que mi diseño produjera los mejores resultados posibles. La solución a nuestro problema con la cantidad de pines utilizados radica en un convertidor de serie a paralelo …

Paso 3: conozca su hardware n. ° 2

Conozca su hardware n. ° 2
Conozca su hardware n. ° 2

Lo que haremos es construir un adaptador que toma un tipo de comunicación en serie que sale del Arduino y convierte los datos en una salida paralela que se puede alimentar a nuestra pantalla LCD. Entra el chip 74HC595. Este es un registro de desplazamiento muy económico y fácil de operar. En esencia, lo que hace es tomar un reloj y señales de datos que utiliza para llenar un búfer interno de 8 bits con los 8 últimos bits que se registraron. Una vez que el pin 'Latch' (ST_CP) se ha puesto en 'alto', mueve estos bits a sus 8 salidas. El 595 tiene una característica muy agradable, tiene un pin de salida de datos en serie (Q7 '), este pin se puede usar para conectar en cadena 2 o más 595 juntos para formar adaptadores de serie a paralelo que tienen 16 o más bits de ancho. Para este proyecto necesitaremos 2 de estos chips. El esquema también se puede modificar para que funcione con un solo 595 en modo de 4 bits, pero este tutorial no lo cubrirá.

Paso 4: cableado todo

Conectando todo
Conectando todo

Ahora que sabemos cómo funciona nuestro hardware, podemos conectarlo todo. En el esquema, vemos 2.595 chips conectados en cadena para formar una salida en paralelo de 16 bits. El chip inferior es en realidad el principal y el superior está conectado en cadena. Lo que vemos aquí es que el 595 inferior está accionando los pines de datos de la pantalla LCD en una configuración de 8 bits, el chip superior controla la señal RS y la luz de fondo encendiendo o apagando un transistor. Recuerde la * nota sobre la luz de fondo de la pantalla LCD en la página Conozca su hardware # 1, en el caso de que su pantalla LCD no tenga una resistencia de luz de fondo, no olvide agregar una en su circuito. En mi caso, las pantallas LCD ya vienen con una resistencia incorporada, así que me salté este paso. El contraste se aplica a través de un potenciómetro de 5K Ohm, un pin va a GND, el segundo va a VCC y el limpiador al pin Vo en la pantalla LCD. Los condensadores utilizados en las líneas VCC del LCD y del 595 son condensadores de desacoplamiento, están ahí para eliminar las interferencias. No son imprescindibles si está trabajando en una placa de pruebas, pero deben usarse en caso de que construya su propia versión de este circuito para usarlo fuera de las "condiciones de laboratorio". R5 y C9 en ese orden muy específico crean un retardo RC, lo que asegura que los datos en las salidas del 595 tengan tiempo de estabilizarse antes de que el pin Habilitar en la pantalla LCD se establezca en 'alto' y lea los datos. Q7 'del 595 inferior entra en la entrada de datos en serie del 595 en la parte superior, esto crea una conexión en cadena de 595 y, por lo tanto, una interfaz de 16 bits. Conectarse al Arduino es fácil. Usamos una configuración de 3 cables, usando los pines SPI de Arduino. Esto permite transferencias de datos muy rápidas, el envío de 2 bytes a la pantalla LCD suele tardar unos 8 microsegundos. Esto es muy rápido, y en realidad es mucho más rápido que el tiempo que le toma a la pantalla LCD procesar los datos, por lo que se necesita un retraso de 30 microsegundos entre cada escritura. Una gran ventaja de usar SPI es que los pines D11 y D13 se comparten con otros dispositivos SPI. Esto significa que si ya tiene otro componente que usa SPI, como un acelerómetro, esta solución solo usará un pin adicional para la señal de habilitación. En la siguiente página veremos el resultado. He construido una mochila en un tablero perfilado y me está funcionando muy bien hasta ahora.

Paso 5: Resultado + Biblioteca

El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca
El resultado + biblioteca

"Una imagen vale más que mil palabras", estoy de acuerdo con esta afirmación, así que aquí hay algunas imágenes del resultado final de este proyecto. Estas son imágenes del producto terminado, la vista de Fritzing PCB es el diseño de la placa de perfil que usé para construir mi mochila. Puede que le resulte útil si desea construir el suyo propio. Me gustó tanto que diseñé un PCB con DipTrace y pedí un lote de 10 PCB. Necesitaré 2 o 3 unidades para mí, pero el resto estará disponible por un precio simbólico cuando las reciba. Entonces, si alguien está interesado, hágamelo saber. * Editar: Los PCB están aquí y funcionan. Aquí está la galería de imágenes completa de este proyecto, incluidos los PCB reales. https://imgur.com/a/mUkpw#0 Por supuesto que no olvidé lo más importante, una biblioteca para usar este circuito. Es compatible con la biblioteca LiquidCrystal incluida con el IDE de Arduino, por lo que puede reemplazar fácilmente las declaraciones en la parte superior de su boceto y no tener que cambiar nada más en su boceto. También hay un boceto de ejemplo que demuestra cómo funciona cada función en la biblioteca, así que échale un vistazo.

Recomendado: