- Materials necessaris
- Diagrama del circuit i connexió
- Programació STM32 per a LCD mitjançant Arduino
- Carregant el programa a STM32F103C8T6
Per a qualsevol projecte de microcontrolador, la interfície amb una unitat de visualització facilitaria la interacció del projecte amb un projecte molt més fàcil i atractiu. La unitat de visualització més utilitzada per als microcontroladors és la pantalla alfanumèrica 16 × 2. Aquest tipus de pantalles no només són útils per mostrar informació vital a l'usuari, sinó que també poden actuar com a eina de depuració durant l'etapa de desenvolupament inicial del projecte. Així doncs, en aquest tutorial aprendrem com podem connectar una pantalla LCD de 16 × 2 amb la placa de desenvolupament STM32F103C8T6 STM32 i programar-la mitjançant l’IDE Arduino. Per a les persones que estiguin familiaritzats amb Arduino, aquest tutorial només serà un passeig per pastissos, ja que tots dos són molt similars. També per obtenir més informació sobre el tauler de pastilles blau STM32, seguiu el nostre tutorial per començar.
Materials necessaris
- Junta de desenvolupament de la píndola blava STM32
- Pantalla LCD de 16 × 2
- Programador FTDI
- Connexió de cables
- LCD
Introducció breu a la pantalla LCD de matriu de 16 × 2 punts
Com es va dir anteriorment, l'Energia IDE proporciona una biblioteca que fa que la interfície sigui un tros de pastís i, per tant, no és obligatori saber res sobre el mòdul de visualització. Però, no seria interessant mostrar el que estem fent servir?
El nom 16 × 2 implica que la pantalla té 16 columnes i 2 files, que juntes (16 * 2) formen 32 quadres. Una sola caixa semblaria semblant a la imatge següent

Una sola caixa té 40 píxels (punts) amb un ordre de matriu de 5 files i 8 columnes; aquests 40 píxels formen un sol caràcter. De la mateixa manera, es poden mostrar 32 caràcters amb totes les caselles. Ara fem una ullada als pinouts.

