- 16x2 alfanumerični LCD zaslon
- Knjižnica CCS 16x2 LCD za MSP430
- Funkcije LCD-ja za LCD-zaslon 16x2 na MSP430
- Shema vezja na vmesnik LCD z MSP430
- Programiranje MSP430 z uporabo programa Code Composer Studio za LCD zaslon
Ta članek je nadaljevanje naše vadnice o programiranju MSP430 z uporabo programa Code Composer Studio. Zadnja vadnica je temeljila na zunanjih prekinitvah na MSP430 z uporabo zatičev GPIO. Ta vadnica govori o povezovanju zaslona z MSP430, ko gre za prikaz LCD zaslona 16 * 2, je to prva izbira za vsakega elektronskega ljubitelja. Prej smo LCD tudi povezovali z MSP430 z uporabo Arduino IDE, v tej vadnici bomo namesto uporabe Arduino IDE uporabili izvorno programsko platformo Code Composer, tako bomo kot oblikovalec dobili večjo prilagodljivost.
Če želite izvedeti več o 16x2 LCD zaslonu in njegovi uporabi z drugimi mikrokrmilniki, glejte spodnje vadnice.
- Povezava LCD-ja z ATmega16
- Povezava LCD-ja z Raspberry Pi
- Povezava LCD-ja z mikrokrmilnikom PIC
- Povezava LCD-ja z ARM7-LPC2148
- Povezava LCD-ja z NodeMCU
- Povezava LCD-ja s STM32
- Povezava LCD-ja z MSP430G2
- Povezava LCD-ja s STM8
Vgrajen ima IC hd44780, ki lahko shrani ukaz in podatke, ki so mu posredovani. LCD modul ima približno 16 nožic. 8 od tega so podatkovni zatiči, od tega 4 napajalni zatiči za LED osvetlitev ozadja in celoten modul LCD, 3 za nadzor delovanja in 1 nož za nastavitev kontrasta. Vadnica temelji na knjižnici, ki jo je ustvaril Dennis Eichmann. Za tiskanje različnih podatkovnih vrst je knjižnico z ločenimi funkcijami zelo enostavno. Prav tako ima določbe za prikaz podatkov v različnih oblikah z začetnimi, praznimi in izbrisanimi ničlami. Je precej obsežna in obsežna knjižnica, ki jo je mogoče prilagoditi različnim povezavam. Tu je datoteka glave spremenjena tako, da se prilagodi 8-pinski vzporedni konfiguraciji za podatkovno komunikacijo.
16x2 alfanumerični LCD zaslon
Splošni zaslon 16x2 ima vgrajeno IC hd44780 (spodaj obkroženo z rdečo), ki lahko shrani ukaz in podatke, ki so mu posredovani. LCD modul ima približno 16 nožic. 8 od tega so podatkovni zatiči, od tega 4 napajalni zatiči za LED osvetlitev ozadja in celoten modul LCD, 3 za nadzor delovanja in 1 zatič za nastavitev kontrasta.
Ta modul LCD je prikazan zgoraj vsestransko in uporablja najmanj zatičev v primerjavi z drugimi segmentiranimi LCD-ji. Če vas zanima, kako natančno vse to deluje, si oglejte delovanje LCD zaslona 16x2, kjer smo že podrobno razpravljali o tem, kako LCD deluje.
RS Pin: RS = 1 bo omogočil podatkovni register na LCD-ju, ki se uporablja za zapisovanje vrednosti v podatkovni register na LCD-ju. RS = 0 bo omogočil register navodil LCD.
Omogoči zatič: sprožen negativni rob; ko je zatič spremenjen iz VISOKEGA stanja v NIZKO, se na LCD-prikazovalniku zahteva zapisovanje na podatkovne nožice. Pozitivno sprožen rob; ko se zatič spremeni iz stanja LOW v HIGH, se LCD prikaže za branje s podatkovnih nožic.
R / W pin: R / W = 0 bo zapisal v register ukazov ali podatkovni register po izbiri RS pin-a. R / W = 1 bo odčitano z IR ali DR glede na izbiro RS pin.
RS R / W delovanje
0 0 IR pisanje kot interna operacija (prikaz jasen itd.)
0 1 Branje zastavice zasedenosti (DB7) in števca naslovov (DB0 do DB6)
1 0 DR zapis kot notranja operacija (DR v DDRAM ali CGRAM)
1 1 DR, odčitano kot notranja operacija (DDRAM ali CGRAM do DR)
Zatiči D0-D7: Podatki se prek teh zatičev prenesejo v ukaz in iz registrov podatkov.
Dobava zatiči: V ss, V. dd zatiči se uporablja za pogon LCD modula. Zatiči A, K bodo napajali osvetlitev LED. V 0 zatiči se uporabljajo za nadzor kontrasta.
Knjižnica CCS 16x2 LCD za MSP430
Vadnica temelji na knjižnici, ki jo je ustvaril Dennis Eichmann. Za tiskanje različnih podatkovnih vrst je knjižnico z ločenimi funkcijami zelo enostavno. Prav tako ima določbe za prikaz podatkov v različnih oblikah z začetnimi, praznimi in izbrisanimi ničlami. Je precej obsežna in obsežna knjižnica, ki jo je mogoče prilagoditi različnim povezavam. Tu je datoteka glave spremenjena tako, da se prilagodi 8-pinski vzporedni konfiguraciji za podatkovno komunikacijo. Knjižnico lahko prenesete s spodnje povezave, po prenosu sledite spodnjim korakom za dodajanje knjižnice v CCS.
Prenesite knjižnico 16x2 za MSP430 - Code Composer Studio
1. korak: Ustvarjanje datotek in projektov
Z menijem datotek se ustvari privzeti projekt CCS. V pogovornem oknu Ustvari projekt izberite napravo in kot ime projekta navedite hd44780. Pod vrsto projekta in orodno verigo izberite vrsto izhoda kot Statična knjižnica in ustvarite projekt.
Na pasu Project Explorer (leva stran) ustvarite datoteko z glavo v mapi za vključitev in jo poimenujte kot hd44780.h . Nato kopirajte vsebino prenesene datoteke hd44780.h v to novo ustvarjeno.
Zdaj ustvarite glavni projekt tako, da spremenite vrsto izhoda v izvedljivo in ustvarite projekt z imenom CCS_LCD .
2. korak: Vključite iskalne poti do glavnega projekta
V pogovorno okno lastnosti projekta hd44780 in znotraj možnosti za vključitev prevajalnika MSP430 dodajte mapo vključi v datoteko iskalno pot.
Nato zgradite ta projekt, da ustvarite potrebne povezovalne datoteke, kot so datoteke.lib . Če to zgradite, bo v mapi za odpravljanje napak ustvarjena datoteka hd44780.lib .
3. korak: vključite iskalne poti za povezovalnik
V pogovorno okno lastnosti za projekt CCS_LCD in v pot iskanja datotek na zavihku Povezovalnik MSP430 vključite hd44780.lib, ki se nahaja v mapi za odpravljanje napak projekta hd44780. V iskalno pot datoteke je vključena tudi mapa za odpravljanje napak.
Mapa vključitve je ponovno dodana možnostm vključevanja prevajalnika MSP430 projekta CCS_LCD .
Knjižnica je uspešno zbrana in dodana v povezovalnik glavnega projekta.
Funkcije LCD-ja za LCD-zaslon 16x2 na MSP430
void hd44780_timer_isr (void): To se občasno imenuje v ISR časovnika A. Časovnik A se uporablja za občasno izvajanje funkcij LCD, kot so čiščenje zaslona, nastavitev kurzorja in prikaz podatkov. Funkcija se uporablja v ISR. Nič ne vrne.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): zapisal bo niz, naveden v prvem argumentu.
char * ch__string: niz, ki ga je treba zapisati v podatkovni vmesnik (znotraj funkcije hd44780_timer_isr ). Podatki se kopirajo v podatkovni register in register navodil LCD IC, ko se občasno pokliče hd44780_timer_isr .
uint8_t u8__row: Določa vrstico, v katero bo zapisan niz.
uint8_t u8__column: Določa stolpec, v katerega bo zapisan niz.
uint8_t u8__cr_lf: Če je nastavljena na 1, se vrstica prenese v naslednjo. Če je 0, se tiskanje ustavi v isti vrstici.
void hd44780_clear_screen (void): Ta funkcija bo počistila celoten zaslon. Nič ne vrne.
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): funkcija bo prikazala nepodpisano vrednost bita na LCD-prikazovalniku na podpisani vrednosti bit.
uint16_t u16__value: Celo število, ki se prikaže, je podano v prvem argumentu.
uint8_t u8__leading_zero_handling: Če je podana 0, bodo začetne ničle prikazane na celoštevilčno vrednost. Če je 1 sprejeta, bodo ničle prazne. Če kot parameter prenesete 2, bodo prikazane samo pomembne številke.
uint8_t u8__row: izbrana je vrstica, v kateri je prikazano celo število.
uint8_t u8__column: Stolpec, ki ga želite natisniti, je izbran z argumentom.
uint8_t u8__cr_lf: Če je nastavljena na 1, se vrstica prenese v naslednjo. Če je 0, se tiskanje ustavi v isti vrstici.
Shema vezja na vmesnik LCD z MSP430
Celoten diagram vezja je prikazan na spodnji sliki. Kot lahko vidite, so strojne povezave zelo preproste in celotno ploščo smo napajali s pomočjo 5V adapterja.
Povezave so narejene po zgornji skici. Podrobne povezave si oglejte v spodnji tabeli.
Vss | Osnova napajanja 5V |
Vdd | 5V |
V0 | Izhod potenciometra |
RS | P2.1 |
R / W | Tla |
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 | 220 Ohm upor |
K | Tla |
Anode LED osvetlitve ni mogoče neposredno povezati z napajalnikom 5V. Priključen mora biti na upor, da zmanjšate tok toka skozi modul LCD. Svoje povezave sem vzpostavil s pomočjo perf plošče za spajkanje LCD-ja, nato pa sem z žicami za povezovanje LCD-ja povezal ploščo MSP430, moja nastavitev je videti tako spodaj, za povezave pa lahko preprosto uporabite tudi ploščo.
Programiranje MSP430 z uporabo programa Code Composer Studio za LCD zaslon
Popolna koda, uporabljena v tem projektu, je navedena na dnu te strani. Razlaga uporabe kode je naslednja. Najprej odprite datoteko z glavo (hd44780.h) in v prvi del datoteke vključite številko dela mikrokrmilnika.
#include "msp430g2553.h"
Najprej je treba ustaviti časovni pas. Krmilna registra DCOCTL in BCSCTL1 se uporabljata za konfiguracijo oscilatorja mikrokrmilnika. V spodnjih vrsticah bo MCLK nastavljen na 1 MHz.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Kot izhod je treba omeniti nožice vrat 1, ki jih je treba uporabiti za podatkovne nožice. Zatič 0 in zatič 1 je treba omeniti tudi kot izhod v priključku 2, ki bo uporabljen za RS in R / W zatič.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Vgrajeni časovnik se uporablja za periodični prikaz vrednosti. Časovnik A je izbran s SMCLK (1MHZ) kot vir ure in način neprekinjenega delovanja.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Prekinitve za primerjalna kanala 1 in 2 ter prekinitev prelivanja časovnika si delijo isti vektor prekinitve ( TIMER0_A1_VECTOR ) z različnimi začetnimi naslovi. Zajemni primerjalni kanal 1 (CCR1) kot naslov uporablja 2, ki se uporablja v primeru stikala.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { stikalo (TA0IV) { 2. primer: { hd44780_timer_isr (); odmor; } } }
Ko sestavite kodo, jo lahko naložite na ploščo MSP430, kot je razloženo v uvodu z vadnico MSP430. Če gre vse po pričakovanjih, boste na LCD zaslonu videli nekaj kontrasta, kot je prikazano spodaj.
Če je test zelo zatemnjen, lahko poskusite prilagoditi potenciometer, da dobite boljši kontrast. Popolno delovanje projekta lahko najdete tudi v spodnjem videoposnetku. Upam, da ste projekt uživali in se vam je zdelo zanimivo zgraditi svojega. Če imate kakršna koli vprašanja, jih pustite v spodnjem oddelku za komentarje. Vsa svoja tehnična vprašanja lahko napišete tudi na forume, da dobite odgovore ali začnete razpravo.