- 16x2 burtciparu LCD displejs
- 16x2 LCD CCS bibliotēka MSP430
- LCD funkcijas 16x2 LCD displejam uz MSP430
- Shēmas shēma uz saskarnes LCD ar MSP430
- Programmējot MSP430, izmantojot Code Composer Studio LCD displejam
Šis raksts ir turpinājums mūsu apmācību sērijai par MSP430 programmēšanu, izmantojot Code Composer Studio. Pēdējā apmācība tika balstīta uz ārējiem pārtraukumiem MSP430, izmantojot GPIO tapas. Šī apmācība ir par displeja saskarni ar MSP430, kad rāda 16 * 2 LCD displeju, tā ir pirmā izvēle jebkuram elektroniskajam hobijam. Iepriekš mēs esam arī saskarnes LCD saskarni ar MSP430, izmantojot Arduino IDE, šajā apmācībā mēs izmantosim vietējo Code Composer studijas platformu, nevis izmantosim Arduino IDE, tādējādi kā dizainers mēs iegūstam lielāku elastību.
Lai uzzinātu vairāk par 16x2 LCD displeju un tā lietošanu kopā ar citiem mikrokontrolleriem, lūdzu, skatiet tālāk norādītās apmācības.
- Mijiedarbojas LCD ar ATmega16
- Saskarnes LCD ar Raspberry Pi
- Saskarnes LCD ar PIC mikrokontrolleru
- Saskarnes LCD ar ARM7-LPC2148
- Saskarnes LCD ar NodeMCU
- Saskarnes LCD ar STM32
- Saskarnes LCD ar MSP430G2
- Saskarnes LCD ar STM8
Tam ir iebūvēts IC hd44780, kas var saglabāt tam pārsūtīto komandu un datus. LCD modulim ir aptuveni 16 tapas. No tiem 8 ir datu tapas, 4 no tām ir apgaismojuma LED un visa LCD moduļa padeves tapas, 3 darbības kontrolei un 1 tapa kontrasta regulēšanai. Mācību pamatā ir Denisa Eihmana izveidotā bibliotēka. Dažādu datu tipu drukāšanai ir ļoti viegli izmantot bibliotēku ar atsevišķām funkcijām. Tajā ir arī noteikumi par datu parādīšanu dažādās formās ar nulles sākuma, neaizpildītu un dzēstu nulli. Tā ir diezgan plaša un visaptveroša bibliotēka, un to var konfigurēt dažādiem savienojumiem. Šeit galvenes fails ir modificēts, lai tajā būtu 8 kontaktu paralēla konfigurācija datu saziņai.
16x2 burtciparu LCD displejs
Vispārīgajam 16x2 displejam ir iebūvēts hd44780 IC (zem tā ir apvilkts sarkanā krāsā), kas var glabāt tam nodoto komandu un datus. LCD modulim ir aptuveni 16 tapas. No tiem 8 ir datu tapas, 4 no tām ir apgaismojuma LED un visa LCD moduļa padeves tapas, 3 darbības kontrolei un 1 tapa kontrasta regulēšanai.
Šis LCD modulis ir parādīts iepriekš daudzpusīgi un izmanto minimālos tapas, salīdzinot ar citiem segmentētajiem LCD. Ja vēlaties zināt, kā tieši tas viss darbojas, jums jāpārbauda 16x2 LCD displeja darbība, kur mēs jau esam detalizēti apsprieduši LCD darbību.
RS piespraude: RS = 1 ļaus LCD reģistrēt datu reģistru, kas tiek izmantots vērtību ierakstīšanai LCD datu reģistrā. RS = 0 iespējos LCD instrukciju reģistru.
Iespējot tapu: aktivizēta negatīva mala; kad tapa tiek mainīta no HIGH stāvokļa uz LOW stāvokli, LCD tiek piedāvāts rakstīt uz datu tapām. Pozitīva mala iedarbināta; kad tapa ir nomainīta no LOW stāvokļa uz HIGH stāvokli, LCD tiek piedāvāts nolasīt no datu tapām.
R / W tapa: R / W = 0 ierakstīs komandu reģistrā vai datu reģistrā atbilstoši RS tapas izvēlei. R / W = 1 tiks nolasīts no IR vai DR atbilstoši RS tapas izvēlei.
RS R / W darbība
0 0 IR rakstīšana kā iekšēja darbība (displejs skaidrs utt.)
0 1 Lasīt aizņemtības karodziņu (DB7) un adreses skaitītāju (DB0 – DB6)
1 0 DR rakstīšana kā iekšēja darbība (DR uz DDRAM vai CGRAM)
1 1 DR lasāms kā iekšēja darbība (no DDRAM vai CGRAM uz DR)
D0-D7 tapas: caur šīm tapām dati tiek pārsūtīti uz komandu un datu reģistriem un no tiem.
Barošanas tapas: V ss, V dd tapas tiek izmantotas, lai darbinātu LCD moduli. LED apgaismojumu darbina A, K tapas. Kontrasta kontrolei izmanto V 0 tapas.
16x2 LCD CCS bibliotēka MSP430
Mācību pamatā ir Denisa Eihmana izveidotā bibliotēka. Dažādu datu tipu drukāšanai ir ļoti viegli izmantot bibliotēku ar atsevišķām funkcijām. Tajā ir arī noteikumi par datu parādīšanu dažādās formās ar nulles sākuma, neaizpildītu un dzēstu nulli. Tā ir diezgan plaša un visaptveroša bibliotēka, un to var konfigurēt dažādiem savienojumiem. Šeit galvenes fails ir modificēts, lai tajā būtu 8 kontaktu paralēla konfigurācija datu saziņai. Bibliotēku var lejupielādēt no šīs saites, pēc lejupielādes veiciet tālāk norādītās darbības, lai bibliotēku pievienotu CCS.
Lejupielādējiet 16x2 bibliotēku MSP430 - Code Composer Studio
1. darbība: failu un projektu izveide
CCS noklusējuma projekts tiek izveidots, izmantojot failu izvēlni. Dialoglodziņā Izveidot projektu atlasiet ierīci un kā projekta nosaukumu norādiet hd44780. Sadaļā Projekta tips un rīku ķēde atlasiet izvades veidu kā Statiskā bibliotēka un izveidojiet projektu.
Programmas Project Explorer joslā (kreisajā pusē) mapē include izveidojiet galvenes failu un nosauciet to kā hd44780.h . Pēc tam nokopējiet lejupielādētā faila hd44780.h saturu šajā jaunizveidotajā.
Tagad izveidojiet galveno projektu, nomainot izvades tipu uz izpildāmo, un izveidojiet projektu ar nosaukumu CCS_LCD .
2. darbība: iekļaujiet galvenajā projektā meklēšanas ceļus
Projekta hd44780 rekvizītu dialoglodziņā un MSP430 kompilatora iekļaušanas opciju iekšpusē failā pievienojiet mapi Meklēšanas ceļš.
Pēc tam izveidojiet šo projektu, lai izveidotu nepieciešamos saites failus, piemēram, .lib failus . Veidojot šo, atkļūdošanas mapē tiks izveidots fails hd44780.lib .
3. darbība: iekļaujiet Linker meklēšanas ceļus
CCS_LCD projekta rekvizītu dialoglodziņā un cilnes MSP430 Linker failu meklēšanas ceļā iekļaujiet hd44780.lib, kas atrodas projekta hd44780 atkļūdošanas mapē. Atkļūdošanas mape ir iekļauta arī failu meklēšanas ceļā.
Iekļaušanas mape atkal tiek pievienota CCS_LCD projekta kompilatora MSP430 iekļaušanas opcijām .
Bibliotēka ir veiksmīgi sastādīta un pievienota galvenā projekta saitei.
LCD funkcijas 16x2 LCD displejam uz MSP430
void hd44780_timer_isr (void): To periodiski sauc taimera A ISR. Taimeris A tiek izmantots, lai periodiski veiktu LCD funkcijas, piemēram, ekrāna notīrīšanu, kursora iestatīšanu un datu parādīšanu. Funkcija jāizmanto ISR. Tas neko neatgriež.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): tā rakstīs virkni, kas norādīta pirmajā argumentā.
char * ch__string: virkne, kas ierakstāma datu buferī (funkcijas hd44780_timer_isr iekšpusē). Kad periodiski tiek izsaukts hd44780_timer_isr, dati tiks kopēti LCD IC datu reģistrā un instrukciju reģistrā.
uint8_t u8__row: Tas nosaka rindu, kurā tiks ierakstīta virkne.
uint8_t u8__column: Tas nosaka kolonnu, kurā tiks ierakstīta virkne.
uint8_t u8__cr_lf: Ja tas ir iestatīts 1, rinda tiks pārnesta uz nākamo. Ja tas ir 0, drukāšana tiek apstādināta tajā pašā rindā.
void hd44780_clear_screen (void): Šī funkcija notīrīs visu ekrānu. Tas neko neatgriež.
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 parādīs neparakstītās 16-bit vērtības LCD neparādītajā vietā - LCD parādīs neparakstītās 16-bit vērtības.
uint16_t u16__value: Parādāmais skaitlis ir norādīts pirmajā argumentā.
uint8_t u8__leading_zero_handling: Ja tiek nodots 0, tiks rādītas nulles ar nulli, līdz tiks parādīta veselā skaitļa vērtība. Ja tiek izturēts 1, nulles tiks aizpildītas. Ja kā parametrs tiek nodots 2, tiks parādīti tikai nozīmīgie cipari.
uint8_t u8__row: ir atlasīta rinda, kurā tiek parādīts vesels skaitlis.
uint8_t u8__column: Drukājamā kolonna tiek atlasīta, izmantojot argumentu.
uint8_t u8__cr_lf: Ja tas ir iestatīts 1, rinda tiks pārnesta uz nākamo. Ja tas ir 0, drukāšana tiek apstādināta tajā pašā rindā.
Shēmas shēma uz saskarnes LCD ar MSP430
Pilna shēma ir parādīta zemāk esošajā attēlā. Kā redzat, aparatūras savienojumi ir ļoti vienkārši, un mēs esam piegādājuši visu plāksni, izmantojot 5V adapteri.
Savienojumi tiek veikti saskaņā ar iepriekšminēto skici. Lūdzu, skatiet zemāk esošo tabulu, lai iegūtu detalizētus savienojumus.
Vss | 5V barošanas avota zeme |
Vdd | 5V |
V0 | Potenciometra izeja |
RS | P2.1 |
R / W | Zeme |
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 omu rezistors |
K | Zeme |
LED apgaismojuma anodu nevar tieši savienot ar 5V barošanu. Tam jābūt savienotam ar pretestību, lai samazinātu pašreizējo plūsmu caur LCD moduli. Esmu izveidojis savienojumus, izmantojot LCD paneļa lodēšanai izmantoto perf plāksni, un pēc tam izmantoju džempera vadus, lai savienotu LCD ar MSP430 paneli. Mana iestatīšana izskatās šādi, bet savienojumu izveidošanai varat arī vienkārši izmantot paneļu.
Programmējot MSP430, izmantojot Code Composer Studio LCD displejam
Pilns šajā projektā izmantotais kods ir norādīts šīs lapas apakšdaļā. Koda izmantošanas skaidrojums ir šāds. Vispirms atveriet galvenes failu (hd44780.h) un faila pirmajā daļā iekļaujiet mikrokontrollera daļas numuru.
#include "msp430g2553.h"
Vispirms ir jāpārtrauc sardzes taimeris. DCOCTL un BCSCTL1 vadības reģistri tiek izmantoti, lai konfigurētu mikrokontrollera oscilatoru. Zemāk esošajās rindās MCLK tiks konfigurēts kā 1MHz.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Kā izeja ir jāpiemin 1. porta tapas, kas jāizmanto datu tapām. Tapa 0 un tapa 1 ir jāpiemin arī kā izeja portā 2, ko izmantos RS un R / W tapām.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Lai periodiski parādītu vērtības, tiek izmantots iebūvētais taimeris. Taimeris A tiek izvēlēts ar SMCLK (1MHZ) kā pulksteņa avotu, un nepārtrauktais režīms ir darbības režīms.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
1. un 2. kanāla salīdzināšanas pārtraukumiem un taimera pārpildes pārtraukumam ir viens un tas pats pārtraukuma vektors ( TIMER0_A1_VECTOR ) ar dažādām sākuma adresēm. Tveršanas salīdzināšanas 1. kanāls (CCR1) kā adresi izmanto 2, kas tiek izmantots slēdža gadījumā.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); pārtraukums; } } }
Kad esat apkopojis kodu, varat to augšupielādēt MSP430 dēlī, kā paskaidrots darba sākšanā ar MSP430 apmācību. Ja viss notiek, kā paredzēts, jums vajadzētu redzēt LCD displeja kontrastu, kā parādīts zemāk.
Ja jūsu tests ir ļoti blāvs, varat mēģināt pielāgot potenciometru, lai iegūtu labāku kontrastu. Pilnīga projekta darbība ir atrodama arī zemāk esošajā videoklipā. Ceru, ka jums patika projekts un jums šķita interesanti izveidot savu. Ja jums ir kādi jautājumi, lūdzu, atstājiet tos komentāru sadaļā zemāk. Varat arī rakstīt visus tehniskos jautājumus forumos, lai uz tiem atbildētu vai sāktu diskusiju.