La pantalla LCD té un total de 16 pins, tal com es mostra més amunt, es poden classificar en quatre grups, com segueix
Pins d'origen (1, 2 i 3): aquests pins donen la potència i el nivell de contrast de la pantalla
Pins de control (4, 5 i 6): aquests pins configuren / controlen els registres del circuit d'interfície LCD d'interfície (més es pot trobar a l'enllaç següent)
Dades / Pins d'ordres (7 a 14): aquests pins proporcionen les dades de la informació que s'hauria de mostrar a la pantalla LCD.
Pins LED (15 i 16): aquests pins s'utilitzen per il·luminar la llum de fons de la pantalla LCD si cal (opcional).
De tots aquests 16 pins, només s’han d’utilitzar 10 pins obligatoris per al funcionament correcte de la pantalla LCD si voleu obtenir més informació sobre aquests pantalles LCD.
Diagrama del circuit i connexió
A continuació es mostra el diagrama de circuits per a la interfície LCD de matriu de punts de 16 * 2 amb STM32F103C8T6 STM32 Blue Pill Board. Es fa mitjançant el programari Fritzing.

Com podeu veure, la connexió completa es realitza mitjançant una taula de treball. Necessitem una placa FTDI per programar el microcontrolador STM32. De manera similar al nostre tutorial anterior, hem connectat la placa FTDI a STM32, el Vcc i el pin de terra del programador FDTI estan connectats al pin de 5V i al pin de terra del STM32 respectivament. S'utilitza per alimentar la placa STM32 i la pantalla LCD, ja que tots dos poden acceptar can + 5V. El pin Rx i Tx de la placa FTDI està connectat al pin A9 i A10 de la STM32 perquè puguem programar la placa directament sense el carregador d’arrencada.
A continuació, cal connectar la pantalla LCD a la placa STM32. Utilitzarem la pantalla LCD en mode de 4 bits, de manera que hem de connectar els 4 pins de bits de dades (DB4 a DB7) i els dos pins de control (RS i EN) a la placa STM32 tal com es mostra al circuit d’interfície LCD STM32F103C8T6 diagrama superior. A més, la taula següent us ajudarà a establir la connexió.
|
Pin LCD núm. |
Nom del pin LCD |
Nom del pin STM32 |
|
1 |
Terra (Gnd) |
Terra (G) |
|
2 |
VCC |
5V |
|
3 |
VEE |
Terra (G) |
|
4 |
Selecciona registre (RS) |
PB11 |
|
5 |
Lectura / Escriptura (RW) |
Terra (G) |
|
6 |
Activa (EN) |
PB10 |
|
7 |
Bit de dades 0 (DB0) |
Sense connexió (NC) |
|
8 |
Bit de dades 1 (DB1) |
Sense connexió (NC) |
|
9 |
Bit de dades 2 (DB2) |
Sense connexió (NC) |
|
10 |
Bit de dades 3 (DB3) |
Sense connexió (NC) |
|
11 |
Bit de dades 4 (DB4) |
PB0 |
|
12 |
Bit de dades 5 (DB5) |
PB1 |
|
13 |
Bit de dades 6 (DB6) |
PC13 |
|
14 |
Bit de dades 7 (DB7) |
PC14 |
|
15 |
LED positiu |
5V |
|
16 |
LED negatiu |
Terra (G) |
Un cop fetes les connexions, podem obrir l'IDE Arduino i començar a programar-lo.
Programació STM32 per a LCD mitjançant Arduino
Tal com s’explica en aquest tutorial, utilitzarem l’ Arduino IDE per programar el nostre microcontrolador STM32. Però, per defecte, l'IDE Arduino no tindrà instal·lada la placa STM32, per tant, hem de descarregar un paquet i preparar l'IDE Arduino per al mateix. Això és exactament el que vam fer en el nostre anterior tutorial per començar amb STM32F103C8T6 amb Arduino IDE. Per tant, si no heu instal·lat els paquets necessaris, torneu a aquest tutorial i seguiu-lo abans de continuar aquí.
Un cop instal·lada la placa STM32 a l’IDE Arduino, podem començar a programar. El programa és molt similar al d’una placa Arduino, l’únic que canviarà són els noms dels pins, ja que les notacions són diferents per a STM32 i Arduino. El programa complet es dóna al final d’aquesta pàgina, però per explicar el programa l’he dividit en petits fragments significatius com es mostra a continuació.
Un avantatge notable d’utilitzar Arduino per programar els nostres microcontroladors és que Arduino té biblioteques ja preparades per a gairebé tots els famosos sensors i actuadors. Així doncs, aquí comencem el nostre programa incloent la biblioteca LCD que facilita molt la programació.
#incloure
A la següent línia hem d’ especificar a quins pins GPIO de l’STM32 hem connectat el control de la pantalla LCD i les línies de dades. Per fer-ho, hem de comprovar el nostre maquinari, per més facilitat, també podeu consultar la taula que es mostra a la part superior, on es mostren els noms dels pins de la pantalla LCD amb els pins GPIO de STM32. Després d’esmentar els pins, podem inicialitzar la pantalla LCD mitjançant la funció LiquidCrystal . També anomenem el nostre LCD com a " lcd ", tal com es mostra a continuació.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // esmentar els noms dels pins a amb LCD està connectat a LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Inicialitzar la pantalla LCD
A continuació, passem a la funció de configuració . Aquí primer esmentem quin tipus de pantalla LCD estem utilitzant. Com que és un LCD de 16 * 2, fem servir la línia lcd.begin (16,2). El codi dins de la funció de configuració del buit només s'executa una vegada. Per tant, l’utilitzem per mostrar un text introductori que apareix a la pantalla durant 2 segons i que després s’esborra. Per esmentar la posició on ha d'aparèixer el text, utilitzem la funció lcd.setcursor i per imprimir el text utilitzem la funció lcd.print . Per exemple, lcd.setCursor (0,0) establirà el cursor a la primera fila i primera columna on imprimim “ Interfacing LCD ” i la funció lcd.setCursor (0,1) mou el cursor a la segona fila de la primera columna on imprimim la línia " CircuitDigest ".
void setup () {lcd.begin (16, 2); // Estem utilitzant un LCD * 16 * 2 lcd.setCursor (0, 0); // A la primera fila, primera columna lcd.print ("Interfacing LCD"); // Imprimiu aquest lcd.setCursor (0, 1); // A la segona fila de la primera columna lcd.print ("- CircuitDigest"); // Imprimeix aquest retard (2000); // espera dos segons lcd.clear (); // Esborra la pantalla}
Després de mostrar el text d'introducció, mantenim el programa durant 2 segons creant un retard perquè l'usuari pugui llegir el missatge d'introducció. Aquest retard es crea amb el retard de línia (2000) on 2000 és el valor de retard en milers de segons. Després del retard, esborram la pantalla LCD mitjançant la funció lcd.clear () , que neteja la pantalla LCD eliminant tot el text de la pantalla LCD.
Finalment a l'interior de l' bucle buit, ens vam mostrar "STM32-Blue Pill" a la primera línia i el valor de segons a la segona línia. El valor de segon es pot obtenir a partir de la funció millis () . El millis () és un temporitzador que s'incrementa des del moment en què s'activa la MCU. El valor és en forma de milis segons, de manera que el dividim per 1000 abans de mostrar-lo al nostre LCD.
bucle buit () { lcd.setCursor (0, 0); // A la primera fila primera columna lcd.print ("STM32 -Píndola blava"); // Imprimiu aquest lcd.setCursor (0, 1); // A la fila secunda, primera columna lcd.print (millis () / 1000); // Imprimeix el valor de secounds }
Carregant el programa a STM32F103C8T6
Com s'ha comentat al paràgraf anterior, hauríeu de poder notar la sortida tan aviat com es penja el codi. Però aquest programa no funcionarà la propera vegada que encengueu la placa, ja que la placa continua en mode de programació. Així doncs, un cop carregat el programa, el pont a l'arrencada 0 hauria de tornar a canviar a 0 posicions, tal com es mostra a continuació. També ara, ja que el programa es carrega a la placa STM32, ja no necessitem la placa FTDI i tota la configuració es pot alimentar mitjançant el port micro-USB de la placa STM32, tal com es mostra a continuació.

Aquest és només un senzill projecte d'interfície per ajudar a utilitzar la pantalla LCD amb la placa STM32, però a més podeu utilitzar-lo per construir projectes interessants. Espero que hàgiu entès el tutorial i n’hagueu après alguna cosa útil. Si us heu enfrontat a algun problema per aconseguir que funcioni, utilitzeu la secció de comentaris per publicar el problema o utilitzeu els fòrums per a altres qüestions tècniques. El funcionament complet de la pantalla LCD amb STM32 també es pot trobar com un vídeo que es mostra a continuació.
