- Pantalla LCD alfanumèrica de 16 x 2
- Biblioteca CCS LCD de 16x2 per MSP430
- Funcions LCD per a pantalla LCD 16x2 a MSP430
- Diagrama de circuits a la interfície LCD amb MSP430
- Programació de MSP430 mitjançant Code Composer Studio per a pantalla LCD
Aquest article és la continuació de la nostra sèrie de tutorials sobre la programació de MSP430 mitjançant Code Composer Studio. El darrer tutorial es va basar en interrupcions externes a MSP430 mitjançant pins GPIO. Aquest tutorial tracta sobre la interfície d'una pantalla amb MSP430, quan es tracta de mostrar la pantalla LCD de 16 * 2, és la primera opció per a qualsevol aficionat electrònic. Anteriorment, també hem interfocat LCD amb MSP430 mitjançant Arduino IDE, en aquest tutorial utilitzarem la plataforma d’estudi nativa Code Composer en lloc d’utilitzar l’Arduino IDE, d’aquesta manera com a dissenyador, obtindrem més flexibilitat.
Per obtenir més informació sobre la pantalla LCD de 16x2 i com utilitzar-la amb altres microcontroladors, consulteu els tutorials següents.
- Interfície LCD amb ATmega16
- Interfície LCD amb Raspberry Pi
- Interfície LCD amb microcontrolador PIC
- Interfície LCD amb ARM7-LPC2148
- Interfície LCD amb NodeMCU
- Interfície LCD amb STM32
- Interfície LCD amb MSP430G2
- Interfície LCD amb STM8
Té un IC hd44780 integrat que pot emmagatzemar l'ordre i les dades que li passen. El mòdul LCD té uns 16 pins. 8 d'ells són pins de dades, 4 d'ells són pins d'alimentació per a llum de fons LED i tot el mòdul LCD, 3 per controlar el funcionament i 1 pin per ajustar el contrast. El tutorial es basa en la biblioteca creada per Dennis Eichmann. És molt fàcil utilitzar una biblioteca amb funcions separades per imprimir diferents tipus de dades. També té disposicions per mostrar les dades en diferents formularis amb zeros inicials, buits i suprimits. És una biblioteca molt àmplia i àmplia i es pot configurar per a les diferents connexions. Aquí, el fitxer de capçalera es modifica per adaptar-se a una configuració paral·lela de 8 pins per a la comunicació de dades.
Pantalla LCD alfanumèrica de 16 x 2
Una pantalla genèrica de 16x2 té un circuit integrat hd44780 IC (encerclat en vermell a sota), que pot emmagatzemar l'ordre i les dades que se li transmeten. El mòdul LCD té uns 16 pins. 8 d'ells són pins de dades, 4 d'ells són pins d'alimentació per a llum de fons LED i tot el mòdul LCD, 3 per controlar el funcionament i 1 pin per ajustar el contrast.

Aquest mòdul LCD es mostra més versàtil i utilitza pins mínims en comparació amb altres LCD segmentats. Si teniu curiositat per saber exactament com funciona tot això, consulteu el funcionament de la pantalla LCD de 16x2, on ja hem comentat detalladament el funcionament de la pantalla LCD.

