- 16x2 alfanumerisk LCD-skærm
- 16x2 LCD CCS-bibliotek til MSP430
- LCD-funktioner til 16x2 LCD-skærm på MSP430
- Kredsløbsdiagram til interface LCD med MSP430
- Programmering MSP430 ved hjælp af Code Composer Studio til LCD-skærm
Denne artikel er fortsættelsen af vores tutorial-serie om programmering af MSP430 ved hjælp af Code Composer Studio. Sidste tutorial var baseret på eksterne afbrydelser på MSP430 ved hjælp af GPIO-ben. Denne tutorial handler om at grænseflade mellem en skærm og MSP430, når det kommer til at vise 16 * 2 LCD-skærmen, er det det første valg for enhver elektronisk hobbyist. Tidligere har vi også interfacet LCD med MSP430 ved hjælp af Arduino IDE, i denne tutorial bruger vi den indfødte Code Composer-studieplatform i stedet for at bruge Arduino IDE, på denne måde som designer får vi mere fleksibilitet.
For at lære mere om 16x2 LCD-skærm og brug af den med andre mikrokontroller, se nedenstående tutorials.
- Interfacing LCD med ATmega16
- Interfacing LCD med Raspberry Pi
- Interfacing LCD med PIC Microcontroller
- Interfacing LCD med ARM7-LPC2148
- Interfacing LCD med NodeMCU
- Interfacing LCD med STM32
- Interfacing LCD med MSP430G2
- Interfacing LCD med STM8
Den har en indbygget IC hd44780, der kan gemme kommandoen og data, der sendes til den. LCD-modulet har ca. 16 ben. 8 heraf er datapinde, hvoraf 4 er forsyningsstift til baggrundsbelysning-LED og hele LCD-modulet, 3 til styring af driften og 1 ben til kontrastjustering. Vejledningen er baseret på biblioteket oprettet af Dennis Eichmann. Det er meget let at bruge et bibliotek med separate funktioner til at udskrive forskellige datatyper. Det har også bestemmelser til at vise dataene i forskellige former med ledende, blanke og slettede nuller. Det er et ret omfattende og omfattende bibliotek og kan konfigureres til de forskellige forbindelser. Her er headerfilen ændret til at rumme en 8-pin parallel konfiguration til datakommunikation.
16x2 alfanumerisk LCD-skærm
En generisk 16x2 skærm har en indbygget hd44780 IC (cirklet i rødt nedenfor), der kan gemme kommandoen og data, der sendes til den. LCD-modulet har ca. 16 ben. 8 heraf er datapinde, hvoraf 4 er forsyningsstift til baggrundsbelysning-LED og hele LCD-modulet, 3 til styring af driften og 1 ben til kontrastjustering.
Dette LCD-modul er vist ovenfor alsidigt og bruger minimale stifter sammenlignet med andre segmenterede LCD-skærme. Hvis du er nysgerrig efter at vide, hvordan alt dette fungerer, skal du tjekke, hvordan 16x2 LCD-skærmen fungerer, hvor vi allerede har diskuteret, hvordan LCD-skærmen fungerer i detaljer.
RS-pin: RS = 1 aktiverer dataregistret i LCD'et, som bruges til at skrive værdierne til dataregistret i LCD. RS = 0 aktiverer LCD-instruktionsregistret.
Aktivér pin: Negativ kantudløst; når stiften ændres fra tilstanden HIGH til LOW, bliver LCD bedt om at skrive til datapindene. Positiv kantudløst; når stiften skiftes fra tilstanden LAV til HIGH, bliver LCD bedt om at læse fra datapindene.
R / W-pin: R / W = 0 skriver til instruktionsregistret eller dataregistret i henhold til valget af RS-pin. R / W = 1 læses fra IR eller DR ifølge valget af RS-pin.
RS R / W-drift
0 0 IR-skrivning som en intern handling (display rydder osv.)
0 1 Læs optaget flag (DB7) og adressetæller (DB0 til DB6)
1 0 DR skriver som en intern operation (DR til DDRAM eller CGRAM)
1 1 DR læses som en intern operation (DDRAM eller CGRAM til DR)
D0-D7-ben: Dataene overføres til og fra kommandoen og dataregistrene gennem disse ben.
Forsyningsstifter: V ss, V dd stifter bruges til at drive LCD-modulet. A-, K-stifter styrer LED-baggrundsbelysningen. V 0- ben bruges til at kontrollere kontrasten.
16x2 LCD CCS-bibliotek til MSP430
Vejledningen er baseret på biblioteket oprettet af Dennis Eichmann. Det er meget let at bruge et bibliotek med separate funktioner til at udskrive forskellige datatyper. Det har også bestemmelser til at vise dataene i forskellige former med ledende, blanke og slettede nuller. Det er et ret omfattende og omfattende bibliotek og kan konfigureres til de forskellige forbindelser. Her er headerfilen ændret til at rumme en 8-pin parallel konfiguration til datakommunikation. Biblioteket kan downloades fra nedenstående link. Efter download følger du nedenstående trin for at føje biblioteket til CCS.
Download 16x2 bibliotek til MSP430 - Code Composer Studio
Trin 1: Oprettelse af filer og projekter
Et standard CCS-projekt oprettes ved hjælp af filmenuen. Vælg enheden i dialogboksen Opret projekt, og angiv hd44780 som projektnavn. Vælg outputtypen som et statisk bibliotek under projekttypen og værktøjskæden, og opret projektet.
I Project Explorer-banen (venstre side) skal du oprette en headerfil i inkluderingsmappen og navngive den som hd44780.h . Kopier derefter indholdet af den downloadede hd44780.h-fil til denne nyoprettede.
Opret nu hovedprojektet ved at ændre outputtypen til en eksekverbar, og opret et projekt ved navn CCS_LCD .
Trin 2: Inkluder søgestier til hovedprojektet
I egenskabsdialogboksen i hd44780-projektet og inden for inkluderingsindstillingerne til MSP430-kompilatoren skal du tilføje inkluderingsmappen i filen søgestien.
Derefter skal du oprette dette projekt for at oprette de nødvendige linker-filer såsom .lib-filer . Ved at opbygge dette oprettes hd44780.lib- fil inde i fejlfindingsmappen.
Trin 3: Inkluder søgestier til Linker
I egenskabsdialogboksen til CCS_LCD- projektet og i filsøgningsstien på fanen MSP430 Linker skal du inkludere hd44780.lib placeret inde i fejlfindingsmappen i hd44780-projektet. Fejlfindingsmappen er også inkluderet i filsøgningsstien.
Inkluderingsmappen føjes igen til inkluderingsindstillingerne for MSP430-kompilatoren for CCS_LCD- projektet.
Biblioteket er vellykket kompileret og føjet til linkeren til hovedprojektet.
LCD-funktioner til 16x2 LCD-skærm på MSP430
ugyldigt hd44780_timer_isr (ugyldigt): Dette kaldes periodisk i ISR for timeren A. Timeren A bruges til periodisk at udføre LCD-funktionerne som at rydde skærmen, indstille markøren og vise dataene. Funktionen skal bruges i ISR. Det returnerer intet.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Den skriver den streng, der er angivet i det første argument.
char * ch__string: Den streng, der skal skrives til databufferen (inde i funktionen hd44780_timer_isr ). Dataene kopieres til dataregistret og instruktionsregistret på LCD IC, når hd44780_timer_isr kaldes med jævne mellemrum.
uint8_t u8__row: Den definerer rækken, hvor strengen skal skrives.
uint8_t u8__column: Den definerer den kolonne, hvor strengen skal skrives.
uint8_t u8__cr_lf: Hvis den er indstillet 1, fortsættes rækken til den næste. Hvis det er 0, stopper udskrivningen i samme række.
ugyldigt hd44780_clear_screen (ugyldigt): Denne funktion rydder hele skærmen. Det returnerer intet.
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): Funktionen viser den usignerede 16-bit LCD-værdi.
uint16_t u16__value: Det heltal, der skal vises, er angivet i det første argument.
uint8_t u8__leading_zero_handling: Hvis 0 sendes, vises ledende nuller til heltalets værdi. Hvis 1 er bestået, bliver nuller udeladt. Hvis 2 overføres som en parameter, vises kun de signifikante cifre.
uint8_t u8__row: Den række, hvor heltal vises, er valgt.
uint8_t u8__column: Den kolonne, der skal udskrives, vælges ved hjælp af argumentet.
uint8_t u8__cr_lf: Hvis den er indstillet 1, fortsættes rækken til den næste. Hvis det er 0, stopper udskrivningen i samme række.
Kredsløbsdiagram til interface LCD med MSP430
Det komplette kredsløbsdiagram er illustreret i nedenstående billede. Som du kan se, er hardwareforbindelserne meget enkle, og vi har forsynet hele kortet med en 5V-adapter.
Forbindelserne foretages som beskrevet i ovenstående skitse. Se nedenstående tabel for detaljerede forbindelser.
Vss | Jord af 5V strømforsyning |
Vdd | 5V |
V0 | Potentiometer output |
RS | P2.1 |
R / W | Jord |
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 |
EN | 220 Ohm modstand |
K | Jord |
LED-baggrundsbelysningens anode kan ikke tilsluttes direkte til en 5V forsyning. Den skal forbindes til en modstand for at minimere strømmen gennem LCD-modulet. Jeg har lavet mine forbindelser ved hjælp af et perf-kort til lodning af LCD'et og derefter brugt jumperledninger til at forbinde LCD'et med MSP430-kortet. Min opsætning ser sådan ud nedenfor, men du kan også bare bruge et brødbræt til at oprette dine forbindelser.
Programmering MSP430 ved hjælp af Code Composer Studio til LCD-skærm
Den komplette kode, der bruges i dette projekt, er vist i bunden af denne side. Forklaringen på brugen af koden er som følger. Først skal du åbne headerfilen (hd44780.h) og medtage nummeret til mikrocontroller i den første del af filen.
# inkludere "msp430g2553.h"
Watchdog-timeren skal først stoppes. DCOCTL og BCSCTL1 kontrolregistre bruges til at konfigurere oscillatoren til mikrokontrolleren. Linjerne nedenfor konfigurerer MCLK til at være 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Port 1-ben skal nævnes som output, som skal bruges til datapindene. Pin 0 og pin 1 skal også nævnes som output i port 2, som skal bruges til RS og R / W pin.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Indbygget timer bruges til periodisk at vise værdier. Timer A vælges med SMCLK (1MHZ) som urkilde og kontinuerlig tilstand som driftsform.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Afbrydelserne for sammenligningskanal 1 og 2 og timeroverløbsafbrydelse deler den samme afbrydelsesvektor ( TIMER0_A1_VECTOR ) med forskellige startadresser. Capture-sammenligningskanal 1 (CCR1) bruger 2 som adresse, som bruges i switch-sagen.
#pragma vector = TIMER0_A1_VECTOR __interrupt ugyldigt timer_0_a1_isr (ugyldigt) { switch (TA0IV) { case 2: { hd44780_timer_isr (); pause; } } }
Når du har kompileret din kode, kan du uploade den til MSP430-kortet, som forklaret i at komme i gang med MSP430-tutorial. Hvis alt går som forventet, skal du se din LCD-skærm have en vis kontrast som vist nedenfor.
Hvis din test er meget svag, kan du prøve at justere potentiometeret for at få bedre kontrast. Den komplette bearbejdning af projektet kan også findes i den linkede video nedenfor. Håber du nød projektet og fandt det interessant at bygge dit eget. Hvis du har spørgsmål, skal du lade dem være i kommentarfeltet nedenfor. Du kan også skrive alle dine tekniske spørgsmål på fora for at få dem besvaret eller for at starte en diskussion.