- Materiales necesarios
- Diagrama de circuito y conexión
- Programando STM32 para LCD usando Arduino
- Carga del programa en STM32F103C8T6
Para cualquier proyecto de microcontrolador, la interconexión de una unidad de visualización haría que el proyecto fuera mucho más fácil y atractivo para que el usuario interactuara. La unidad de visualización más utilizada para los microcontroladores son las pantallas alfanuméricas de 16 × 2. Estos tipos de pantallas no solo son útiles para mostrar información vital al usuario, sino que también pueden actuar como una herramienta de depuración durante la etapa de desarrollo inicial del proyecto. Entonces, en este tutorial aprenderemos cómo podemos conectar una pantalla LCD de 16 × 2 con la placa de desarrollo STM32F103C8T6 STM32 y programarla usando el IDE de Arduino. Para las personas que están familiarizadas con Arduino, este tutorial será pan comido ya que ambos son muy similares. Además, para obtener más información sobre STM32 Blue Pill Board, siga nuestro tutorial de introducción.
Materiales necesarios
- Tablero de desarrollo de píldora azul STM32
- Pantalla LCD de 16 × 2
- Programador FTDI
- Conexión de cables
- LCD
Breve introducción a la pantalla LCD de matriz de puntos de 16 × 2
Como se dijo anteriormente, Energia IDE proporciona una hermosa biblioteca que hace que la interfaz sea muy fácil y, por lo tanto, no es obligatorio saber nada sobre el módulo de visualización. Pero, ¿no sería interesante mostrar lo que estamos usando?
El nombre 16 × 2 implica que la pantalla tiene 16 columnas y 2 filas, que juntas (16 * 2) forman 32 cajas. Una sola caja se vería así en la imagen de abajo
Un solo cuadro tiene 40 píxeles (puntos) con un orden de matriz de 5 filas y 8 columnas, estos 40 píxeles juntos forman un carácter. Del mismo modo, se pueden mostrar 32 caracteres utilizando todos los cuadros. Ahora echemos un vistazo a los pines.
La pantalla LCD tiene un total de 16 pines, como se muestra arriba, se pueden clasificar en cuatro grupos como sigue
Pines de fuente (1, 2 y 3): estos pines generan el nivel de potencia y contraste de la pantalla
Pines de control (4, 5 y 6): estos pines configuran / controlan los registros en el IC de interfaz LCD (más esto se puede encontrar en el enlace a continuación)
Pines de datos / comando (7 a 14): estos pines proporcionan los datos de qué información debe mostrarse en la pantalla LCD.
Pines de LED (15 y 16): estos pines se utilizan para iluminar la luz de fondo de la pantalla LCD si es necesario (opcional).
De todos estos 16 pines, solo se deben usar 10 pines obligatorios para el correcto funcionamiento de la pantalla LCD. Si desea obtener más información sobre estas pantallas LCD, consulte este artículo sobre pantallas LCD de 16x2.
Diagrama de circuito y conexión
A continuación se muestra el diagrama de circuito para conectar la pantalla LCD de matriz de puntos 16 * 2 con la placa de píldora azul STM32F103C8T6 STM32. Está hecho usando el software Fritzing.
Como puede ver, la conexión completa se realiza a través de una placa de pruebas. Necesitamos una placa FTDI para programar el Microcontrolador STM32. De manera similar a nuestro tutorial anterior, hemos conectado la placa FTDI a STM32, el Vcc y el pin de tierra del programador FDTI están conectados al pin de 5V y al pin de tierra del STM32 respectivamente. Esto se utiliza para alimentar la placa STM32 y la pantalla LCD, ya que ambos pueden aceptar can + 5V. El pin Rx y Tx de la placa FTDI se conecta al pin A9 y A10 del STM32 para que podamos programar la placa directamente sin el cargador de arranque.
A continuación, la pantalla LCD debe conectarse a la placa STM32. Vamos a usar la pantalla LCD en modo de 4 bits, por lo que tenemos que conectar los pines de 4 bits de datos (DB4 a DB7) y los dos pines de control (RS y EN) a la placa STM32 como se muestra en el circuito de interfaz LCD STM32F103C8T6 diagrama de arriba. Además, la tabla siguiente le ayudará a realizar la conexión.
Pin LCD No. |
Nombre del pin LCD |
Nombre de pin STM32 |
1 |
Tierra (Gnd) |
Tierra (G) |
2 |
VCC |
5V |
3 |
VEE |
Tierra (G) |
4 |
Registro Seleccionar (RS) |
PB11 |
5 |
Lectura / escritura (RW) |
Tierra (G) |
6 |
Habilitar (EN) |
PB10 |
7 |
Bit de datos 0 (DB0) |
Sin conexión (NC) |
8 |
Bit de datos 1 (DB1) |
Sin conexión (NC) |
9 |
Bit de datos 2 (DB2) |
Sin conexión (NC) |
10 |
Bit de datos 3 (DB3) |
Sin conexión (NC) |
11 |
Bit de datos 4 (DB4) |
PB0 |
12 |
Bit de datos 5 (DB5) |
PB1 |
13 |
Bit de datos 6 (DB6) |
PC13 |
14 |
Bit de datos 7 (DB7) |
PC14 |
15 |
LED positivo |
5V |
dieciséis |
LED negativo |
Tierra (G) |
Una vez realizadas las conexiones podemos abrir el IDE de Arduino y empezar a programarlo.
Programando STM32 para LCD usando Arduino
Como se dijo en este tutorial, usaremos el IDE de Arduino para programar nuestro microcontrolador STM32. Pero, el Arduino IDE por defecto no tendrá la placa STM32 instalada, por lo tanto, tenemos que descargar un paquete y preparar el Arduino IDE para el mismo. Esto es exactamente lo que hicimos en nuestro tutorial anterior comenzando con STM32F103C8T6 usando Arduino IDE. Entonces, si no ha instalado los paquetes requeridos, recurra a este tutorial y sígalo antes de continuar aquí.
Una vez instalada la placa STM32 en el IDE de Arduino, podemos empezar a programar. El programa es muy similar al de una placa Arduino, lo único que cambiará son los nombres de los pines ya que las notaciones son diferentes para STM32 y Arduino. El programa completo se encuentra al final de esta página, pero para explicar el programa lo he dividido en pequeños fragmentos significativos como se muestra a continuación.
Una ventaja notable de usar Arduino para programar nuestros microcontroladores es que Arduino tiene bibliotecas listas para usar para casi todos los sensores y actuadores famosos. Así que aquí comenzamos nuestro programa incluyendo la biblioteca LCD que facilita mucho la programación.
#incluir
En la siguiente línea tenemos que especificar a qué pines GPIO del STM32 hemos conectado las líneas de control y datos de la pantalla LCD. Para hacer esto, tenemos que verificar nuestro hardware, para mayor facilidad, también puede consultar la tabla que se encuentra en la parte superior, que enumera los nombres de los pines de la pantalla LCD frente al pin GPIO de STM32. Después de mencionar los pines, podemos inicializar la pantalla LCD usando la función LiquidCrystal . También nombramos nuestra pantalla LCD como " lcd " como se muestra a continuación.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // mencione los nombres de los pines con LCD está conectado a LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Inicializar la pantalla LCD
A continuación, ingresamos a la función de configuración . Aquí primero mencionamos qué tipo de LCD estamos usando. Como es una pantalla LCD de 16 * 2, usamos la línea lcd.begin (16,2). El código dentro de la función de configuración de vacío se ejecuta solo una vez. Así que lo usamos para mostrar un texto de introducción que aparece en la pantalla durante 2 segundos y luego se borra. Para mencionar la posición donde debe aparecer el texto usamos la función lcd.setcursor y para imprimir el texto usamos la función lcd.print . Por ejemplo, lcd.setCursor (0,0) colocará el cursor en la primera fila y la primera columna donde imprimimos " Interfaz LCD " y la función lcd.setCursor (0,1) mueve el cursor a la primera columna de la segunda fila donde imprimimos la línea “ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Estamos usando una pantalla LCD de 16 * 2 lcd.setCursor (0, 0); // En la primera fila, primera columna lcd.print ("LCD de interfaz"); // Imprime este lcd.setCursor (0, 1); // En la segunda fila, primera columna lcd.print ("- CircuitDigest"); // Imprime este retraso (2000); // esperar dos segundos lcd.clear (); // Limpiar la pantalla}
Después de mostrar el texto de introducción, mantenemos el programa durante 2 segundos creando un retraso para que el usuario pueda leer el mensaje de introducción. Este retraso es creado por el retraso de línea (2000) donde 2000 es el valor de retraso en milésimas de segundo. Después de la demora, borramos la pantalla LCD usando la función lcd.clear () que borra la pantalla LCD eliminando todo el texto en la pantalla LCD.
Por último en el interior del bucle vacío, nos mostramos “STM32-Blue Pill” en la primera línea y el valor de segundos en la segunda línea. El valor de segundo se puede obtener de la función millis () . El millis () es un temporizador que se incrementa desde el momento en que se enciende la MCU. El valor está en forma de milisegundos, por lo que lo dividimos por 1000 antes de mostrarlo en nuestra pantalla LCD.
bucle vacío () { lcd.setCursor (0, 0); // En la primera fila, primera columna lcd.print ("STM32 -Píldora azul"); // Imprime este lcd.setCursor (0, 1); // En la segunda fila, primera columna lcd.print (millis () / 1000); // Imprime el valor de segundos }
Carga del programa en STM32F103C8T6
Como se discutió en el párrafo anterior, debería poder notar la salida tan pronto como se cargue el código. Pero este programa no funcionará la próxima vez que encienda la placa, ya que la placa todavía está en modo de programación. Entonces, una vez que se carga el programa, el puente en el arranque 0 debe volver a cambiar a 0 posiciones como se muestra a continuación. También ahora, dado que el programa ya está cargado en la placa STM32, no necesitamos la placa FTDI y toda la configuración puede ser alimentada por el puerto micro-USB de la placa STM32, como se muestra a continuación.
Este es solo un proyecto de interfaz simple para ayudar a usar la pantalla LCD con la placa STM32, pero además puede usarlo para crear proyectos interesantes. Espero que hayas entendido el tutorial y hayas aprendido algo útil de él. Si ha tenido algún problema para que funcione, utilice la sección de comentarios para publicar el problema o utilice los foros para otras preguntas técnicas. El funcionamiento completo de la pantalla LCD con STM32 también se puede encontrar como un video que se muestra a continuación.