Pin RS: RS = 1 habilitarà el registre de dades a la pantalla LCD, que s'utilitza per escriure els valors al registre de dades a la pantalla LCD. RS = 0 habilitarà el registre d'instruccions de la pantalla LCD.
Activa el pin: activat per la vora negativa; quan es canvia el pin de l'estat HIGH a l'estat LOW, es demana a la pantalla LCD que escrigui als pins de dades. Acció positiva desencadenada; quan es canvia el pin de l'estat LOW a l'estat HIGH, es demana a la pantalla LCD que llegeixi dels pins de dades.
Pin R / W: R / W = 0 escriurà al registre d'instruccions o al registre de dades segons la selecció del pin RS. R / W = 1 es llegirà des de l'IR o DR segons la selecció del pin RS.
Funcionament RS R / W
0 0 Escriptura IR com a operació interna (pantalla neta, etc.)
0 1 Llegiu el senyalador ocupat (DB7) i el comptador d'adreces (DB0 a DB6)
1 0 escriptura DR com a operació interna (DR a DDRAM o CGRAM)
1 1 DR llegit com una operació interna (DDRAM o CGRAM a DR)
Pins D0-D7: les dades es transfereixen a i des del registre d’ordres i dades a través d’aquests pins.
Pins d'alimentació: els pins V ss, V dd s'utilitzen per alimentar el mòdul LCD. Els pins A, K alimentaran la llum de fons LED. Els pins V 0 s’utilitzen per controlar el contrast.
Biblioteca CCS LCD de 16x2 per MSP430
El tutorial es basa en la biblioteca creada per Dennis Eichmann. És molt fàcil utilitzar una biblioteca amb funcions separades per imprimir diferents tipus de dades. També té disposicions per mostrar les dades en diferents formularis amb zeros inicials, buits i suprimits. És una biblioteca molt àmplia i àmplia i es pot configurar per a les diferents connexions. Aquí, el fitxer de capçalera es modifica per adaptar-se a una configuració paral·lela de 8 pins per a la comunicació de dades. La biblioteca es pot descarregar des de l'enllaç següent, després de descarregar-la, seguiu els passos següents per afegir la biblioteca a CCS.
Descarregueu la biblioteca de 16x2 per a MSP430 - Code Composer Studio
Pas 1: creació de fitxers i projectes
Es crea un projecte CCS per defecte mitjançant el menú de fitxers. Al quadre de diàleg Crea un projecte, seleccioneu el dispositiu i doneu hd44780 com a nom de projecte. A la secció Tipus de projecte i cadena d’eines, seleccioneu el tipus de sortida com a biblioteca estàtica i creeu el projecte.

Al carril Project Explorer (a l’esquerra), creeu un fitxer de capçalera dins de la carpeta d’inclusió i nomeneu -lo com a hd44780.h . A continuació, copieu el contingut del fitxer hd44780.h descarregat en aquest de nova creació.
Ara creeu el projecte principal canviant el tipus de sortida a un executable i creeu un projecte anomenat CCS_LCD .
Pas 2: incloeu els camins de cerca al projecte principal
Al quadre de diàleg de propietats del projecte hd44780 i dins de les opcions d'inclusió per al compilador MSP430, afegiu la carpeta d'inclusió al fitxer del camí de cerca.

A continuació, creeu aquest projecte per crear els fitxers d'enllaç necessaris, com ara els fitxers.lib . Construint això, es crearà el fitxer hd44780.lib a la carpeta de depuració.
Pas 3: incloeu els camins de cerca de l'enllaçador
Al quadre de diàleg de propietats del projecte CCS_LCD i al camí de cerca de fitxers de la pestanya Enllaçador MSP430, incloeu el hd44780.lib situat a la carpeta de depuració del projecte hd44780. La carpeta de depuració també s'inclou al camí de cerca de fitxers.
La carpeta d'inclusió es torna a afegir a les opcions d'inclusió del compilador MSP430 del projecte CCS_LCD .

La biblioteca es compila amb èxit i s’afegeix a l’enllaçador del projecte principal.
Funcions LCD per a pantalla LCD 16x2 a MSP430
void hd44780_timer_isr (void): s'anomena periòdicament a la ISR del temporitzador A. El temporitzador A s'utilitza per fer periòdicament les funcions del LCD com esborrar la pantalla, configurar el cursor i mostrar les dades. La funció s'ha d'utilitzar a l'ISR. No retorna res.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): escriurà la cadena especificada al primer argument.
char * ch__string: la cadena que cal escriure al buffer de dades (dins de la funció hd44780_timer_isr ). Les dades es copiaran al registre de dades i al registre d'instruccions de l'IC LCD quan es crida periòdicament a l' HD44780_timer_isr .
uint8_t u8__row: defineix la fila en què s’escriurà la cadena.
uint8_t u8__column: defineix la columna en què s'escriurà la cadena.
uint8_t u8__cr_lf: Si es defineix 1, la fila es continuarà amb la següent. Si és 0, la impressió s'atura a la mateixa fila.
void hd44780_clear_screen (void): aquesta funció esborra tota la pantalla. No retorna res.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): La funció mostrarà el valor de 16 bits de la pantalla LCD sense signar.
uint16_t valor u16__: el número enter que es mostrarà es dóna al primer argument.
uint8_t u8__leading_zero_handling: Si es passa 0, es mostraran els zeros inicials fins al valor enter. Si es passa 1, els zeros quedaran buits. Si es passa 2 com a paràmetre, només es mostraran els dígits significatius.
uint8_t u8__row: se selecciona la fila en què es mostra l'enter.
uint8_t u8__column: la columna que voleu imprimir es selecciona mitjançant l'argument.
uint8_t u8__cr_lf: Si es defineix 1, la fila es continuarà amb la següent. Si és 0, la impressió s'atura a la mateixa fila.
Diagrama de circuits a la interfície LCD amb MSP430
El diagrama complet del circuit es mostra a la imatge següent. Com podeu veure, les connexions de maquinari són molt senzilles i hem alimentat la placa completa mitjançant un adaptador de 5 V.

