- 16x2 alfanumerikus LCD kijelző
- 16x2 LCD CCS könyvtár MSP430-hoz
- LCD funkciók a 16x2 LCD kijelzőhöz az MSP430-on
- Áramkör diagram az interfész LCD-hez MSP430-mal
- Az MSP430 programozása az LCD kijelző Code Composer Studio segítségével
Ez a cikk az oktatósorozatunk folytatása az MSP430 programozásáról a Code Composer Studio segítségével. Az utolsó bemutató az MSP430 külső megszakításain alapult, GPIO csapok használatával. Ez az oktatóanyag a kijelző és az MSP430 összekapcsolásáról szól, amikor a 16 * 2-es LCD-kijelző jelenik meg, ez az első választás minden elektronikus hobbi számára. Korábban az LCD-t az MSP430-hoz is csatlakoztattuk Arduino IDE használatával, ebben az oktatóanyagban a natív Code Composer stúdió platformot fogjuk használni az Arduino IDE használata helyett, így tervezőként nagyobb rugalmasságot kapunk.
Ha többet szeretne megtudni a 16x2 LCD-kijelzőről és más mikrovezérlőkkel történő használatáról, olvassa el az alábbi oktatóanyagokat.
- Összekötő LCD és ATmega16
- Összekötő LCD és Raspberry Pi
- Összekötő LCD és PIC mikrovezérlő
- Összekötő LCD és ARM7-LPC2148
- Összekötő LCD és NodeMCU
- Összekötő LCD és STM32
- Összekötő LCD és MSP430G2
- Összekötő LCD és STM8
Van egy beépített hd44780 IC-je, amely képes tárolni a neki átadott parancsot és adatokat. Az LCD modulnak körülbelül 16 érintkezője van. Ebből 8 adatcsap, közülük 4 tápegység a háttérvilágítás LED-hez és az egész LCD modulhoz, 3 a működés vezérléséhez és 1 tű a kontraszt beállításához. Az oktatóanyag a Dennis Eichmann által létrehozott könyvtárra épül. Nagyon könnyű külön funkciókkal rendelkező könyvtárat használni a különféle adattípusok nyomtatásához. Rendelkezik az adatok különféle formában történő megjelenítésével kezdő, üres és törölt nullákkal. Ez egy elég kiterjedt és átfogó könyvtár, és konfigurálható a különböző kapcsolatokhoz. Itt a fejlécfájlt úgy módosítják, hogy 8 tűs párhuzamos konfigurációt tartalmazzon az adatkommunikációhoz.
16x2 alfanumerikus LCD kijelző
Egy általános 16x2-es kijelző beépített hd44780 IC-vel rendelkezik (lent piros színnel körözve), amely képes tárolni a parancsot és a hozzá továbbított adatokat. Az LCD modulnak körülbelül 16 érintkezője van. Ebből 8 adatcsap, közülük 4 tápegység a háttérvilágítás LED-hez és az egész LCD modulhoz, 3 a működés vezérléséhez és 1 tű a kontraszt beállításához.
Ez az LCD-modul sokoldalúan látható, és minimális tűket használ a többi szegmenses LCD-hez képest. Ha kíváncsi arra, hogy mindez pontosan hogyan működik, akkor ellenőrizze a 16x2-es LCD kijelző működését, ahol már részletesen megvitattuk az LCD működését.
RS Pin: Az RS = 1 lehetővé teszi az LCD-n lévő adatregisztert, amelyet az értékek írására használnak az LCD-ben lévő adatregiszterbe. RS = 0 engedélyezi az LCD utasításregiszterét.
PIN engedélyezése: Negatív éllel kiváltott; amikor a csap a HIGH állapotról LOW állapotra vált, az LCD kéri, hogy írjon az adatcsapokra. Pozitív élindító; amikor a csapot LOW állapotról HIGH állapotra cserélik, az LCD kéri, hogy olvassa el az adatcsapokról.
R / W pin: R / W = 0 az utasításregiszterbe vagy az adatregiszterbe fog írni az RS-pin kiválasztása szerint. R / W = 1 beolvassa az IR-ről vagy DR-ről, az RS tű kiválasztása szerint.
RS R / W működés
0 0 IR-írás belső műveletként (a kijelző tiszta stb.)
0 1 Foglalt jelző (DB7) és címszámláló (DB0 - DB6) olvasása
1 0 DR írás belső műveletként (DR - DDRAM vagy CGRAM)
1 1 DR belső műveletként olvasható (DDRAM vagy CGRAM-DR)
D0-D7 csapok: Az adatok ezeken a csapokon keresztül kerülnek átvitelre a parancs- és adatregiszterekbe és onnan.
Tápcsapok: V ss, V dd csapokat használnak az LCD modul táplálásához. A, K csapok működtetik a LED háttérvilágítását. A kontraszt szabályozásához V 0 csapokat használunk.
16x2 LCD CCS könyvtár MSP430-hoz
Az oktatóanyag a Dennis Eichmann által létrehozott könyvtárra épül. Nagyon könnyű külön funkciókkal rendelkező könyvtárat használni a különféle adattípusok nyomtatásához. Rendelkezik az adatok különféle formában történő megjelenítésével kezdő, üres és törölt nullákkal. Ez egy elég kiterjedt és átfogó könyvtár, és konfigurálható a különböző kapcsolatokhoz. Itt a fejlécfájlt úgy módosítják, hogy 8 tűs párhuzamos konfigurációt tartalmazzon az adatkommunikációhoz. A könyvtár letölthető az alábbi linkről, a letöltés után kövesse az alábbi lépéseket a könyvtár hozzáadásához a CCS-hez.
Töltse le a 16x2 könyvtárat az MSP430 - Code Composer Studio alkalmazáshoz
1. lépés: Fájlok és projektek létrehozása
Az alapértelmezett CCS projekt a fájl menü segítségével jön létre. A Projekt létrehozása párbeszédpanelen válassza ki az eszközt, és adja meg a hd44780 nevet projekt névként. A Projekt típus és eszköztár alatt válassza ki a kimenet típusát Statikus könyvtárként, és hozza létre a projektet.
A Project Explorer sávban (bal oldalon) hozzon létre egy fejlécfájlt az include mappában, és nevezze el hd44780.h néven . Ezután másolja a letöltött hd44780.h fájl tartalmát ebbe az újonnan létrehozott fájlba .
Most hozza létre a fő projektet a kimenet típusának futtathatóra változtatásával, és hozzon létre egy CCS_LCD nevű projektet .
2. lépés: Tartalmazza a keresési utakat a főprojekthez
A hd44780 projekt tulajdonságai párbeszédpanelen és az MSP430 fordító opcióinak belsejében adja hozzá az include mappát a fájlban a keresési útvonalhoz.
Ezután hozza létre ezt a projektet a szükséges linkelő fájlok, például .lib fájlok létrehozásához . Ennek felépítésével hd44780.lib fájl jön létre a hibakeresési mappában.
3. lépés: Tartalmazza a Linker keresési útjait
A CCS_LCD projekt tulajdonságai párbeszédpanelen és az MSP430 Linker fül fájlkeresési útvonalában szerepeltesse a hd44780.lib fájlt, amely a hd44780 projekt hibakeresési mappájában található. A hibakeresési mappa is szerepel a fájlkeresési útvonalon.
Az include mappa ismét hozzáadódik a CCS_LCD projekt MSP430 fordítójának include opcióihoz .
A könyvtár sikeresen összeállt és hozzá lett adva a fő projekt linkeréhez.
LCD funkciók a 16x2 LCD kijelzőhöz az MSP430-on
void hd44780_timer_isr (void): Ezt időnként az A időzítő ISR- jében hívják meg. Az A időzítőt az LCD funkciók rendszeres elvégzésére használják, például a képernyő törlésére, a kurzor beállítására és az adatok megjelenítésére. A függvényt az ISR-ben kell használni. Semmit nem ad vissza.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Megírja az első argumentumban megadott karakterláncot.
char * ch__string: Az adatpufferbe írandó karakterlánc (a hd44780_timer_isr függvényen belül). Az adatokat átmásoljuk az LCD IC adatregiszterébe és utasításregiszterébe, amikor a hd44780_timer_isr rendszeresen meghívásra kerül.
uint8_t u8__row: Meghatározza azt a sort, amelybe a karakterlánc be lesz írva.
uint8_t u8__column: Meghatározza azt az oszlopot, amelybe a karakterlánc be lesz írva.
uint8_t u8__cr_lf: Ha 1-re van állítva, akkor a sor folytatódik a következővel. Ha ez 0, akkor a nyomtatás ugyanazon a soron áll le.
void hd44780_clear_screen (void): Ez a funkció törli az egész képernyőt. Semmit nem ad vissza.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__ oszlop, uint8_t u8__cr_lf): A függvény megjeleníti a kívánt 16-bit értéket
uint16_t u16__value: A megjelenítendő egész számot az első argumentum adja meg.
uint8_t u8__leading_zero_handling: Ha 0-t adunk át, akkor a kezdő nullák jelennek meg az egész értékig. Ha 1-et teljesítenek, akkor a nullákat kitöröljük. Ha a 2 paramétert adja át, akkor csak a számjegyek jelennek meg.
uint8_t u8__row: Kiválasztásra kerül az a sor, amelyben az egész szám látható.
uint8_t u8__column: A nyomtatandó oszlop kiválasztása az argumentummal történik.
uint8_t u8__cr_lf: Ha 1-re van állítva, akkor a sor folytatódik a következővel. Ha ez 0, akkor a nyomtatás ugyanazon a soron áll le.
Áramkör diagram az interfész LCD-hez MSP430-mal
A teljes kapcsolási rajzot az alábbi kép szemlélteti. Mint látható, a hardvercsatlakozások nagyon egyszerűek, és a teljes kártyát 5 V-os adapter használatával tápláltuk.
A csatlakozásokat a fenti vázlat szerint végezzük. Kérjük, nézze meg az alábbi táblázatban a részletes csatlakozásokat.
Vss | 5 V-os tápegység földje |
Vdd | 5V |
V0 | Potenciométer kimenet |
RS | P2.1 |
R / W | Talaj |
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 Ohmos ellenállás |
K | Talaj |
A LED háttérvilágítás anódja nem csatlakoztatható közvetlenül egy 5 V-os tápfeszültséghez. Ezt az ellenálláshoz kell csatlakoztatni, hogy az LCD-modulon keresztüli áramlás minimalizálható legyen. Az LCD forrasztásához egy tökéletes tábla segítségével készítettem a csatlakozásaimat, majd jumper huzalok segítségével csatlakoztattam az LCD-t az MSP430 táblához. A beállításom az alábbiak szerint néz ki, de egyszerűen csatlakoztathatja a kenyérlapot is.
Az MSP430 programozása az LCD kijelző Code Composer Studio segítségével
A projektben használt teljes kódot az oldal alján találja meg. A kód használatának magyarázata a következő. Először nyissa meg a fejlécfájlt (hd44780.h), és írja be a mikrovezérlő részszámát a fájl első részébe.
#include "msp430g2553.h"
Először le kell állítani a watchdog időzítőt. A DCOCTL és a BCSCTL1 vezérlő regisztereket használják a mikrovezérlő oszcillátorának konfigurálására. Az alábbi sorok az MCLK-t 1 MHz-re állítják be.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Kimenetként meg kell említeni az 1-es port érintkezõit, amelyeket az adatcsapokhoz kell használni. A 0 és 1 tűt is meg kell említeni kimenetként a 2 portban, amelyet RS és R / W csapokhoz használnak.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
A beépített időzítőt használjuk az értékek időszakos megjelenítésére. Az A időzítőt az SMCLK (1MHZ) órajelforrásként választja, és a folyamatos üzemmód üzemmód.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (CSOMAG_2 - MC_2 - TACLR);
Az 1. és 2. összehasonlító csatorna megszakításai és az időzítő túlcsordulás megszakítása ugyanazt a megszakítási vektort ( TIMER0_A1_VECTOR ) osztja meg , különböző kezdő címmel. Az 1. rögzítési összehasonlító csatorna (CCR1) a 2 címet használja címként, amelyet a kapcsoló esetben használunk.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { kapcsoló (TA0IV) { 2. eset: { hd44780_timer_isr (); szünet; } } }
Miután összeállította a kódot, feltöltheti azt az MSP430 táblára, amint azt az MSP430 oktatóanyag kezdő lépéseinek leírása tartalmazza. Ha minden a várakozásoknak megfelelően halad, akkor az LCD-kijelzőn némi kontrasztot kell látnia az alábbiak szerint.
Ha a tesztje nagyon gyenge, megpróbálhatja beállítani a potenciométert a jobb kontraszt elérése érdekében. A projekt teljes működése megtalálható az alább linkelt videóban is. Remélem, hogy tetszett a projekt, és érdekesnek találta a saját építését. Ha bármilyen kérdése van, kérjük, hagyja őket az alábbi megjegyzés részben. Fórumokra is írhatja az összes technikai kérdését, hogy választ kapjon rájuk, vagy hogy elkezdhesse a vitát.