- 16x2 raidinis skaitmeninis LCD ekranas
- 16x2 LCD CCS biblioteka skirta MSP430
- Skystųjų kristalų funkcijos 16x2 LCD ekranui MSP430
- Sąsajos skystųjų kristalų schema su MSP430
- Programavimas MSP430 naudojant „Code Composer Studio“ LCD ekranui
Šis straipsnis yra mūsų mokomųjų programų apie MSP430 programavimą naudojant „Code Composer Studio“ tęsinys. Paskutinis mokymas buvo pagrįstas išoriniais pertraukimais MSP430 naudojant GPIO kaiščius. Ši pamoka yra apie ekrano sąsają su MSP430, kai kalbama apie 16 * 2 skystųjų kristalų ekraną, tai yra pirmas pasirinkimas bet kuriam elektroniniam mėgėjui. Anksčiau mes taip pat sąsajome skystųjų kristalų ekraną su MSP430 naudodami „Arduino IDE“, šioje pamokoje mes naudosime vietinę „Code Composer“ studijos platformą, užuot naudoję „Arduino IDE“, kaip dizaineris, mes gausime daugiau lankstumo.
Norėdami sužinoti daugiau apie 16x2 skystųjų kristalų ekraną ir jo naudojimą su kitais mikrovaldikliais, žiūrėkite žemiau esančias instrukcijas.
- Sąsajos skystųjų kristalų ekranas su „ATmega16“
- Sąsajos skystųjų kristalų ekranas su „Raspberry Pi“
- Sąsajos skystųjų kristalų ekranas su PIC mikrovaldikliu
- Sąsajos skystųjų kristalų ekranas su ARM7-LPC2148
- Sąsajos skystųjų kristalų ekranas su „NodeMCU“
- Sąsajos skystųjų kristalų ekranas su STM32
- Sąsajos skystųjų kristalų ekranas su MSP430G2
- Sąsajos skystųjų kristalų ekranas su STM8
Jame yra įmontuotas IC hd44780, galintis išsaugoti jam perduotą komandą ir duomenis. Skystųjų kristalų modulis turi apie 16 kaiščių. 8 iš jų yra duomenų kaiščiai, 4 iš jų yra apšvietimo LED ir viso LCD modulio tiekimo kaiščiai, 3 - veikimo valdymui ir 1 kaištis - kontrastui reguliuoti. Pamoka paremta Denniso Eichmanno sukurta biblioteka. Labai paprasta naudoti biblioteką su atskiromis funkcijomis, norint spausdinti skirtingus duomenų tipus. Jame taip pat yra nuostatų rodyti duomenis skirtingomis formomis su nulio pradžios, tuščios ir ištrintos. Tai gana plati ir išsami biblioteka, kurią galima konfigūruoti skirtingiems ryšiams. Čia antraštės failas yra modifikuotas, kad būtų pritaikyta 8 kontaktų lygiagreti duomenų perdavimo konfigūracija.
16x2 raidinis skaitmeninis LCD ekranas
Bendrasis „16x2“ ekranas turi įmontuotą „hd44780 IC“ (apačioje apjuostas raudona spalva), kuriame galima išsaugoti jam perduotą komandą ir duomenis. Skystųjų kristalų modulis turi apie 16 kaiščių. 8 iš jų yra duomenų kaiščiai, 4 iš jų yra apšvietimo LED ir viso LCD modulio tiekimo kaiščiai, 3 - veikimo valdymui ir 1 kaištis - kontrastui reguliuoti.
Šis LCD modulis parodytas aukščiau, universalus ir naudoja minimalius kaiščius, palyginti su kitais segmentuotais LCD. Jei smalsu sužinoti, kaip tiksliai visa tai veikia, turėtumėte patikrinti 16x2 LCD ekrano veikimą, kur mes jau išsamiai aptarėme, kaip veikia LCD.
RS kaištis: RS = 1 įgalins duomenų registrą skystųjų kristalų ekrane, kuris naudojamas vertėms įrašyti į duomenų registrą skystųjų kristalų ekrane. RS = 0 įgalins LCD instrukcijų registrą.
Įgalinti smeigtuką: suaktyvinamas neigiamas kraštas; kai kaištis pakeičiamas iš HIGH būsenos į LOW būseną, LCD raginama rašyti į duomenų kaiščius. Teigiamas krašto sukeltas; kai kaištis pakeičiamas iš LOW būsenos į HIGH būseną, LCD raginama skaityti iš duomenų kaiščių.
R / W kaištis: R / W = 0 įrašys į komandų registrą arba duomenų registrą pagal pasirinktą RS kaištį. R / W = 1 bus nuskaitytas iš IR arba DR pagal RS kaiščio pasirinkimą.
RS R / W valdymas
0 0 IR įrašymas kaip vidinė operacija (ekranas išvalytas ir pan.)
0 1 Perskaitykite užimtos žymos (DB7) ir adreso skaitiklio (DB0 – DB6)
1 0 DR įrašymas kaip vidinė operacija (DR į DDRAM arba CGRAM)
1 1 DR skaityti kaip vidinę operaciją (iš DDRAM arba CGRAM į DR)
D0-D7 kaiščiai: Duomenys perduodami į ir iš komandų bei duomenų registrų per šiuos kaiščius.
Tiekimo kaiščiai: V ss, V dd kaiščiai naudojami LCD moduliui maitinti. A, K kaiščiai maitins LED apšvietimą. Kontrastui valdyti naudojami V 0 kaiščiai.
16x2 LCD CCS biblioteka skirta MSP430
Pamoka paremta Denniso Eichmanno sukurta biblioteka. Labai paprasta naudoti biblioteką su atskiromis funkcijomis, norint spausdinti skirtingus duomenų tipus. Jame taip pat yra nuostatų rodyti duomenis skirtingomis formomis su nulio pradžios, tuščios ir ištrintos. Tai gana plati ir išsami biblioteka, kurią galima konfigūruoti skirtingiems ryšiams. Čia antraštės failas yra modifikuotas, kad būtų pritaikyta 8 kontaktų lygiagreti duomenų perdavimo konfigūracija. Biblioteką galima atsisiųsti iš toliau pateiktos nuorodos, atsisiųsdami atlikite toliau nurodytus veiksmus, kad pridėtumėte biblioteką prie CCS.
Atsisiųskite 16x2 biblioteką, skirtą MSP430 - „Code Composer Studio“
1 veiksmas: failų ir projektų kūrimas
Numatytasis CCS projektas sukuriamas naudojant failų meniu. Dialogo lange Kurti projektą pasirinkite įrenginį ir projekto pavadinimu nurodykite hd44780. Pagal projekto tipą ir įrankių grandinę pasirinkite išvesties tipą kaip statinę biblioteką ir sukurkite projektą.
„Project Explorer“ juostoje (kairėje pusėje) sukurkite antraštės failą aplanke „include“ ir pavadinkite jį kaip hd44780.h . Tada nukopijuokite atsisiųsto failo hd44780.h turinį į šį naujai sukurtą failą .
Dabar sukurkite pagrindinį projektą pakeisdami išvesties tipą į vykdomąjį ir sukurkite projektą, pavadintą CCS_LCD .
2 žingsnis: įtraukite pagrindinio projekto paieškos kelius
Projekto „hd44780“ ypatybių dialogo lange ir kompiliatoriaus MSP430 įtraukimo parinktyse įtraukite aplanką „Įtraukti“ į ieškos kelią.
Tada sukurkite šį projektą, kad sukurtumėte reikalingus susiejimo failus, pvz., .Lib failus . Tai sukūrus, derinimo aplanke bus sukurtas failas hd44780.lib .
3 žingsnis: įtraukite „Linker“ paieškos kelius
Į CCS_LCD projekto ypatybių dialogo langą ir skirtuko MSP430 Linker failų paieškos kelyje įtraukite hd44780.lib, esantį projekto hd44780 derinimo aplanke. Derinimo aplankas taip pat įtrauktas į failų paieškos kelią.
Įtraukimo aplankas vėl pridedamas prie CCS_LCD projekto kompiliatoriaus MSP430 įtraukimo parinkčių .
Biblioteka sėkmingai sukompiliuota ir įtraukta į pagrindinio projekto nuorodą.
Skystųjų kristalų funkcijos 16x2 LCD ekranui MSP430
void hd44780_timer_isr (void): Tai periodiškai vadinama laikmačio A ISR. Laikmatis A naudojamas periodiškai atlikti LCD funkcijas, pavyzdžiui, išvalyti ekraną, nustatyti žymeklį ir rodyti duomenis. Funkcija turi būti naudojama ISR. Tai nieko negrąžina.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Jis parašys pirmame argumente nurodytą eilutę.
char * ch__string: eilutė, kurią reikia įrašyti į duomenų buferį (funkcijos hd44780_timer_isr viduje). Kai periodiškai iškviečiamas hd44780_timer_isr, duomenys bus nukopijuoti į LCD IC duomenų registrą ir instrukcijų registrą.
uint8_t u8__row: Tai apibrėžia eilutę, kurioje bus parašyta eilutė.
uint8_t u8__column: Jis apibrėžia stulpelį, kuriame bus parašyta eilutė.
uint8_t u8__cr_lf: Jei jis nustatytas 1, eilutė bus perkelta į kitą. Jei jis yra 0, spausdinimas sustoja toje pačioje eilutėje.
void hd44780_clear_screen (void): ši funkcija išvalys visą ekraną. Tai nieko negrąžina.
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 ekrane parodys nepasirašytą 16 bitų reikšmę.
uint16_t u16__value: rodomas sveikasis skaičius nurodytas pirmajame argumente.
uint8_t u8__leading_zero_handling: Jei perduodamas 0, bus rodomi nuliniai skaičiai, kad būtų rodoma sveikojo skaičiaus reikšmė. Jei bus perduota 1, nuliai bus anuliuoti. Jei 2 bus perduotas kaip parametras, bus rodomi tik reikšmingi skaitmenys.
uint8_t u8__row: Pasirenkama eilutė, kurioje rodomas sveikasis skaičius.
uint8_t u8__column: spausdinamas stulpelis parenkamas naudojant argumentą.
uint8_t u8__cr_lf: Jei jis nustatytas 1, eilutė bus perkelta į kitą. Jei jis yra 0, spausdinimas sustoja toje pačioje eilutėje.
Sąsajos skystųjų kristalų schema su MSP430
Visa grandinės schema pavaizduota žemiau esančiame paveikslėlyje. Kaip matote, aparatūros jungtys yra labai paprastos, todėl visą plokštę maitiname naudodami 5 V adapterį.
Jungtys daromos pagal pirmiau pateiktą eskizą. Išsamių jungčių ieškokite žemiau esančioje lentelėje.
Vss | 5 V maitinimo šaltinio įžeminimas |
Vdd | 5V |
V0 | Potenciometro išėjimas |
RS | P2.1 |
R / W | Žemė |
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 omų rezistorius |
K. | Žemė |
LED apšvietimo anodo negalima tiesiogiai prijungti prie 5 V maitinimo šaltinio. Jis turėtų būti prijungtas prie varžos, kad sumažėtų srovės srautas per LCD modulį. Aš užmezgiau savo ryšį naudodamas „perf board“ skydelį, kad lituočiau skystųjų kristalų ekraną, ir tada naudodamas trumpiklius, norėdamas sujungti skystųjų kristalų ekraną su „MSP430“ plokšte, mano sąranka atrodo taip žemiau, tačiau taip pat galite tiesiog naudoti duonos lentą, kad galėtumėte prisijungti.
Programavimas MSP430 naudojant „Code Composer Studio“ LCD ekranui
Visas šio projekto kodas nurodytas šio puslapio apačioje. Kodo naudojimo paaiškinimas yra toks. Pirmiausia atidarykite antraštės failą (hd44780.h) ir įtraukite mikrovaldiklio dalies numerį į pirmąją failo dalį.
#include „msp430g2553.h“
Pirmiausia reikia sustabdyti budėjimo laikmatį. Konfigūruoti mikrovaldiklio osciliatorių naudojami DCOCTL ir BCSCTL1 valdymo registrai. Žemiau pateiktose eilutėse MCLK bus sukonfigūruotas kaip 1 MHz.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
1 prievado kaiščiai turi būti paminėti kaip išvestis, kuri turi būti naudojama duomenų kaiščiams. Kaiščiai 0 ir 1 kaištis taip pat turi būti paminėti kaip išvestis 2 prievade, kuris bus naudojamas RS ir R / W kaiščiams.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Įtaisytas laikmatis naudojamas periodiškai rodyti vertes. Laikmatis A yra pasirinktas su SMCLK (1MHZ) kaip laikrodžio šaltiniu, o nepertraukiamas režimas yra darbo režimas.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
1 ir 2 palyginimo kanalų pertraukimai ir laikmačio perpildymo pertraukimas turi tą patį pertraukimo vektorių ( TIMER0_A1_VECTOR ) su skirtingais pradiniais adresais. „Capture 1“ kanalas (CCR1) kaip adresą naudoja 2, kuris naudojamas jungiklio atveju.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (negaliojantis) { switch (TA0IV) { atvejis 2: { hd44780_timer_isr (); pertrauka; } } }
Kai sukompiliuosite savo kodą, galėsite jį įkelti į „MSP430“ plokštę, kaip paaiškinta darbo pradžios su „MSP430“ pamoka. Jei viskas vyks taip, kaip tikėtasi, turėtumėte pamatyti savo LCD ekraną tam tikrą kontrastą, kaip parodyta žemiau.
Jei jūsų testas yra labai silpnas, galite pabandyti sureguliuoti potenciometrą, kad gautumėte geresnį kontrastą. Visą projekto darbą taip pat galite rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad jums patiko projektas ir jums buvo įdomu kurti savo. Jei turite klausimų, palikite juos komentarų skiltyje žemiau. Taip pat galite parašyti visus savo techninius klausimus forumuose, kad į juos atsakytumėte ar pradėtumėte diskusiją.