Les connexions es realitzen segons l'esbós anterior. Consulteu la taula següent per obtenir les connexions detallades.
| Vss | Terra de font d'alimentació de 5V |
| Vdd | 5V |
| V0 | Potencial de sortida |
| RS | P2.1 |
| R / N | Terra |
| E | P2.0 |
| D0 | P1.0 |
| D1 | P1.1 |
| D2 | P1.2 |
| D3 | P1.3 |
| D4 | P1.4 |
| D5 | P1.5 |
| D6 | P1.6 |
| D7 | P1.7 |
| A | Resistència de 220 Ohm |
| K | Terra |
L'ànode de la llum de fons LED no es pot connectar directament a un subministrament de 5 V. S'hauria de connectar a una resistència per minimitzar el flux de corrent a través del mòdul LCD. He fet les meves connexions mitjançant una placa perf per soldar la pantalla LCD i després he utilitzat cables jumper per connectar la pantalla LCD amb la placa MSP430.

Programació de MSP430 mitjançant Code Composer Studio per a pantalla LCD
El codi complet utilitzat en aquest projecte es dóna a la part inferior d'aquesta pàgina. L’explicació de l’ús del codi és la següent. Primer, obriu el fitxer de capçalera (hd44780.h) i incloeu el número de peça del microcontrolador a la primera part del fitxer.
#include "msp430g2553.h"
Primer s’ha d’aturar el temporitzador del gos de vigilància. Els registres de control DCOCTL i BCSCTL1 s’utilitzen per configurar l’oscil·lador del microcontrolador. Les línies següents configuraran l' MCLK per a 1 MHz.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
S'ha d'esmentar el port 1 dels pins com a sortida, que s'ha d'utilitzar per als pins de dades. El pin 0 i el pin 1 també s’han d’esmentar com a sortida al port 2, que s’utilitzarà per al pin RS i R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
El temporitzador incorporat s’utilitza per mostrar valors periòdicament. El temporitzador A es selecciona amb SMCLK (1 MHz) com a font de rellotge i el mode continu és el mode d’operació.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Les interrupcions dels canals de comparació 1 i 2 i la interrupció de desbordament del temporitzador comparteixen el mateix vector d’interrupció ( TIMER0_A1_VECTOR ) amb adreces d’inici diferents. El canal de comparació de captures 1 (CCR1) utilitza 2 com a adreça, que s’utilitza en el cas del commutador.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); trencar; } } }
Un cop hàgiu compilat el codi, podeu penjar-lo al tauler MSP430, tal com s’explica a l’inici del tutorial MSP430. Si tot surt com s’esperava, hauríeu de veure la vostra pantalla LCD amb un contrast com es mostra a continuació.

Si la prova és molt feble, podeu provar d’ajustar el potenciòmetre per obtenir un millor contrast. El funcionament complet del projecte també es pot trobar al vídeo enllaçat a continuació. Espero que us hagi agradat el projecte i us hagi semblat interessant construir el vostre propi. Si teniu cap pregunta, deixeu-les a la secció de comentaris a continuació. També podeu escriure totes les vostres preguntes tècniques als fòrums per obtenir respostes o iniciar un debat.
