- 16x2 alfanumerický LCD displej
- 16x2 LCD CCS knihovna pro MSP430
- Funkce LCD pro 16x2 LCD displej na MSP430
- Schéma zapojení na rozhraní LCD s MSP430
- Programování MSP430 pomocí Code Composer Studio pro LCD displej
Tento článek je pokračováním naší výukové série o programování MSP430 pomocí Code Composer Studio. Poslední tutoriál byl založen na externích přerušeních na MSP430 pomocí GPIO pinů. Tento výukový program je o propojení displeje s MSP430, pokud jde o zobrazení 16 * 2 LCD displeje, je to první volba pro každého elektronického fanda. Dříve jsme také propojili LCD s MSP430 pomocí Arduino IDE, v tomto tutoriálu použijeme nativní studiovou platformu Code Composer namísto použití Arduino IDE, čímž získáme větší flexibilitu.
Chcete-li se dozvědět více o 16x2 LCD displeji a jeho použití s jinými mikrokontroléry, podívejte se níže na výukové programy.
- Propojení LCD s ATmega16
- Propojení LCD s Raspberry Pi
- Propojení LCD s mikrokontrolérem PIC
- Propojovací LCD s ARM7-LPC2148
- Propojení LCD s NodeMCU
- Propojení LCD s STM32
- Propojení LCD s MSP430G2
- Propojení LCD s STM8
Má vestavěný IC hd44780, který může ukládat příkaz a data předaná do něj. Modul LCD má přibližně 16 pinů. 8 z nich jsou datové kolíky, 4 z nich jsou napájecí kolíky pro podsvícení LED a celý LCD modul, 3 pro ovládání provozu a 1 kolík pro nastavení kontrastu. Výukový program je založen na knihovně vytvořené Dennisem Eichmannem. Je velmi snadné používat knihovnu se samostatnými funkcemi pro tisk různých datových typů. Má také ustanovení pro zobrazení dat v různých formách s úvodními, prázdnými a odstraněnými nulami. Je to docela rozsáhlá a komplexní knihovna a je konfigurovatelná pro různá připojení. Zde je soubor záhlaví upraven tak, aby vyhovoval 8pinové paralelní konfiguraci pro datovou komunikaci.
16x2 alfanumerický LCD displej
Obecný displej 16 × 2 má vestavěný integrovaný obvod hd44780 IC (níže zakroužkovaný červeně), který může ukládat příkaz a data předaná do něj. Modul LCD má přibližně 16 pinů. 8 z nich jsou datové kolíky, 4 z nich jsou napájecí kolíky pro podsvícení LED a celý LCD modul, 3 pro ovládání provozu a 1 kolík pro nastavení kontrastu.
Tento LCD modul je zobrazen nad univerzálně a ve srovnání s jinými segmentovanými LCD využívá minimální počet pinů. Pokud jste zvědaví, jak přesně to všechno funguje, měli byste se podívat na fungování 16x2 LCD displeje, kde jsme již diskutovali o tom, jak LCD funguje podrobně.
RS Pin: RS = 1 povolí datový registr na LCD, který se používá k zápisu hodnot do datového registru na LCD. RS = 0 povolí instrukční registr na LCD.
Enable pin: Negative edge-triggered; při změně pinu ze stavu VYSOKÝ do stavu NÍZKÝ je LCD vyzván k zápisu na datové piny. Pozitivní spuštění hrany; při změně pinu ze stavu LOW do stavu HIGH se na LCD zobrazí výzva ke čtení z datových pinů.
R / W pin: R / W = 0 zapíše do instrukčního registru nebo datového registru podle výběru RS pinu. R / W = 1 bude číst z IR nebo DR podle výběru kolíku RS.
Provoz RS R / W
0 0 IR zápis jako interní operace (jasný displej atd.)
0 1 Číst zaneprázdněný příznak (DB7) a čítač adres (DB0 až DB6)
1 0 DR zápis jako interní operace (DR na DDRAM nebo CGRAM)
1 1 DR číst jako interní operace (DDRAM nebo CGRAM to DR)
Kolíky D0-D7: Data jsou přenášena do az příkazových a datových registrů prostřednictvím těchto kolíků.
Napájecí piny: Piny V ss, V dd se používají k napájení LCD modulu. Kolíky A, K napájí podsvícení LED. Kolíky V 0 se používají k ovládání kontrastu.
16x2 LCD CCS knihovna pro MSP430
Výukový program je založen na knihovně vytvořené Dennisem Eichmannem. Je velmi snadné používat knihovnu se samostatnými funkcemi pro tisk různých datových typů. Má také ustanovení pro zobrazení dat v různých formách s úvodními, prázdnými a odstraněnými nulami. Je to docela rozsáhlá a komplexní knihovna a je konfigurovatelná pro různá připojení. Zde je soubor záhlaví upraven tak, aby vyhovoval 8pinové paralelní konfiguraci pro datovou komunikaci. Knihovnu lze stáhnout z níže uvedeného odkazu. Po stažení postupujte podle níže uvedených kroků a přidejte knihovnu do CCS.
Stáhněte si knihovnu 16x2 pro MSP430 - Code Composer Studio
Krok 1: Vytváření souborů a projektů
Pomocí nabídky Soubor se vytvoří výchozí projekt CCS. V dialogovém okně Vytvořit projekt vyberte zařízení a jako název projektu zadejte hd44780. V části Typ projektu a nástrojová řada vyberte typ výstupu jako statickou knihovnu a vytvořte projekt.
V pruhu Průzkumníka projektu (vlevo) vytvořte soubor záhlaví ve složce zahrnutí a pojmenujte jej jako hd44780.h . Poté zkopírujte obsah staženého souboru hd44780.h do tohoto nově vytvořeného.
Nyní vytvořte hlavní projekt změnou typu výstupu na spustitelný soubor a vytvořte projekt s názvem CCS_LCD .
Krok 2: Zahrňte vyhledávací cesty do hlavního projektu
V dialogovém okně vlastností projektu hd44780 a uvnitř možností zahrnutí pro kompilátor MSP430 přidejte složku pro zahrnutí do souboru do vyhledávací cesty.
Poté vytvořte tento projekt a vytvořte potřebné soubory linkeru, například soubory.lib . Budování tohoto vytvoří soubor hd44780.lib uvnitř složky ladění.
Krok 3: Zahrňte vyhledávací cesty pro Linker
V dialogovém okně vlastností pro projekt CCS_LCD a v cestě hledání souboru na kartě Linker MSP430 zahrňte soubor hd44780.lib umístěný uvnitř složky ladění projektu hd44780. Složka ladění je také součástí cesty hledání souboru.
Složka zahrnutí je znovu přidána k možnostem zahrnutí kompilátoru MSP430 projektu CCS_LCD .
Knihovna je úspěšně zkompilována a přidána do linkeru hlavního projektu.
Funkce LCD pro 16x2 LCD displej na MSP430
void hd44780_timer_isr (void): Toto se pravidelně volá v ISR časovače A. Časovač A se používá k pravidelnému provádění funkcí LCD, jako je čištění obrazovky, nastavení kurzoru a zobrazování dat. Tato funkce má být použita v ISR. Nic nevrací.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Zapíše řetězec uvedený v prvním argumentu.
char * ch__string: Řetězec, který se má zapsat do datové vyrovnávací paměti (uvnitř funkce hd44780_timer_isr ). Při pravidelném volání hd44780_timer_isr budou data zkopírována do datového registru a registru instrukcí LCD IC.
uint8_t u8__row: Definuje řádek, do kterého bude řetězec zapsán.
uint8_t u8__column: Definuje sloupec, do kterého bude řetězec zapsán.
uint8_t u8__cr_lf: Je-li nastavena hodnota 1, bude řádek přenesen na další. Pokud je 0, tisk se zastaví na stejném řádku.
void hd44780_clear_screen (void): Tato funkce vymaže celou obrazovku. Nic nevrací.
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): Funkce zobrazí nezměněné 16bitové umístění.
uint16_t u16__value: Celé číslo, které se má zobrazit, je uvedeno v prvním argumentu.
uint8_t u8__leading_zero_handling: Pokud je předána 0, zobrazí se úvodní nuly k celé hodnotě. Pokud je zadána 1, nuly budou prázdné. Pokud je jako parametr předána 2, zobrazí se pouze významné číslice.
uint8_t u8__row: Je vybrán řádek, ve kterém je zobrazeno celé číslo.
uint8_t u8__column: Sloupec, který se má vytisknout, se vybere pomocí argumentu.
uint8_t u8__cr_lf: Je-li nastavena hodnota 1, bude řádek přenesen na další. Pokud je 0, tisk se zastaví na stejném řádku.
Schéma zapojení na rozhraní LCD s MSP430
Kompletní schéma zapojení je znázorněno na následujícím obrázku. Jak vidíte, hardwarové připojení je velmi jednoduché a celou desku jsme napájeli pomocí 5V adaptéru.
Spojení se provádí podle výše uvedeného náčrtu. Podrobná připojení najdete v následující tabulce.
Vss | Uzemnění 5V napájecího zdroje |
Vdd | 5V |
V0 | Výstup potenciometru |
RS | P2.1 |
R / W | Přízemní |
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 ohmový rezistor |
K. | Přízemní |
Anodu LED podsvícení nelze připojit přímo k napájení 5 V. Měl by být připojen k odporu, aby se minimalizoval tok proudu přes modul LCD. Udělal jsem svá připojení pomocí desky perf k pájení LCD a poté pomocí propojovacích vodičů k připojení LCD k desce MSP430, moje nastavení vypadá takto níže, ale můžete také jednoduše použít prkénko pro připojení.
Programování MSP430 pomocí Code Composer Studio pro LCD displej
Celý kód použitý v tomto projektu je uveden ve spodní části této stránky. Vysvětlení použití kódu je následující. Nejprve otevřete soubor záhlaví (hd44780.h) a do první části souboru vložte číslo součásti mikrokontroléru.
#include "msp430g2553.h"
Nejprve je třeba zastavit časovač hlídacího psa. Řídicí registry DCOCTL a BCSCTL1 se používají ke konfiguraci oscilátoru mikrokontroléru. Řádky níže nakonfigurují MCLK na 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Kolíky portu 1 je třeba zmínit jako výstup, který se použije pro datové piny. Pin 0 a pin 1 je také třeba zmínit jako výstup v portu 2, který bude použit pro RS a R / W pin.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Integrovaný časovač se používá k pravidelnému zobrazování hodnot. Časovač A je vybrán s SMCLK (1MHZ) jako zdroj hodin a nepřetržitý režim je provozní režim.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Přerušení pro porovnávací kanály 1 a 2 a přerušení přetečení časovače sdílejí stejný vektor přerušení ( TIMER0_A1_VECTOR ) s různými počátečními adresami. Zachycení porovnání kanál 1 (CCR1) používá 2 jako adresa, který je používán v tělesu přepínače.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { případ 2: { hd44780_timer_isr (); přestávka; } } }
Jakmile budete mít svůj kód zkompilovaný, můžete jej nahrát na desku MSP430, jak je vysvětleno v úvodní části tutoriálu MSP430. Pokud vše půjde podle očekávání, měli byste vidět na LCD displeji určitý kontrast, jak je znázorněno níže.
Pokud je váš test velmi slabý, můžete zkusit upravit potenciometr, abyste dosáhli lepšího kontrastu. Kompletní fungování projektu najdete také ve videu, na které odkazujete níže. Doufám, že se vám projekt líbil a bylo pro vás zajímavé vytvořit si vlastní. Máte-li jakékoli dotazy, nechte je prosím v sekci komentářů níže. Můžete také napsat všechny své technické dotazy na fóra, abyste jim odpověděli nebo zahájili diskusi.