LCD 1602 I2C no funciona. Conecte la pantalla LCD LCM1602 con I2C a Arduino. Conecte el dispositivo I2C a Arduino
La tarifa se divorcia de tal manera que se puede triturar de inmediato con la pantalla LCD. La entrada sirve poder y líneas I2C. La placa inmediatamente instaló las resistencias de pull-up en las líneas SCL y SDA, el potenciómetro para ajustar el contraste y la potencia de la pantalla en sí.
El puente a la derecha enciende / desconecta la luz de fondo. A continuación, armado con un probador se elaboró \u200b\u200bla siguiente placa. Después de estudiar el módulo, fue revelado. P3 Gestiona la luz de fondo. Si se establece el puente, 1 se enciende en la luz de fondo y 0 se apaga. Cuando se retira el puente, la luz de fondo siempre se apaga. A continuación, se decidió complementar la biblioteca AXLIB para trabajar con la I2C Bus (implementación del software) y las funciones para administrar el microcircuito PCF8574. En pocas palabras, cómo funciona el módulo. Para mostrar un byte paralelo, para esto, debe enviar una dirección de microcircuito al bus I2C (es igual a 0x4e. También puede cambiar la dirección al cambiar de saltadores en la placa y cambiar el valor de tres descargas de direcciones más jóvenes), Luego, después de recibir ACK, se envía el byte de datos. Después de que el chip responda con ACK, el byte aparece en el puerto paralelo del chip. Para controlar la pantalla LCD, tomé las funciones de la biblioteca AXLIB y los redídala un poco para trabajar con el bus I2C. #Incluir.
Byte pcf8574_test (Addte Add) (Byte Preguntar \u003d ACK; ADD & \u003d 0xfe; i2c_start (); pregunte \u003d i2c_send_byte (agregue); i2c_stop (); Preguntar;) Se escribió la primera función para verificar la disponibilidad de un dispositivo en el bus. En principio, se puede utilizar para buscar cualquier dispositivo ubicado en el neumático. La función toma la dirección del dispositivo deseado y si responde, devuelve cero. Si no hay ningún dispositivo con esta dirección en el autobús, luego devolverá la unidad.
Byte pcf8574_byte_out (Byte Ask \u003d ACK; ADD & \u003d 0xfe; i2c_start (); pregunte \u003d i2c_send_byte (agregue); si (! Pregunte) pregunte \u003d i2c_send_byte (datos); i2c_stop (); Preguntar;) Esta característica ya está afilada limpia debajo de este chip. Como argumento, los bytes se transmiten para transferir al neumático y la dirección del microcircuito. La función primero solicitará un chip en la dirección y luego enviará bytes. Si el chip recibió un byte y respondió ACK, la función terminará de trabajar con el microcircuito y volverá a cero como un paquete exitoso de bytes. Un chip en este momento mostrará este byte en su puerto paralelo. De lo contrario, obtenemos unidades de reembolso y reembolso, la transferencia falló.
Byte PCF8574_str_out (byte * Datos, Byte Col, Byte Agregar) (Byte Ask \u003d ACK; ADD & \u003d 0xfe; i2c_start (); pregunte \u003d i2c_send_byte (agregar); para (byte i \u003d 0; i; i
Void com (byte com) (com | \u003d 0x08; // P3 por unidad, para no quemar iluminación PCF8574_BYTE_OUT (COM, ADD); // Salida de datos com | \u003d 0x04; // e una unidad PCF8574_BYTE_OUT (COM, ADD); // Salida de datos Com & \u003d 0xfb; // e en cero PCF8574_BYTE_OUT (COM, ADD); // Salida de datos
}
Esta función transmite solo los comandos de visualización. Desde aquí había una primera línea con un pliegue lógico del comando de 0x08. Este bjaka se necesita debido al hecho de que pasamos por encima de los bytes no directamente al puerto de la pantalla LCD, sino a través de nuestro repetidor. Es decir, si corrimos un byte, y luego debemos retirar solo un bit, luego le dará un designe al byte anterior y lo enviará al puerto nuevamente. Aquí hay tal confusión. La adición de 0x08 es necesaria para la retención permanente de la unidad en la tercera descarga. ¿Recuerdas sobre la luz de fondo? Esa es esta adición y se convierte en la luz de fondo. Después de llamar la función de transferencia de bus en el bus. Está escrito arriba. Luego pasamos por byte en autobús en el microcircuito. A continuación, debe colocarse en una unidad E que en realidad una adición lógica de bytes con 0x04 está activada. Después de cero, E. De esta manera, puede enviar cualquier comando a la pantalla solo pasando el comando en sí mismo como un argumento. Init void (void) (_delay_ms (30); // Pausa después de la fuente de alimentación Com (0x30); // Transición al modo de 4 bits _delay_us (40); // demora para ejecutar el comando Com (0x30); // Transición al modo de 4 bits _delay_us (40); // demora para ejecutar el comando Com (0x30); // Transición al modo de 4 bits _delay_us (40); // demora para ejecutar el comando Com (0x20); // Transición al modo de 4 bits _delay_us (40); // demora para ejecutar el comando Com (0x20); // Establecer parámetros Com (0x80); // Establecer parámetros Com (0x00); // Apagar la pantalla Com (0x80); // Apagar la pantalla Com (0x00); // limpiar la pantalla Com (0x10); // limpiar la pantalla Com (0x00); // Instalar el modo de entrada de datos Com (0x60); // Instalar el modo de entrada de datos Com (0x00); // Encienda la pantalla con el cursor seleccionado Com (0xc0); // Encienda la pantalla con el cursor seleccionado
}
Esta función solo se dedica a la inicialización de la pantalla. La secuencia de comandos se toma de un Datashet en la pantalla LCD. void char_out (datos de byte) (Byte Data_H \u003d ((Data y 0xF0) + 0x09); Byte Data_L \u003d ((Datos // Transfiriendo Senior 4 bits Data_h | \u003d 0x04; PCF8574_byte_out (Data_H, ADD); // Transferencia de senior 4 bits Data_h & \u003d 0xf9; PCF8574_byte_out (Data_H, ADD); // Transferencia de senior 4 bits PCF8574_BYTE_OUT (DATA_L, ADD); // Transferencia de Junior 4 Bit data_l | \u003d 0x04; PCF8574_BYTE_OUT (DATA_L, ADD); // Transferencia de Junior 4 Bit Data_l & \u003d 0xf9; PCF8574_BYTE_OUT (DATA_L, ADD); // Transferencia de Junior 4 Bit
}
Esta función transmite datos LCD de datos. Se realiza de la misma manera que los comandos, excepto que la transferencia del byte primero viene primero por el semi-núcleo superior, y luego el más joven. Y el resto es el mismo. Void str_out (byte * str) (mientras ((* str)! \u003d "\\ 0") (char_out (* str); str ++;)) Bueno, esta característica está limpia para transmitir la cadena de visualización. En realidad, no tiene nada que ver con nuestro tema.
Proyecto para atmelstudio 6.2
Alfabetizado 01.08.15 17:11
Se salta la coma. Derecha: "¡Hola, paz!" Y este dispositivo se afilan no solo para HD44780. Las resistencias de apriete se ponen en la parte del asistente. De acuerdo con la especificación, el registro de datos al controlador LCD continúa con la disminución de E. desde aquí, la primera función se simplifica: Void COM (BYTE COM) (COM | \u003d 0x08; / \u200b\u200b0x08; / \u200b\u200b0x08; / \u200b\u200billuminación PCF8574_byte_out (Com | 0x04, Agregar) // Salida de datos PCF8574_BYTE_OUT (COM, ADD); // E en cero) y el resto también son significativamente menos que menos. Por ejemplo, void char_out (datos de byte) será solo dos llamadas, y más aún sin variables adicionales. La inicialización LCD se realiza con violaciones de la especificación de tiempo.
Alexey 02.08.15 19:11
Debido a la falta de una coma, la pantalla no sufrirá. Este dispositivo se afilará precisamente en las pantallas con dicho controlador similar. Pero es el microcircuito que es un simple expansor de puertos. Sobre e estoy de acuerdo. Se necesitan variables adicionales. Si transmite el argumento de la función con algún tipo de acciones con la lógica, pueden producirse fallas. Ya se encontró con tal. La inicialización se realiza sin recortar violaciones. La documentación dice que se pone una pausa de 40 μs entre los equipos. Debido al hecho de que la transmisión va a lo largo del bus I2C, y que a su vez, el software y la velocidad lenta, los períodos se realizan con interés. Si todavía no haces demasiado perezoso, escribe tu propia opción y envíame. Lo publicaré. Al final, este sitio está destinado a una audiencia aficionada y a todos los que desean expresar su opinión y la visión de la vida de MK.
Alexey 06.08.15 09:14.
Tyamenga se ha agregado al inicializar la pantalla al observar el respetado "competente"
Dmitry 06/14/16 21:57
Hola Alexey. Puedes agregar una biblioteca para trabajar con PCF8574 en el generador de código.
Alexey 14.06.16 22:32
Lo pensare.))
rUSLAN 12/21/16 19:54
Alexey 21.12.16 21:53
Oh sí. Especialmente el código en la Asma. Arduries apreciarán la completa)))
PI.SY.
Incluso si no te lame en AFM, entonces el PROG está escrito en el controlador PIC. Para AVRS, esta es "¿Muy" información útil? Especialmente principiante))) No tengo nada en contra de la foto, pero incluso AFM en PIC y AVR es diferente. Y sobre los detalles del trabajo de la pantalla LCD, entonces puede buscar))) VERDADERO, todavía lo escribí bajo CVAVR, pero todos los equipos son desmantelados y descompuestos en los estantes. Pero en cualquier caso, decida dónde está más claro que dice))) El autor lo escribe, el lector elige.
Gek 04.01.17 12:52
"Dirección de microcircuito I2C (por defecto es 0x4e"
Las direcciones mayores de 4 bit son fijas,
El prefijo PCF8574 es 0100, y PCF8574A - 0111
Los 3 bits menores dependen del estado de las entradas del chip A2-A0. De forma predeterminada, los 3 puentes están abiertos, respectivamente, la dirección del microcircuito toma el valor 0111111.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3a
// 1 0 0 0x23 0x3b
// 0 1 1 0x24 0x3c
// 0 1 0 0x25 0x3d
// 0 0 1 0x26 0x3e
// 0 0 0 0x27 0x3f
Alexey 04.01.17 14:27
Algo que confundiste.
Extracto de la documentación para el microcircuito.
0b01001110 Esto es 0x4e
Así que todo está aquí. Y si necesita cambiar la dirección, solo debe cambiarlo para definirlo.
Yuri 14.12.17 21:26
¡Buenos días! Y aún puede codificar la función LCDGotoxy y LCDClear para funcionar con el adaptador en PCF8574.
Alexander 20.05.18 18:14
¡Buenos días! ¿Cómo se retira el texto ruso?
Alexey 20.05.18 23:04
Esta es la pantalla doméstica de la derretida. Él está en memoria de Cirílico.
Alexander 21.05.18 04:55
¡Buenos días! ¡Escribo como tienes en el proyecto para ATMELSTUDIO 6.2 "YPґBET MґP!" Que muestra normal
Y si escribes "¡Hola el mundo!" Muestra tonterías todo. tengo dos
Opciones de pantallas de una cosida cirílica. Segundo chino.
Alexey 21.05.18 09:22
Hubiera escrito el programa de prueba para iniciar un programa de prueba. Cambie a través de toda memoria con visualización de caracteres y sus direcciones. Y luego para salir del problema. Lo más probable es que la tabla de caracteres no coincida con la tabla ASCII.
Andrey 03.09.18 08:32
¡Buenas tardes!
¿Y no puedes lanzar un esquema para Proteus?
Andrey 03.09.18 10:22
¿O nadie revisó en proteuse?
Andrei 03.09.18 10:56.
Usado main_init
PAUL 30.05.19 23:35
Cosa curiosa, la dirección de visualización 0x4e, y si la misma pantalla está conectada a Arduux, entonces la dirección 0x27
PAUL 31.05.19 11:04.
¡Muchas gracias por tu trabajo! Revolví todo el internet, ninguno de los ejemplos anteriores, excepto por los tuyos ganados. El único en el archivo del proyecto en la función de inicialización de pantalla no se detalla el retardo _delay_, y no funciona en consecuencia
Alexey 01.06.19 09:52
Bueno, este es más proyecto de demostración. Según una buena, la biblioteca Axlib es reescribir, pero teniendo en cuenta el hecho de que STM32 y STM8 mueven los pasos de siete millas, ya que no se encuentra ningún sentido en AVR.
Paul 05.06.19 12:57
STM no tiene recintos de inmersión, es más difícil hacer tableros de circuitos impresos. Para mis proyectos, AVR presenta suficiente con un margen, en un ATMEGA 8, puede encajar mucho
Alexey 05.06.19 15:20
Sí, pero cuánto es ATMEGA8 y STM8S003))))
Dmitry 07.06.19 00:41.
Hola, Alexey.
Dígame, por favor, ¿cómo leer del estado PCF8574 del puerto?
Quiero hacer un bloque externo, 8 GPIO a través del bus I2C, Sam.
Dmitry 07.06.19 17:56
Me estoy respondiendo
La función devuelve bytes: el estado de los puertos de microcircuito
Uint8_t pcf8574_byte_rcv (uint8_t addr)
{
Uint8_t pregunte \u003d ack;
Addr | \u003d 0b01; // Leer.
Uint8_t data \u003d 0;
i2c_start ();
Preguntar \u003d i2c_send_byte (ADDR);
Si (! Pregunte) DATOS \u003d I2C_READ_BYTE (NACK);
i2c_stop ();
Datos de devolución;
}
Paul 07.06.19 20:37
¿Cuántos costos, 150 rublos, al precio del Relyushka en general), y cómo divorcie las tarifas bajo STM? Lut no confiable, CNC Freser no está seguro de que tomará (no lo intentará)
- El módulo FC-113 se realiza sobre la base del chip PCF8574T, que es un registro de cambio de 8 bits: el "Expansor" de las salidas para el neumático serial del I2C. En la figura del microcircuito se designa DD1.
- R1 es una resistencia rápida para ajustar el contraste de la pantalla LCD.
- Jumper J1 se utiliza para encender la luz de fondo de la pantalla.
- Conclusiones 1 ... 16 se utilizan para conectar el módulo a las salidas de la pantalla LCD.
- Las plataformas de contacto A1 ... A3 son necesarias para cambiar la dirección I2C del dispositivo. Asientos de los puentes correspondientes, puede cambiar la dirección del dispositivo. La tabla muestra la conformidad de las direcciones y los puentes: "0" corresponde a la rotura de la cadena, "1": el puente ajustable. De forma predeterminada, los 3 saltadores abiertos y la dirección del dispositivo 0x27..
2 Plan de conexión de pantalla LCD Arduinosegún I2C.
Conexión de un módulo a Arduino se realiza estándar para el bus I2C: la salida SDA del módulo está conectada al puerto analógico A4, la salida SCL al puerto analógico de A5 Arduino. El módulo está alimentado por voltaje +5 V de Arduino. El módulo en sí está conectado por las conclusiones 1 ... 16 con las conclusiones correspondientes de 1 ... 16 en la pantalla LCD.
3 Biblioteca para el trabajosegún I2C.
Ahora necesita una biblioteca para trabajar con la pantalla LCD a través de la interfaz I2C. Puede usar, por ejemplo, este (enlace en la fila "Descargar código de muestra y biblioteca").
Archivo descargado Liquidcrystal_i2cv1-1.rar. Descomprimir en la carpeta \\ Bibliotecas \\que se encuentra en el directorio de Arduino IDE.
La biblioteca admite un conjunto de funciones estándar para las pantallas LCD:
Función | Propósito |
---|---|
Cristal liquido () | crea una variable de tipo líquido de líquido y acepta la configuración de la pantalla (números PIN); |
empezar () | inicialización de la pantalla LCD, configuración de parámetros (número de filas y símbolos); |
claro () | limpiando la pantalla y devuelva el cursor a la posición inicial; |
casa () | devolver el cursor a la posición inicial; |
setcursor () | instalación del cursor a la posición especificada; |
escribir () | muestra un símbolo en la pantalla LCD; |
impresión () | muestra el texto en la pantalla LCD; |
cursor () | muestra el cursor, es decir,. Subraya en el siguiente asiento de símbolo; |
nocursor () | esconde el cursor; |
parpadear () | cursor intermitente; |
noblink () | cancelar parpadeando; |
sin pantalla () | apague la pantalla mientras guarda toda la información mostrada; |
mONITOR () | encienda la pantalla mientras guarda toda la información mostrada; |
scrolldisplayleft () | desplazando el contenido de la pantalla en la primera posición a la izquierda; |
scrolldisplayright () | desplazando el contenido de la pantalla en 1 posición a la derecha; |
desplazamiento automático () | inclusión de auto-contratación; |
nOAUTOSCROLLO () | apagando el abridor automático; |
de izquierda a derecha () | especifica la dirección del texto de izquierda a derecha; |
de derecha a izquierda () | la dirección del texto a la derecha a la izquierda; |
createchar () | crea un símbolo personalizado para la pantalla LCD. |
4 Boceto para la salida de textoen la pantalla LCD a través de I2C Bus
Abramos la muestra: Muestras de archivo LiquidCrystal_I2C CUCHOSCHARS Y él lo modifica un poco. Retiraremos un mensaje al final del cual será el símbolo intermitente. En los comentarios al Código, se comentan todos los matices de boceto.
#Incluir.
Por cierto, los personajes grabados por el equipo. lcd.createchar ();, permanecer en la pantalla de la pantalla incluso después de apagar, porque Grabado en la MFU de 1602.
5 Creando tus propios personajespara pantalla LCD
Poco más detalles, considere el problema de crear sus propios personajes para las pantallas LCD. Cada símbolo en la pantalla consta de 35 puntos: 5 de ancho y 7 de altura (+1 cadena de copia de seguridad para subrayar). En la Línea 6 del boceto dado, establecemos una matriz de 7 números: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Transformamos los números de 16 riquezas en binario: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Estos números no son más que una máscara de bits para cada una de las 7 líneas del símbolo, donde "0" denota un punto de luz, y "1" - oscuro. Por ejemplo, un símbolo de corazón especificado en forma de una máscara de bit se verá en la pantalla como se muestra en la figura.
6 Pantalla LCD de oficinaen el bus i2c
Drive Boceto en Arduino. En la pantalla aparecerá la inscripción con el cursor parpadeante al final.
7 Que es por"neumático I2C.
Como bonificación, considere un diagrama temporal de la producción de los caracteres latinos "A", "B" y "C" en la pantalla LCD. Estos caracteres están disponibles en la ROM de pantalla y se muestran simplemente por la transmisión de su dirección. El diagrama se elimina de las conclusiones RS, RW, E, D4, D5, D6 y D7 Pantalla, es decir, Ya, después del convertidor FC-113 "I2C paralelo Bus". Podemos decir que nos sumergimos un poco "más profundo" en el "hierro".
Diagrama temporal de la producción de caracteres latinos "A", "B" y "C" en la pantalla LCD 1602
El diagrama muestra que los caracteres que están en la ROM DVLD (consulte la hoja de datos de la página 9.11, la referencia a continuación) se transmite por dos GHEE, la primera de la cual define la tabla de la columna de la tabla, y el segundo es el número de línea. Al mismo tiempo, los datos "arrebatadores" en la parte delantera. MI. (Habilitar), y linea Rs. (Registrarse Select, Registrar Selection) está en un estado de unidad lógica, lo que significa transferencia de datos. El estado de estado bajo de la línea RS significa la transmisión de instrucciones que vemos antes de la transferencia de cada símbolo. En este caso, el código de la instrucción de retorno del carro se transmite a la pantalla POSICIÓN (0, 0) LCD, ya que también puede averiguarlo estudiando la descripción técnica de la pantalla.
Y un ejemplo mas. En este momento, el diagrama muestra la salida del símbolo "corazón" en la pantalla LCD.
De nuevo, los dos primeros impulsos. Permitir Instrucciones compatibles Casa () (0000 0010 2) - retorno del carro a la posición (0; 0), y los dos dos: la salida en la pantalla LCD almacenada en la celda de memoria 3 10 (0000 0011 2) el símbolo "corazón" (instrucción lcd.createchar (3, corazón); Bosquejo).
En este artículo, le diré cómo usar el módulo de interfaz I2C para controlar la pantalla LCD (2 × 16 / 20x4) utilizando Arduino. Este módulo le permite reducir la cantidad de salidas de controlador utilizadas, en lugar de conexiones de 8 o 4 bits, solo se requieren 2 salidas (SDA y SCL).
Especificaciones técnicas
Muestra Soporte: LCD 16 × 02/20 × 04
Opcional: Ajuste de contraste
Voltaje de suministro. 5v.
Interfaz: I2C.
Dimensiones: 54 mm x 19 mm x 15 mm
Descripción general del módulo de interfaz I2C
Dado que el número de contactos en los controladores Arduino es limitado y, con frecuencia, cuando se usa varios sensores y módulos, terminan, es necesario guardarlos, este módulo se ha desarrollado para este caso, se puede implementar utilizando dos contactos (SDA y SCL) .
Ahora un poco sobre el módulo en sí, se basa en el chip PCF8574T. Se requieren resistores R8 (4.7kom) y R9 (4.7kom) para suspender las líneas SDA y SCL, idealmente, al conectar dos o más dispositivos a través del bus I2C, debe usar un suspenso en un dispositivo, luego escribiré por qué. La placa proporciona tres saltadores (según el esquema, se ve que las líneas A0, A1, A2 se aprienden para poder a través de las resistencias R4, R5, R6), son necesarias para cambiar la dirección del dispositivo, de las 8 opciones. Cambiar el direccionamiento nos da la capacidad de conectar hasta ocho dispositivos a través del bus IC2 con el microcircuito PCF8574T, las direcciones se muestran en la figura (Dirección de dispositivo predeterminada 0x27). Además, el módulo está equipado con el potenciómetro R11 con su ayuda, puede cambiar el contraste de la pantalla LCD.
Para conectar, se ubican tres grupos de contactos en el módulo:
Primer grupo:
Scl: tactline (reloj serie)
SDA: Línea de datos (serie serie DFTA)
VCC: "+" comida
GND: "-" Nutrición
Segundo grupo:
Vss: "-" comida
VDD: "+" comida
VO: Salida de gestión de contraste
RS: Selección de registro
RW: Lectura / escritura (Modo de grabación cuando está conectado a la Tierra)
E: Habilitar (puerta abajo)
DB0-DB3: Bits de interfaz junior
DB4-DB7: Bits de interfaz senior
A: "+" de la luz de fondo
K: "-" Falta de retroiluminación de energía
Tercer grupo: (se instala el puente predeterminado)
VCC:
A de LCD:
Conectar a Arduino.
Detalles requeridos:
Arduino Uno R3 X 1 PC.
Pantalla LCD 1602A (2 × 16, 5V, azul) x 1 pieza
Módulo de interfaz I2C, IIC, TWI para LCD X 1 PC.
Dupont de alambre, 2.54 mm, 20 cm, F-M (hembra - macho) x 1 PC.
Cable USB 2.0 A-B X 1 pieza
Conexión:
En primer lugar, soldamos el módulo I2C a la pantalla LCD, debe conectar la pantalla a Arduino Uno. Para hacer esto, use el cableado DUPONT, conectando la tabla a continuación.
Para mayor claridad, daré otro esquema.
Para este experimento, debe descargar e instalar la biblioteca "LiquidCrystal_I2C". Luego, copie y pegue este ejemplo de código en la ventana del programa IDE Arduino y descargue al controlador.
/ * Probado en Arduino IDE 1.6.11 Fecha de prueba 09/15/2016. * / #Include.
Probado en Arduino IDE 1.6.11 Fecha de prueba 09/15/2016 #Incluir. #Incluir. Liquidcrystal_i2c LCD (0x27, 16, 2); // Establezca la dirección y el tamaño de la pantalla configuración de vacío () lCD. en eso (); // Inicialización LCD. lCD. retroiluminación (); // enciende la luz de fondo lCD. Imprimir ("Hola, mundo"); // decirle texto lCD. Imprimir ("www.syt"); // decirle texto bucle vacío () |
Si lo hiciste correctamente, pero no hay caracteres en la pantalla, intente aumentar el contraste por el potenciómetro.
Enlaces
Descargar la biblioteca
Documentación en el microcircuito.
En este artículo, le diré cómo usar el módulo de interfaz I2C para controlar la pantalla LCD (2 × 16 / 20x4) utilizando Arduino. Este módulo le permite reducir la cantidad de salidas de controlador utilizadas, en lugar de conexiones de 8 o 4 bits, solo se requieren 2 salidas (SDA y SCL).
Especificaciones técnicas
Muestra Soporte: LCD 16 × 02/20 × 04
Opcional: Ajuste de contraste
Voltaje de suministro. 5v.
Interfaz: I2C.
Dimensiones: 54 mm x 19 mm x 15 mm
Descripción general del módulo de interfaz I2C
Dado que el número de contactos en los controladores Arduino es limitado y, con frecuencia, cuando se usa varios sensores y módulos, terminan, es necesario guardarlos, este módulo se ha desarrollado para este caso, se puede implementar utilizando dos contactos (SDA y SCL) .
Ahora un poco sobre el módulo en sí, se basa en el chip PCF8574T. Se requieren resistores R8 (4.7kom) y R9 (4.7kom) para suspender las líneas SDA y SCL, idealmente, al conectar dos o más dispositivos a través del bus I2C, debe usar un suspenso en un dispositivo, luego escribiré por qué. La placa proporciona tres saltadores (según el esquema, se ve que las líneas A0, A1, A2 se aprienden para poder a través de las resistencias R4, R5, R6), son necesarias para cambiar la dirección del dispositivo, de las 8 opciones. Cambiar el direccionamiento nos da la capacidad de conectar hasta ocho dispositivos a través del bus IC2 con el microcircuito PCF8574T, las direcciones se muestran en la figura (Dirección de dispositivo predeterminada 0x27). Además, el módulo está equipado con el potenciómetro R11 con su ayuda, puede cambiar el contraste de la pantalla LCD.
Para conectar, se ubican tres grupos de contactos en el módulo:
Primer grupo:
Scl: tactline (reloj serie)
SDA: Línea de datos (serie serie DFTA)
VCC: "+" comida
GND: "-" Nutrición
Segundo grupo:
Vss: "-" comida
VDD: "+" comida
VO: Salida de gestión de contraste
RS: Selección de registro
RW: Lectura / escritura (Modo de grabación cuando está conectado a la Tierra)
E: Habilitar (puerta abajo)
DB0-DB3: Bits de interfaz junior
DB4-DB7: Bits de interfaz senior
A: "+" de la luz de fondo
K: "-" Falta de retroiluminación de energía
Tercer grupo: (se instala el puente predeterminado)
VCC:
A de LCD:
Conectar a Arduino.
Detalles requeridos:
Arduino Uno R3 X 1 PC.
Pantalla LCD 1602A (2 × 16, 5V, azul) x 1 pieza
Módulo de interfaz I2C, IIC, TWI para LCD X 1 PC.
Dupont de alambre, 2.54 mm, 20 cm, F-M (hembra - macho) x 1 PC.
Cable USB 2.0 A-B X 1 pieza
Conexión:
En primer lugar, soldamos el módulo I2C a la pantalla LCD, debe conectar la pantalla a Arduino Uno. Para hacer esto, use el cableado DUPONT, conectando la tabla a continuación.
Para mayor claridad, daré otro esquema.
Para este experimento, debe descargar e instalar la biblioteca "LiquidCrystal_I2C". Luego, copie y pegue este ejemplo de código en la ventana del programa IDE Arduino y descargue al controlador.
/ * Probado en Arduino IDE 1.6.11 Fecha de prueba 09/15/2016. * / #Include.
Probado en Arduino IDE 1.6.11 Fecha de prueba 09/15/2016 #Incluir. #Incluir. Liquidcrystal_i2c LCD (0x27, 16, 2); // Establezca la dirección y el tamaño de la pantalla configuración de vacío () lCD. en eso (); // Inicialización LCD. lCD. retroiluminación (); // enciende la luz de fondo lCD. Imprimir ("Hola, mundo"); // decirle texto lCD. Imprimir ("www.robotchip.ru"); // decirle texto bucle vacío () |
Programa de descarga
Si lo hiciste correctamente, pero no hay caracteres en la pantalla, intente aumentar el contraste por el potenciómetro.
Enlaces
Descargar Library LiquidCrystal_I2C.
Documentación en el microcircuito.
El módulo LCD I2C le permite conectar la pantalla de caracteres a la placa arduino de todos los dos cables de señal.
Componentes utilizados (Compre en China):
. Cargo de gestión
. Conexión de cables
Especificaciones básicas:
Pantalla: Símbolo 16x02 o 20x04
. Illuminación: azul con símbolos blancos.
. Contraste: Potenciómetro configurado
. Voltaje de suministro: 5V
. Interfaz: I2C.
. Dirección I2C: 0x27
. Tamaños: 82mm x 35mm x 18mm
Conectar a Arduino.
El módulo está equipado con un conector estándar de cuatro pines de 2.54 mm.
SCL.: Reloj serie Serial Reloj
Sda: Línea de datos secuencial (datos en serie)
VCC.: "+" potencia
GND.: "-" Energía
Las conclusiones son responsables de la interfaz I2C en las juntas arduino basadas en diferentes controladores diferentes.
Para trabajar con este módulo, debe instalar la biblioteca liquidcrystal_i2c1602v1
Descargue, desempaquete y tire la carpeta de las bibliotecas en la carpeta Arduino. En el caso, en el momento de agregar la biblioteca, Arduino IDE ha estado abierto, reiniciando el entorno.
Ve directamente al boceto. En este ejemplo, retire el estándar "¡Hola, mundo!" Y para la dirección de nuestra comunidad.
código del programa de muestra:
#Incluir.Creando tus propios personajes
Con la conclusión del texto descubierto, las letras del alfabeto inglés se cosen en la memoria del controlador dentro de la pantalla y no hay problemas con ellos. Pero, ¿qué pasa si el símbolo deseado en el controlador de memoria no es?
No hay problemas, el símbolo deseado se puede hacer manualmente. Este método es parcial, una restricción de 7 caracteres ayudará a resolver el problema de salida.
La celda, en las pantallas en consideración, tiene una resolución de 5x8 puntos. Todo lo que la tarea de crear un símbolo se reduce para escribir una máscara de bits y organizar una sola en él en lugares donde debería haber un punto y noliki donde no hay.
En el ejemplo anterior, dibuja un smiley.
código del programa de muestra:
// probado en Arduino IDE 1.0.5 // añadir las bibliotecas necesarias #Incluir.Programa para una fácil creación de personajes.
En los comentarios, el participante de la comunidad arrojó el enlace al generador de símbolos.