- 16x2 Alphanumeric LCD Display
- 16x2 LCD CCS Library para sa MSP430
- Mga LCD Function para sa 16x2 LCD Display sa MSP430
- Circuit Diagram sa Interface LCD na may MSP430
- Programming MSP430 gamit ang Code Composer Studio para sa LCD Display
Ang artikulong ito ay ang pagpapatuloy ng aming serye ng tutorial sa pag-program ng MSP430 gamit ang Code Composer Studio. Ang huling tutorial ay batay sa mga panlabas na pagkagambala sa MSP430 gamit ang mga GPIO pin. Ang tutorial na ito ay tungkol sa interface ng isang display sa MSP430, pagdating sa pagpapakita ng 16 * 2 LCD Display, ito ang unang pagpipilian para sa anumang elektronikong hobbyist. Dati naka-interfaced din kami ng LCD sa MSP430 gamit ang Arduino IDE, sa tutorial na ito, gagamitin namin ang katutubong platform ng Code Composer studio sa halip na gamitin ang Arduino IDE, sa ganitong paraan bilang isang taga-disenyo, nakakakuha kami ng higit na kakayahang umangkop.
Upang matuto nang higit pa tungkol sa 16x2 LCD display at gamitin ito sa iba pang mga microcontroller, mangyaring tingnan ang mga tutorial sa ibaba.
- Pag-interface ng LCD sa ATmega16
- Ang pagitan ng LCD sa Raspberry Pi
- Ang interface ng LCD sa PIC Microcontroller
- Ang pagitan ng LCD na may ARM7-LPC2148
- Ang interface ng LCD sa NodeMCU
- Ang interface ng LCD na may STM32
- Ang interface ng LCD sa MSP430G2
- Pag-interface ng LCD sa STM8
Mayroon itong built-in na IC hd44780 na maaaring mag-imbak ng utos at data na naipasa rito. Ang Module ng LCD ay may halos 16 na mga pin. 8 sa mga ito ay mga pin ng data, 4 sa mga ito ay mga supply pin para sa backlight LED at ang buong module ng LCD, 3 para sa pagkontrol sa operasyon, at 1 pin para sa pagsasaayos ng kaibahan. Ang tutorial ay batay sa silid aklatan na nilikha ni Dennis Eichmann. Napakadaling gumamit ng isang silid-aklatan na may magkakahiwalay na pag-andar upang mai-print ang iba't ibang mga uri ng data. Mayroon din itong mga probisyon upang ipakita ang data sa iba't ibang mga form na may mga nangungunang, blangko, at tinanggal na mga zero. Ito ay isang medyo malawak at komprehensibong library at mai-configure sa iba't ibang mga koneksyon. Dito, binago ang header file upang mapaunlakan ang isang 8-pin parallel na pagsasaayos para sa komunikasyon ng data.
16x2 Alphanumeric LCD Display
Ang isang generic na 16x2 Display ay may isang nakapaloob na hd44780 IC (bilugan sa pula sa ibaba), na maaaring mag-imbak ng utos at ipinasa ang data dito. Ang Module ng LCD ay may halos 16 na mga pin. 8 sa mga ito ay mga pin ng data, 4 sa mga ito ay mga supply pin para sa backlight LED at ang buong module ng LCD, 3 para sa pagkontrol sa operasyon, at 1 pin para sa pagsasaayos ng kaibahan.
Ang module na ito ng LCD ay ipinapakita sa itaas maraming nalalaman at gumagamit ng mga minimum na pin kumpara sa iba pang mga segment na LCD. Kung gusto mong malaman kung paano eksaktong gumagana ang lahat ng ito, dapat mong suriin ang pagtatrabaho ng 16x2 LCD display kung saan tinalakay na namin kung paano gumagana nang detalyado ang LCD.
Ang RS Pin: Ang RS = 1 ay magpapagana ng rehistro ng data sa LCD, na ginagamit upang isulat ang mga halaga sa rehistro ng data sa LCD. Paganahin ng RS = 0 ang rehistro ng Pagtuturo ng LCD.
Paganahin ang pin: Negatibong naka-trigger sa gilid; kapag ang pin ay binago mula sa Mataas na estado sa LOW state, sinenyasan ang LCD na sumulat sa mga pin ng data. Positive na nag-trigger ng gilid; kapag ang pin ay binago mula sa LOW state patungo sa TAAS na estado, sinenyasan ang LCD na basahin mula sa mga pin ng data.
R / W pin: R / W = 0 ay susulat sa rehistro ng tagubilin o rehistro ng data ayon sa pagpili ng RS pin. Ang R / W = 1 ay babasahin mula sa IR o DR ayon sa pagpili ng RS pin.
Operasyon ng RS R / W
0 0 IR magsulat bilang isang panloob na operasyon (ipakita ang malinaw, atbp.)
0 1 Basahin ang abalang bandila (DB7) at address counter (DB0 hanggang DB6)
1 0 DR magsulat bilang isang panloob na operasyon (DR sa DDRAM o CGRAM)
Nabasa ang 1 1 DR bilang isang panloob na operasyon (DDRAM o CGRAM to DR)
D0-D7 pin: Ang data ay inililipat sa at mula sa utos at pagrehistro ng data sa pamamagitan ng mga pin na ito.
Mga supply pin: Ginagamit ang V ss, V dd pin upang mapagana ang LCD Module. Ang A, K pin ay magpapagana sa LED backlight. Ginagamit ang V 0 pins upang makontrol ang kaibahan.
16x2 LCD CCS Library para sa MSP430
Ang tutorial ay batay sa silid aklatan na nilikha ni Dennis Eichmann. Napakadaling gumamit ng isang silid-aklatan na may magkakahiwalay na pag-andar upang mai-print ang iba't ibang mga uri ng data. Mayroon din itong mga probisyon upang ipakita ang data sa iba't ibang mga form na may mga nangungunang, blangko, at tinanggal na mga zero. Ito ay isang medyo malawak at komprehensibong library at mai-configure sa iba't ibang mga koneksyon. Dito, binago ang header file upang mapaunlakan ang isang 8-pin parallel na pagsasaayos para sa komunikasyon ng data. Maaaring ma-download ang library mula sa link sa ibaba, pagkatapos ng pag-download ay sinusundan mo ang mga hakbang sa ibaba upang idagdag ang library sa CCS.
Mag-download ng 16x2 Library para sa MSP430 - Code Composer Studio
Hakbang 1: Paglikha ng Mga File at Mga Proyekto
Ang isang default na proyekto ng CCS ay nilikha gamit ang menu ng file. Sa kahon ng dialogo ng Lumikha ng Proyekto, piliin ang aparato at bigyan ang hd44780 bilang isang pangalan ng proyekto. Sa ilalim ng uri ng proyekto at toolchain, piliin ang uri ng output bilang isang Static library at likhain ang proyekto.
Sa Project Explorer lane (kaliwang bahagi), lumikha ng isang header file sa loob ng isama ang folder at pangalanan ito bilang hd44780.h . Pagkatapos kopyahin ang mga nilalaman ng na-download na hd44780.h file sa bagong nilikha na ito.
Lumikha ngayon ng pangunahing proyekto sa pamamagitan ng pagbabago ng uri ng output sa isang maipapatupad at lumikha ng isang proyekto na pinangalanang CCS_LCD .
Hakbang 2: Isama ang Mga Landas sa Paghahanap sa Pangunahing Proyekto
Sa kahon ng dialogo ng mga pag-aari ng proyekto ng hd44780 at sa loob ng isama ang mga pagpipilian para sa tagatala ng MSP430, idagdag ang isama ang folder sa file na landas sa paghahanap.
Pagkatapos, buuin ang proyektong ito upang lumikha ng kinakailangang mga file ng linker tulad ng .lib na mga file . Ang pagbuo nito ay lilikha ng hd44780.lib file sa loob ng debug folder.
Hakbang 3: Isama ang Mga Landas sa Paghahanap para sa Linker
Sa kahon ng dialogo ng mga pag-aari para sa proyekto ng CCS_LCD at sa landas ng paghahanap ng file ng tab na MSP430 Linker, isama ang hd44780.lib na matatagpuan sa loob ng debug folder ng proyekto ng hd44780. Ang debug folder ay kasama rin sa path ng paghahanap ng file.
Ang folder na isama ay muling idinagdag sa mga pagpipilian ng isama ang tagatala ng MSP430 ng proyekto ng CCS_LCD .
Ang library ay matagumpay na naipon at naidagdag sa linker ng pangunahing proyekto.
Mga LCD Function para sa 16x2 LCD Display sa MSP430
void hd44780_timer_isr (void): Pana-panahong tinatawag ito sa ISR ng Timer A. Ginagamit ang Timer A upang pana-panahong gawin ang mga pagpapaandar ng LCD tulad ng pag-clear sa screen, pagtatakda ng cursor, at pagpapakita ng data. Ang pagpapaandar ay gagamitin sa ISR. Wala itong ibinabalik.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Isusulat nito ang string na tinukoy sa unang argumento.
char * ch__string: Ang string na isusulat sa buffer ng data (sa loob ng pag- andar ng hd44780_timer_isr ). Ang data ay makopya sa rehistro ng data at rehistro ng pagtuturo ng LCD IC kapag pana-panahong tinawag ang hd44780_timer_isr .
uint8_t u8__row: Tinutukoy nito ang hilera kung saan isusulat ang string.
uint8_t u8__column: Tinutukoy nito ang haligi kung saan isusulat ang string.
uint8_t u8__cr_lf: Kung ito ay itinakda 1, ang hilera ay dadalhin sa susunod. Kung ito ay 0, ang pagpi-print ay hihinto sa parehong hilera.
void hd44780_clear_screen (void): Ang function na ito ay tatanggalin ang buong screen. Wala itong ibinabalik.
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): Ipapakita ng pagpapaandar ang hindi naka-sign na 16-bit na halaga sa nais na LCD.
uint16_t u16__value: Ang integer na ipapakita ay ibinibigay sa unang argumento.
uint8_t u8__leading_zero_handling: Kung ang 0 ay naipasa, ipapakita ang mga humahantong na zero sa halagang integer. Kung ang 1 ay naipasa, ang mga zero ay mawawalan ng bisa. Kung ang 2 ay naipasa bilang isang parameter, ang mga makabuluhang digit lamang ang ipapakita.
uint8_t u8__row: Ang hilera kung saan ipinakita ang integer ay napili.
uint8_t u8__column: Ang haligi upang mai-print ay napili gamit ang argument.
uint8_t u8__cr_lf: Kung ito ay itinakda 1, ang hilera ay dadalhin sa susunod. Kung ito ay 0, ang pagpi-print ay hihinto sa parehong hilera.
Circuit Diagram sa Interface LCD na may MSP430
Ang kumpletong diagram ng circuit ay isinalarawan sa larawan sa ibaba. Tulad ng nakikita mo, ang mga koneksyon sa hardware ay napaka-simple at pinalakas namin ang kumpletong board sa pamamagitan ng paggamit ng isang 5V adapter.
Ang mga koneksyon ay ginawa ayon sa sketch sa itaas. Mangyaring tingnan ang talahanayan sa ibaba para sa detalyadong mga koneksyon.
Vss | Ground ng 5V Power Supply |
Vdd | 5V |
V0 | Potentiometer Output |
Ang RS | P2.1 |
R / W | Lupa |
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 Resistor |
K | Lupa |
Ang anode ng LED backlight ay hindi maaaring konektado nang direkta sa isang 5V supply. Dapat itong konektado sa isang paglaban upang mabawasan ang kasalukuyang daloy sa pamamagitan ng LCD Module. Ginawa ko ang aking mga koneksyon gamit ang isang perf board upang maghinang ng LCD at pagkatapos ay ginamit ang mga jumper wires upang ikonekta ang LCD sa board na MSP430, ang aking set-up ay ganito sa ibaba ngunit maaari mo ring gamitin ang isang breadboard upang gawin ang iyong mga koneksyon.
Programming MSP430 gamit ang Code Composer Studio para sa LCD Display
Ang kumpletong code na ginamit sa proyektong ito ay ibinibigay sa ilalim ng pahinang ito. Ang paliwanag ng paggamit ng code ay ang mga sumusunod. Una, buksan ang file ng header (hd44780.h) at isama ang numero ng bahagi ng microcontroller sa unang bahagi ng file.
# isama ang "msp430g2553.h"
Ang tigbantay ng timer ay dapat munang ihinto. Ang mga rehistro ng control ng DCOCTL at BCSCTL1 ay ginagamit upang mai-configure ang oscillator ng microcontroller. Ang mga linya sa ibaba ay isasaayos ang MCLK upang maging 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Ang port 1 pin ay dapat na nabanggit bilang output, na kung saan ay gagamitin para sa mga data pin. Ang pin 0 at pin 1 ay dapat ding mabanggit bilang output sa port 2, na gagamitin para sa RS at R / W pin.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Ginagamit ang inbuilt timer upang maipakita ang mga halaga nang pana-panahon. Napili ang timer A kasama ang SMCLK (1MHZ) bilang mapagkukunan ng orasan at tuluy-tuloy na mode na mode ng pagpapatakbo.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Ang mga nakakagambala para sa paghahambing ng mga channel na 1 at 2 at ang pag-overflow ng timer ay nakakagambala na nagbabahagi ng parehong nakakagambalang vector ( TIMER0_A1_VECTOR ) na may iba't ibang mga panimulang address. Ang Capture Compare channel 1 (CCR1) ay gumagamit ng 2 bilang address, na ginagamit sa switch case.
#pragma vector = TIMER0_A1_VECTOR __ makagambala sa walang bisa timer_0_a1_isr (walang bisa) { switch (TA0IV) { case 2: { hd44780_timer_isr (); pahinga; } } }
Kapag naipon mo ang iyong code, maaari mo itong i-upload sa board ng MSP430, tulad ng ipinaliwanag sa pagsisimula sa tutorial ng MSP430. Kung ang lahat ay napupunta sa inaasahan, dapat mong makita ang iyong LCD na nagpapakita ng ilang kaibahan tulad ng ipinakita sa ibaba.
Kung ang iyong pagsubok ay masyadong malabo, maaari mong subukang isaayos ang potensyomiter upang makakuha ng mas mahusay na kaibahan. Ang kumpletong pagtatrabaho ng proyekto ay maaari ding makita sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa proyekto at nahanap mo itong nakakainteres na bumuo ng iyong sarili. Kung mayroon kang anumang mga katanungan, mangyaring iwanan ang mga ito sa seksyon ng komento sa ibaba. Maaari mo ring isulat ang lahat ng iyong mga teknikal na katanungan sa mga forum upang masagot sila o upang makapagsimula ng isang talakayan.