- 16x2 alfanumerisk LCD-skjerm
- 16x2 LCD CCS-bibliotek for MSP430
- LCD-funksjoner for 16x2 LCD-skjerm på MSP430
- Kretsdiagram til grensesnitt LCD med MSP430
- Programmering MSP430 ved hjelp av Code Composer Studio for LCD-skjerm
Denne artikkelen er en fortsettelse av vår veiledningsserie om programmering av MSP430 ved hjelp av Code Composer Studio. Siste opplæring var basert på eksterne avbrudd på MSP430 ved bruk av GPIO-pinner. Denne opplæringen handler om å grensesnitt en skjerm med MSP430, når det gjelder å vise 16 * 2 LCD-skjermen, er det førstevalget for enhver elektronisk hobbyist. Tidligere har vi også grensesnitt LCD med MSP430 ved hjelp av Arduino IDE, i denne opplæringen vil vi bruke den opprinnelige Code Composer studio-plattformen i stedet for å bruke Arduino IDE, på denne måten som designer, får vi mer fleksibilitet.
For å lære mer om 16x2 LCD-skjerm og bruke den med andre mikrokontrollere, se veiledningene nedenfor.
- Grensesnitt LCD med ATmega16
- Grensesnitt LCD med Raspberry Pi
- Grensesnitt LCD med PIC Microcontroller
- Grensesnitt LCD med ARM7-LPC2148
- Grensesnitt LCD med NodeMCU
- Grensesnitt LCD med STM32
- Grensesnitt LCD med MSP430G2
- Grensesnitt LCD med STM8
Den har en innebygd IC hd44780 som kan lagre kommandoen og dataene som sendes til den. LCD-modulen har omtrent 16 pinner. 8 av disse er datapinner, hvorav 4 er forsyningspinner for LED-bakgrunnsbelysning og hele LCD-modulen, 3 for å kontrollere driften og 1 pin for kontrastjustering. Opplæringen er basert på biblioteket opprettet av Dennis Eichmann. Det er veldig enkelt å bruke et bibliotek med separate funksjoner for å skrive ut forskjellige datatyper. Det har også bestemmelser for å vise dataene i forskjellige former med ledende, blanke og slettede nuller. Det er et ganske omfattende og omfattende bibliotek og kan konfigureres til de forskjellige tilkoblingene. Her blir toppfilen endret for å imøtekomme en 8-pinners parallellkonfigurasjon for datakommunikasjon.
16x2 alfanumerisk LCD-skjerm
En generisk 16x2 skjerm har en innebygd hd44780 IC (sirklet i rødt nedenfor), som kan lagre kommandoen og dataene som sendes til den. LCD-modulen har omtrent 16 pinner. 8 av disse er datapinner, 4 av dem er forsyningspinner for bakgrunnsbelysning-LED og hele LCD-modulen, 3 for å kontrollere driften og 1 pin for kontrastjustering.
Denne LCD-modulen er vist over allsidig og bruker minimum pinner sammenlignet med andre segmenterte LCD-skjermer. Hvis du er nysgjerrig på å vite hvordan alt dette fungerer, bør du sjekke ut hvordan 16x2 LCD-skjermen fungerer, hvor vi allerede har diskutert hvordan LCD-skjermen fungerer i detalj.
RS Pin: RS = 1 vil aktivere dataregisteret i LCD-skjermen, som brukes til å skrive verdiene til dataregisteret i LCD. RS = 0 vil aktivere instruksjonsregisteret på LCD-skjermen.
Aktiver pin: Negativ kantutløst; når pinnen skiftes fra HIGH-tilstand til LOW-tilstand, blir LCD bedt om å skrive til datapinnene. Positiv kantutløst; når pinnen skiftes fra lav tilstand til høy tilstand, blir LCD bedt om å lese fra datapinnene.
R / W-pin: R / W = 0 vil skrive til instruksjonsregisteret eller dataregisteret i henhold til valget av RS-pin. R / W = 1 vil lese fra IR eller DR i henhold til valget av RS-pin.
RS R / W-drift
0 0 IR-skriving som en intern operasjon (visning slettet osv.)
0 1 Les opptatt flagg (DB7) og adresseteller (DB0 til DB6)
1 0 DR skrive som en intern operasjon (DR til DDRAM eller CGRAM)
1 1 DR leses som en intern operasjon (DDRAM eller CGRAM til DR)
D0-D7-pinner: Dataene overføres til og fra kommandoen og dataregistrene gjennom disse pinnene.
Forsyningspinner: V ss, V dd pinner brukes til å drive LCD-modulen. A, K-pinner driver LED-bakgrunnsbelysningen. V 0- pinner brukes til å kontrollere kontrasten.
16x2 LCD CCS-bibliotek for MSP430
Opplæringen er basert på biblioteket opprettet av Dennis Eichmann. Det er veldig enkelt å bruke et bibliotek med separate funksjoner for å skrive ut forskjellige datatyper. Det har også bestemmelser for å vise dataene i forskjellige former med ledende, blanke og slettede nuller. Det er et ganske omfattende og omfattende bibliotek og kan konfigureres til de forskjellige tilkoblingene. Her blir toppfilen endret for å imøtekomme en 8-pinners parallellkonfigurasjon for datakommunikasjon. Biblioteket kan lastes ned fra lenken nedenfor. Etter nedlasting følger du trinnene nedenfor for å legge til biblioteket i CCS.
Last ned 16x2 bibliotek for MSP430 - Code Composer Studio
Trinn 1: Opprette filer og prosjekter
Et standard CCS-prosjekt opprettes ved hjelp av filmenyen. I enheten Opprett prosjekt-dialogboksen velger du enheten og oppgir hd44780 som et prosjektnavn. Velg utgangstypen som et statisk bibliotek under prosjekttype og verktøykjede og opprett prosjektet.
I Project Explorer-banen (venstre side) oppretter du en topptekstfil i inkluderingsmappen og navngir den som hd44780.h . Kopier deretter innholdet av den nedlastede filen hd44780.h til denne nyopprettede.
Opprett nå hovedprosjektet ved å endre utgangstypen til en kjørbar, og opprett et prosjekt som heter CCS_LCD .
Trinn 2: Inkluder søkestier til hovedprosjektet
I egenskapsdialogboksen til hd44780-prosjektet og inne i inkluderingsalternativene for MSP430-kompilatoren, legger du til inkluderingsmappen i filen søkebanen.
Deretter bygge dette prosjektet å skape den nødvendige linker filer som Lib-filer . Hvis du bygger dette, blir filen hd44780.lib inne i feilsøkingsmappen.
Trinn 3: Inkluder søkestier for Linker
I egenskapsdialogboksen for CCS_LCD- prosjektet og i filsøkestien til MSP430 Linker-fanen, inkluderer du hd44780.lib inne i feilsøkingsmappen til hd44780-prosjektet. Feilsøkingsmappen er også inkludert i filsøkestien.
Inkluderingsmappen blir igjen lagt til inkluderingsalternativene til MSP430-kompilatoren for CCS_LCD- prosjektet.
Biblioteket er vellykket samlet og lagt til linkeren til hovedprosjektet.
LCD-funksjoner for 16x2 LCD-skjerm på MSP430
void hd44780_timer_isr (void): Dette kalles periodisk i ISR for Timer A. Timer A brukes til periodisk å gjøre LCD-funksjonene som å rydde skjermen, stille inn markøren og vise dataene. Funksjonen skal brukes i ISR. Det gir ingenting tilbake.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Det vil skrive strengen spesifisert i det første argumentet.
char * ch__string: Strengen som skal skrives til databufferen (inne i funksjonen hd44780_timer_isr ). Dataene blir kopiert til dataregisteret og instruksjonsregisteret på LCD IC når hd44780_timer_isr kalles med jevne mellomrom.
uint8_t u8__row: Den definerer raden der strengen skal skrives.
uint8_t u8__kolonne: Den definerer kolonnen der strengen skal skrives.
uint8_t u8__cr_lf: Hvis den er satt 1, blir raden videreført til den neste. Hvis det er 0, stopper utskriften på samme rad.
void hd44780_clear_screen (void): Denne funksjonen vil tømme hele skjermen. Det gir ingenting tilbake.
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): Funksjonen viser den usignerte 16-biters LCD-verdien.
uint16_t u16__value: Heltallet som skal vises, er gitt i det første argumentet.
uint8_t u8__leading_zero_handling: Hvis 0 sendes, vises ledende nuller til heltallverdien. Hvis 1 blir bestått, blir nullene utslettet. Hvis 2 sendes som parameter, vises bare de betydningsfulle sifrene.
uint8_t u8__row: Raden der heltallet vises, er valgt.
uint8_t u8__kolonne: Kolonnen som skal skrives ut velges ved hjelp av argumentet.
uint8_t u8__cr_lf: Hvis den er satt 1, blir raden videreført til den neste. Hvis det er 0, stopper utskriften på samme rad.
Kretsdiagram til grensesnitt LCD med MSP430
Hele kretsskjemaet er illustrert i bildet nedenfor. Som du kan se, er maskinvaretilkoblingene veldig enkle, og vi har drevet hele kortet ved hjelp av en 5V adapter.
Forbindelsene er laget i henhold til skissen ovenfor. Se tabellen nedenfor for detaljerte tilkoblinger.
Vss | Bakken på 5V strømforsyning |
Vdd | 5V |
V0 | Potensiometerutgang |
RS | P2.1 |
R / W | Bakke |
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 motstand |
K | Bakke |
Anoden til LED-bakgrunnsbelysningen kan ikke kobles direkte til en 5V forsyning. Den skal kobles til en motstand for å minimere strømmen gjennom LCD-modulen. Jeg har opprettet tilkoblingene mine ved hjelp av et perf-kort for å lodde LCD-skjermen, og deretter brukt jumperledninger for å koble LCD-skjermen til MSP430-kortet, oppsettet mitt ser slik ut nedenfor, men du kan også bare bruke et brødbrett for å få tilkoblinger.
Programmering MSP430 ved hjelp av Code Composer Studio for LCD-skjerm
Den komplette koden som brukes i dette prosjektet er gitt nederst på denne siden. Forklaringen på bruk av koden er som følger. Først åpner du toppteksten (hd44780.h) og inkluderer delnummeret til mikrokontrolleren i den første delen av filen.
# inkluderer "msp430g2553.h"
Vakthundstimeren må stoppes først. DCOCTL og BCSCTL1 kontrollregister brukes til å konfigurere oscillatoren til mikrokontrolleren. Linjene nedenfor vil konfigurere MCLK til å være 1MHz.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Port 1-pinner må nevnes som utgang, som skal brukes til datapinnene. Pin 0 og pin 1 må også nevnes som utgang i port 2, som skal brukes til RS og R / W pin.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Innebygd tidtaker brukes til å vise verdier med jevne mellomrom. Timer A er valgt med SMCLK (1MHZ) som klokkilde og kontinuerlig modus som driftsmodus.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Avbruddene for sammenligningskanalene 1 og 2 og tidsuroverløpsavbrudd deler samme avbruddsvektor ( TIMER0_A1_VECTOR ) med forskjellige startadresser . Capture Compare Channel 1 (CCR1) bruker 2 som adresse, som brukes i brytervesken.
#pragma vector = TIMER0_A1_VECTOR __interrupt ugyldig tidtaker_0_a1_isr (ugyldig) { switch (TA0IV) { case 2: { hd44780_timer_isr (); gå i stykker; } } }
Når du har samlet koden din, kan du laste den opp til MSP430-kortet, som forklart i komme i gang med MSP430-opplæringen. Hvis alt går som forventet, bør du se på LCD-skjermen litt kontrast som vist nedenfor.
Hvis testen din er veldig svak, kan du prøve å justere potensiometeret for å få bedre kontrast. Fullstendig bearbeiding av prosjektet finner du også i videoen som er lenket nedenfor. Håper du likte prosjektet og syntes det var interessant å bygge ditt eget. Hvis du har spørsmål, kan du legge dem igjen i kommentarfeltet nedenfor. Du kan også skrive alle tekniske spørsmål på forum for å få svar på dem eller for å starte en diskusjon.