- Nødvendige materialer:
- Kort introduksjon til 16 × 2 Punktmatrise LCD-skjerm:
- Kretsdiagram og tilkobling:
- Programmering MSP430 for LCD ved bruk av Energia:
- 16x2 LCD med MSP430G2:
Dette er den tredje opplæringen i sekvensen av opplæringsprogrammer der vi lærer å programmere MSP430G2 LaunchPad ved hjelp av Energia IDE. I vår forrige opplæring lærte vi hvordan du styrer de digitale inngangs- og utgangspinnene på MSP-kortet. I denne opplæringen lærer vi hvordan vi kan grensesnitt en LCD med tavlen slik at vi kan vise nyttig informasjon.
LCD-skjermen som vi bruker i dette prosjektet er den mest brukte 16 × 2 Punktmatrise LCD-skjermen som alfanumeriske skjermer. De fleste av oss ville ha kommet over dette enten gjennom offentlige PCO-er eller andre elektronikkprosjekter. En skjerm som dette vil være veldig nyttig for våre fremtidige opplæringsprogrammer for å vise data og annen feilsøkingsinformasjon. Grensesnittet mellom denne LCD-skjermen og MSP430 er veldig enkelt, takket være det tilgjengelige biblioteket. Så la oss dykke inn !!
Nødvendige materialer:
- MSP430G2 LaunchPad fra Texas Instruments
- 16 × 2 LCD-skjerm med punktmatrise
- Koble ledninger
- Energia IDE
Kort introduksjon til 16 × 2 Punktmatrise LCD-skjerm:
Som tidligere fortalt gir Energia IDE et vakkert bibliotek som gjør grensesnittet til et stykke kake, og det er derfor ikke obligatorisk å vite noe om skjermmodulen. Men ville det ikke vært interessant å vise hva vi bruker !!
Navnet 16 × 2 innebærer at skjermen har 16 kolonner og 2 rader, som til sammen (16 * 2) danner 32 bokser. En enkelt boks vil se ut som dette på bildet nedenfor
En enkelt boks har 40 piksler (prikker) med en matriserekkefølge på 5 rader og 8 kolonner, disse 40 pikslene danner til sammen ett tegn. Tilsvarende kan 32 tegn vises ved hjelp av alle boksene. La oss ta en titt på pinouts.
LCD-skjermen har totalt 16 pins, som vist ovenfor, de kan kategoriseres i fire grupper som følger
Kildepinner (1, 2 og 3): Disse pinnene gir strøm og kontrastnivå for skjermen
Kontrollpinner (4, 5 og 6): Disse pinnene setter / kontrollerer registerene i LCD-grensesnitt-ICen (mer finner du i lenken nedenfor)
Data / kommandopinner (7 til 14): Disse pinnene gir data om hvilken informasjon som skal vises på LCD-skjermen.
LED-pinner (15 og 16): Disse pinnene brukes til å lyse bakgrunnsbelysningen på LCD-skjermen om nødvendig (valgfritt).
Av alle disse 16 pinnene, er det bare 10 pinner som skal brukes obligatorisk for korrekt bruk av LCD-skjermen hvis du vil vite mer om disse LCD-skjermene, hopp til denne LCD-artikkelen.
Kretsdiagram og tilkobling:
Det komplette kretsskjemaet for å grensesnitt en 16 × 2 Punktmatrise LCD-skjerm med MSP430G2 er vist nedenfor.
En viktig begrensning mens de grensesnittet mellom disse to er driftsspenningene. LCD-skjermen har en driftsspenning på + 5V mens MSP bare fungerer med 3,6V. Heldig for oss har datapinnen på LCD-grensesnittet IC (HD44780U) en bred driftsspenning på 2,7V til 5,5V. Så vi må bare bekymre oss for Vdd (pin 2) på LCD-skjermen mens datapinnene kan fungere selv med 3,6V.
MSP430G2-kortet gir deg som standard ikke en + 5V-pin, men vi kan gjøre et lite hack for å få + 5V fra MSP430 ved hjelp av USB-porten. Hvis du ser nærmere på USB-porten, kan du finne en terminal kalt TP1, denne terminalen vil gi oss + 5v. Alt vi trenger å gjøre er å lodde en liten mannlig toppstift som vist nedenfor, slik at vi kan koble den til LCD-skjermen.
Merk: Ikke koble belastninger som kan forbruke mer enn 50 mA til denne 5V-stiften, det kan steke USB-porten.
Hvis du ikke er interessert i lodding, kan du bare bruke en + 5V regulert forsyning og strømme LCD-skjermen, i så fall må du sørge for at du kobler bakken til strømforsyningen til bakken på MSP-kortet.
Når du er ferdig med + 5V-pinnen, er de andre pinnene ganske enkle å koble til. Nå som maskinvaren vår er klar, la oss gå videre til programvaredelen.
Programmering MSP430 for LCD ved bruk av Energia:
Det komplette programmet for å grensesnitt en MSP430G2553 med LCD-skjerm er gitt på slutten av denne siden. Koden kan kompileres, lastes opp og brukes som sådan. I de følgende avsnittene vil jeg forklare hvordan programmet fungerer.
Før vi går videre med forklaring, må vi notere pinnene vi bruker. Hvis du tar en titt på kretsskjemaet ovenfor og MSP430 pin-out-diagrammet nedenfor
Du kan konkludere med at vi har koblet LCD-skjermen i henhold til følgende tabell
LCD-pinnens navn |
Koblet til |
Vss |
Bakke |
Vdd |
+ 5V USB-pinne |
Rs |
Pin 2 av MSP |
R / W |
Bakke |
Muliggjøre |
Pin 3 av MSP |
D4 |
Pin 4 av MSP |
D5 |
Pin 5 av MSP |
D6 |
Pin 6 av MSP |
D7 |
Pin 7 av MSP |
Med dette i tankene, la oss begynne å definere LCD-pinnene som brukes i programmet vårt. Vi vil navngi hver pin med et mer meningsfylt navn, slik at vi kan bruke det enkelt senere.
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Dette betyr ganske enkelt at i stedet for å ringe pin 2, kan jeg referere til det som RS heretter, på samme måte for alle 6 pins.
Det neste trinnet ville være å inkludere LCD-biblioteket. Dette biblioteket ville blitt installert automatisk da du installerte Energia IDE. Så bare legg til det ved å bruke følgende linje
#inkludere
Det neste trinnet er å nevne pinnene som LCD-skjermen er koblet til, som vi allerede har kalt den med #define, kan vi nå bare nevne navnene på LCD-pinnene. Forsikre deg om at samme rekkefølge følges.
LiquidCrystal lcd (RS, EN, D4, D5, D6, D7);
La oss nå gå inn i tomt oppsett () -funksjonen. Det er så mange typer LCD-skjermer som varierer i størrelse og natur, den vi bruker er 16 * 2, så la oss spesifisere det i vårt program
lcd.begin (16, 2);
For å skrive ut noe på LCD-skjermen må vi nevne to ting i programmet. Den ene er plasseringen av teksten som kan nevnes ved hjelp av linjen lcd.setCursor (), og den andre er innholdet som skal skrives ut som kan nevnes av lcd.print (). I denne linjen vi sette markøren til en st rad og en st kolonne.
lcd.setCursor (0,0);
På samme måte kan vi også
lcd.setCursor (0, 1); // sett markøren til 1. kolonne 2. rad
Akkurat som å slette en tavle etter å ha skrevet på den, bør en LCD også slettes når noe er skrevet på den. Dette kan gjøres ved å bruke linjen nedenfor
lcd.clear ();
Så fullstendig ugyldig oppsett () -funksjon vil se omtrent slik ut.
ugyldig oppsett () {lcd.begin (16, 2); // Vi bruker en 16 * 2 LCD-skjerm lcd.setCursor (0,0); // Plasser markøren på 1. rad 1. kolonne lcd.print ("MSP430G2553"); // Vis en intro-melding lcd.setCursor (0, 1); // sett markøren til 1. kolonne 2. rad lcd.print ("- CircuitDigest"); // Vis intro forsinkelse (2000); // Vent til skjermen viser info lcd.clear (); // Rengjør den deretter}
Deretter, inne i vår void loop () -funksjon, la oss fortsette å øke et tall for hver 500 ms og vise nummeret i LCD-skjermen. Dette tallet tester og initialiseres til 1 som vist nedenfor
int test = 1;
For å skape en forsinkelse kan vi bruke den innebygde funksjonsforsinkelsen (). Vi må nevne hvor lang tid vi trenger forsinkelsen. I vårt tilfelle har jeg brukt 500 ms som vist nedenfor
forsinkelse (500);
Å øke en variabel kan gjøres ved test ++, resten er allerede forklart. Den komplette koden i tomrummet er vist nedenfor
ugyldig sløyfe () {lcd.print ("LCD med MSP"); // Vis en intro-melding lcd.setCursor (0, 1); // sett markøren til kolonne 0, linje 1 lcd.print (test); // Vis en intro-meldingsforsinkelse (500); lcd.clear (); // Rengjør den deretter test ++; }
16x2 LCD med MSP430G2:
Når maskinvaren og koden din er klar, kobler du bare datamaskinen og laster opp koden slik vi gjorde i veiledning en. Når koden er lastet opp, bør du se skjermen som viser følgende.
Etter to sekunder endres skjermbildet fra oppsett til sløyfe og begynner å øke variabelen og vises på skjermen som vist bildet nedenfor.
Den fullstendige fungerer, vises i videoen nedenfor. Prøv å endre det som vises på LCD-skjermen, og spill med det. Håper du forsto opplæringen og lærte noe nyttig fra den. Hvis du er i tvil, la dem være i kommentarseksjonen nedenfor, eller bruk forumene. La oss møtes i en annen opplæring.