Interfaz LCD I2C con el STM32F103C8T6 | Tutorial de LCD I2C de STM32
En este tutorial, te presentaré cómo puedes conectar una pantalla LCD I2C a la MCU STM32F103C8T6 basada principalmente en la placa STM32 Blue Capsule. Si tienes en mente el tutorial "Interfaz de la pantalla LCD 16X2 con el STM32F103C8T6", ya te he presentado formas sencillas de conectar la pantalla LCD con el STM32 y he mostrado alguna información. Esta tarea puede ser interesante, ya que utilizaré la comunicación I2C para hablar con la pantalla LCD de 16×2.
[adsense1]
Introducción
Las pequeñas pantallas de caracteres alfanuméricos, como la popularísima pantalla LCD de 16×2, son pequeñas piezas muy útiles, ya que deben utilizarse para mostrar alguna información vital asociada a tu misión. Los datos que se muestran en la pantalla LCD pueden estar asociados a la propia misión, como un estudio de un sensor de temperatura, o a conocimientos particulares, como mensajes de depuración o códigos de error.
He utilizado el módulo LCD 16×2 en varias de mis tareas con todo tipo de microcontroladores como el 8051, el LPC2148 basado principalmente en ARM7, el ATmega8, el Arduino UNO y el PIC.
Todo esto está muy bien, pero una pequeña desventaja de la pantalla LCD de 16×2 e incluso de la pantalla LCD de 20×4 es que se necesitan bastantes pines para interactuar con el microcontrolador. Incluso en el modo de conocimiento de 4 bits, la pantalla LCD necesita al menos 6 clavijas del microcontrolador (4 para las clavijas de información, una para la clavija de elección de registro y una para la clavija de permiso, suponiendo que la operación sea de escritura, es decir, que R/W esté conectado a GND).
Utilizar seis pines del microcontrolador para conectar con un programa de personalidad no parece tan vital, pero cuando tu misión es un poco avanzada, entonces cada pin del MCU parece esencial.
[adsense2]
¿Cómo conectar la pantalla LCD I2C con el STM32F103C8T6?
Aquí viene al rescate el CI expansor de GPIOs PCF8574. Viene como un módulo dedicado para interconectar la pantalla LCD de 16×2 con todas las campanas y silbatos, es decir, POT de 10KΩ para el ajuste de la distinción de la pantalla LCD, resistencias de pull-up para la comunicación I2C, pines I2C para la conexión con el microcontrolador, etc.
Sólo tienes que enchufar este módulo detrás de la pantalla LCD de 16×6 y unir los pines I2C a los correspondientes pines I2C de la placa STM32 Blue Capsule. Es así de fácil.
Módulo PCF8574
Ya mencioné el CI expansor de GPIOs PCF8574 en este tutorial "Interfaz del PCF8574 con Arduino". Así que no puedo entrar en los puntos principales, sino sólo en una visión general transitoria.
El PCF8574 es un CI de 16 pines que funciona como expansor de I2C a IO Paralela de 8 bits. Lo que significa que, utilizando la comunicación I2C del microcontrolador, puedes mejorar con éxito el conjunto de pines IO de tu microcontrolador por 8.
Un factor vital que hay que tener en cuenta a la hora de comprar un Módulo PCF8574 es que hay dos tipos de ellos disponibles. Uno de ellos es un Módulo Expansor de E/S genérico, que puede utilizarse como, propiamente, un expansor de E/S.
El tipo opuesto de módulo también puede basarse principalmente en el CI PCF8574, pero está diseñado de tal manera que sólo puede utilizarse con LCD Show, es decir, con LCDs de 16×2 y hasta 20×4. Por lo tanto, para esta misión, es importante seleccionar este último porque tiene todas las piezas y conexiones necesarias asociadas a la interconexión de una pantalla LCD 16X2.
Piezas necesarias
- STM32F103C8T6 MCU STM32 Blue Capsule Board
- PCF8574 Módulo IC Conector LCD basado principalmente en
- pantalla LCD 16×2
- Cableado
- Convertidor de módulos USB a UART (si se programa a través de UART)
Diagrama del circuito
La siguiente imagen muestra el diagrama del circuito de la Interfaz I2C con la MCU STM32F103C8T6 basada principalmente en la placa STM32 Blue Capsule.
Conexiones definidas
Las conexiones para esta misión son bastante sencillas. Sólo tienes que conectar el módulo PCF8574 al LCD de 16×2. Comprueba los pines de cada uno de los LCD y del Módulo PCF8574 antes de conectarlos. Si se conectan con precisión, los pines I2C del Módulo PCF8574 pueden ser simplemente accesibles en el propio programa.
Ahora, une el pin SDA del Módulo PCF8574 con el PB7 del STM32 y une el pin SCL del módulo con el PB6 del STM32. Une los pines VCC y GND del Módulo PCF8574 a 5V y GND. Así se completan las conexiones necesarias.
Descubrir el cable esclavo del módulo PCF8574
Antes de programar el STM32 para la interconexión de la pantalla LCD I2C, tenemos que calcular el mando esclavo del módulo PCF8574. Dado que el Manejador Esclavo en la Comunicación I2C es esencial, es importante entenderlo de antemano.
Puedes calcular el mango esclavo consultando la hoja informativa del CI PCF8574 y además el esquema del Módulo LCD I2C PCF8574. Si crees que es un proceso tedioso, no te preocupes. Puede haber otro método para calcular el cable esclavo utilizando el siguiente código. Este código calculará el cable esclavo y lo mostrará en el Monitor Serial.
Código
#abrazo
configuración inválida()
{
Wire.start();
Serial.start(9600);
while (!Serial);
}
bucle vacío()
{
byte de error, asa;
en los dispositivos I2CD;
Serial.println("Buscando aparatos I2C...");
I2CDevices = 0;
for (handle = 1; handle < 127; handle++ )
{
Wire.beginTransmission(handle);
error = Wire.endTransmission();
si (error == 0)
{
Serial.print("Máquina I2C descubierta en el mango 0x");
si (asa < 16)
Serial.print("0″);
Serial.print(mango, HEX);
Serial.println(" !");
I2CDevices++;
}
else if (error == 4)
{
Serial.print("Error desconocido en el manejador 0x");
si (asa < 16)
Serial.print("0");
Serial.println(mango, HEX);
}
}
si (I2CDevices == 0)
Serial.println("No se han encontrado aparatos I2C");
si no
Serial.println("****n");
retraso(5000);
}
En mi caso, el cable esclavo es el 0X3F. Así que tengo que hacer uso de este cable esclavo dentro del Programa necesario para el STM32.
Programación del STM32 para la pantalla LCD I2C
Después de interconectar la pantalla LCD I2C con la MCU STM32F103C8T6, ya estamos preparados para poner por escrito este sistema. Existe una biblioteca particular conocida como "LiquidCrystal_I2C" desarrollada para este módulo. Puedes obtener esta biblioteca en este hipervínculo. Extrae el contenido del zip descargado y colócalo dentro de la carpeta de bibliotecas de tu Arduino nativo configurado.
Utiliza el cable esclavo que obtuvimos del código anterior e inicializa el módulo LCD con el mismo. Además, especifica la variedad de caracteres por línea y la variedad de líneas del LCD, es decir, 16 y un par de caracteres.
Utilizando la función "imprimir" de la biblioteca, puedes mostrar los caracteres que necesites en la pantalla LCD.
Código
#abrazo
#abrazo
// Establece el manejador de la pantalla LCD en 0x3F para un espectáculo de 16 caracteres y un par de líneas
Pantalla de cristal líquido_I2C(0x3F, 16, 2);
ajuste inválido()
{
pantalla de cristal líquido.start();
pantalla de cristal líquido.backlight();
pantalla de cristal líquido.setCursor(0,0);
pantalla de cristal líquido.print(" LCD I2C con ");
pantalla de cristal líquido.setCursor(0,1);
pantalla de cristal líquido.print(" STM32F103C8T6 ");
}
bucle vacío()
{
// No hagas nada aquí...
}
Conclusión
Aquí se aplica una misión sencilla para demostrar cómo se puede conectar la pantalla LCD I2C a la MCU STM32F103C8T6.
Si quieres conocer otros artículos parecidos a Interfaz LCD I2C con el STM32F103C8T6 | Tutorial de LCD I2C de STM32 puedes visitar la categoría Electricidad Básica.
Deja una respuesta
¡Más Contenido!