- 16x2 alfanumerisk LCD-skärm
- 16x2 LCD CCS-bibliotek för MSP430
- LCD-funktioner för 16x2 LCD-skärm på MSP430
- Kretsschema för gränssnitts LCD med MSP430
- Programmering MSP430 med hjälp av Code Composer Studio för LCD-skärm
Den här artikeln är en fortsättning på vår handledningsserie om programmering av MSP430 med hjälp av Code Composer Studio. Senaste handledning baserades på externa avbrott på MSP430 med GPIO-stift. Denna handledning handlar om att koppla ihop en skärm med MSP430, när det gäller att visa 16 * 2 LCD-skärmen är det första valet för alla elektroniska hobbyister. Tidigare har vi också gränssnitt LCD med MSP430 med Arduino IDE, i denna handledning kommer vi att använda den inbyggda Code Composer-studioplattformen istället för att använda Arduino IDE, på detta sätt som designer får vi mer flexibilitet.
För att lära dig mer om 16x2 LCD-skärm och använda den med andra mikrokontroller, se handledningarna nedan.
- Gränssnitts LCD med ATmega16
- Gränssnitts LCD med Raspberry Pi
- Gränssnitts LCD med PIC Microcontroller
- Gränssnitts LCD med ARM7-LPC2148
- Gränssnitts LCD med NodeMCU
- Gränssnitts LCD med STM32
- Gränssnitts LCD med MSP430G2
- Gränssnitts LCD med STM8
Den har en inbyggd IC hd44780 som kan lagra kommandot och data som skickas till den. LCD-modulen har cirka 16 stift. 8 av dessa är datapinnar, varav 4 är matningsstift för bakgrundsbelysning LED och hela LCD-modulen, 3 för att styra funktionen och 1 stift för kontrastjustering. Självstudien baseras på biblioteket skapat av Dennis Eichmann. Det är väldigt enkelt att använda ett bibliotek med separata funktioner för att skriva ut olika datatyper. Det har också bestämmelser för att visa data i olika former med ledande, blankade och raderade nollor. Det är ett ganska expansivt och omfattande bibliotek och kan konfigureras för olika anslutningar. Här modifieras rubrikfilen för att rymma en 8-stifts parallellkonfiguration för datakommunikation.
16x2 alfanumerisk LCD-skärm
En generisk 16x2-skärm har en inbyggd hd44780 IC (inringad i rött nedan), som kan lagra kommandot och data som skickas till den. LCD-modulen har cirka 16 stift. 8 av dessa är datapinnar, varav 4 är matningsstift för bakgrundsbelysning LED och hela LCD-modulen, 3 för att styra funktionen och 1 stift för kontrastjustering.
Denna LCD-modul visas ovan mångsidig och använder minimala stift jämfört med andra segmenterade LCD-skärmar. Om du är nyfiken på att veta exakt hur allt detta fungerar bör du kolla in hur 16x2 LCD-skärmen fungerar, där vi redan har diskuterat hur LCD-skärmen fungerar i detalj.
RS-stift: RS = 1 aktiverar dataregistret i LCD-skärmen, som används för att skriva värdena till dataregistret i LCD. RS = 0 aktiverar LCD-skärmens instruktionsregister.
Aktivera stift: Negativ kantutlöst; när stiftet ändras från läget HÖGT till LÅG uppmanas LCD att skriva till datapinnarna. Positiv kantutlöst; när stiftet ändras från LÅGT till HÖG-tillstånd, uppmanas LCD att läsa från datapinnarna.
R / W-stift: R / W = 0 skriver till instruktionsregistret eller dataregistret enligt valet av RS-stift. R / W = 1 kommer att läsas från IR eller DR enligt valet av RS-stift.
RS R / W-drift
0 0 IR-skrivning som en intern åtgärd (displayen rensas etc.)
0 1 Läs upptagen flagga (DB7) och adressräknare (DB0 till DB6)
1 0 DR skriva som en intern operation (DR till DDRAM eller CGRAM)
1 1 DR läst som en intern operation (DDRAM eller CGRAM till DR)
D0-D7-stift: Data överförs till och från kommandot och dataregister genom dessa stift.
Matningsstift: V ss, V dd- stift används för att driva LCD-modulen. A, K-stift kommer att driva LED-bakgrundsbelysningen. V 0- stift används för att kontrollera kontrasten.
16x2 LCD CCS-bibliotek för MSP430
Självstudien baseras på biblioteket skapat av Dennis Eichmann. Det är väldigt enkelt att använda ett bibliotek med separata funktioner för att skriva ut olika datatyper. Det har också bestämmelser för att visa data i olika former med ledande, blankade och raderade nollor. Det är ett ganska expansivt och omfattande bibliotek och kan konfigureras för olika anslutningar. Här modifieras rubrikfilen för att rymma en 8-stifts parallellkonfiguration för datakommunikation. Biblioteket kan laddas ner från länken nedan, efter nedladdning följer du stegen nedan för att lägga till biblioteket i CCS.
Ladda ner 16x2 bibliotek för MSP430 - Code Composer Studio
Steg 1: Skapa filer och projekt
Ett standard CCS-projekt skapas med hjälp av filmenyn. Markera enheten i dialogrutan Skapa projekt och ange hd44780 som projektnamn. Välj projekttypen som ett statiskt bibliotek under projekttyp och verktygskedja och skapa projektet.
I Project Explorer-fältet (vänster sida) skapar du en rubrikfil i inkluderingsmappen och namnge den som hd44780.h . Kopiera sedan innehållet i den nedladdade filen hd44780.h till den nyskapade.
Skapa nu huvudprojektet genom att ändra utdatatypen till en körbar och skapa ett projekt som heter CCS_LCD .
Steg 2: Inkludera sökvägarna till huvudprojektet
I egenskapsdialogrutan för hd44780-projektet och inuti inkluderingsalternativen för MSP430-kompilatorn lägger du till inkluderingsmappen i filen sökvägen.
Sedan bygga detta projekt för att skapa den nödvändiga länk filer som Lib filer . Att bygga detta skapar hd44780.lib- filen i felsökningsmappen.
Steg 3: Inkludera sökvägarna för Linker
I egenskapsdialogrutan för CCS_LCD- projektet och i filsökvägen på fliken MSP430 Linker, inkludera hd44780.lib som finns i felsökningsmappen för hd44780-projektet. Felsökningsmappen ingår också i filsökvägen.
Inkluderingsmappen läggs till i inkluderingsalternativen för MSP430-kompilatorn för CCS_LCD- projektet.
Biblioteket är framgångsrikt sammanställt och läggs till i huvudprojektets länkare.
LCD-funktioner för 16x2 LCD-skärm på MSP430
ogiltig hd44780_timer_isr (ogiltig): Detta kallas periodiskt i ISR för timern A. Timern A används för att regelbundet göra LCD-funktioner som att rensa skärmen, ställa in markören och visa data. Funktionen ska användas i ISR. Det returnerar ingenting.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Den skriver strängen som anges i det första argumentet.
char * ch__string: Strängen som ska skrivas till databufferten (inuti funktionen hd44780_timer_isr ). Data kommer att kopieras till dataregistret och instruktionsregistret på LCD IC när hd44780_timer_isr anropas med jämna mellanrum.
uint8_t u8__row: Den definierar raden i vilken strängen ska skrivas.
uint8_t u8__kolumn: Den definierar kolumnen där strängen ska skrivas.
uint8_t u8__cr_lf: Om den är inställd 1 fortsätter raden till nästa. Om det är 0 stannar utskriften på samma rad.
void hd44780_clear_screen (void): Den här funktionen rensar hela skärmen. Det returnerar ingenting.
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): Funktionen visar den osignerade 16-bitars LCD-värdet.
uint16_t u16__value: Heltalet som ska visas ges i det första argumentet.
uint8_t u8__leading_zero_handling: Om 0 passeras visas ledande nollor till helvärdet . Om 1 passeras kommer nollorna att raderas. Om 2 skickas som en parameter visas endast signifikanta siffror.
uint8_t u8__row: Raden där heltalet visas väljs.
uint8_t u8__kolumn: Kolumnen som ska skrivas ut väljs med argumentet.
uint8_t u8__cr_lf: Om den är inställd 1 fortsätter raden till nästa. Om det är 0 stannar utskriften på samma rad.
Kretsschema för gränssnitts LCD med MSP430
Hela kretsschemat illustreras i bilden nedan. Som du ser är hårdvaruanslutningarna väldigt enkla och vi har drivit hela kortet med en 5V-adapter.
Anslutningarna görs enligt ovanstående skiss. Se nedanstående tabell för detaljerade anslutningar.
Vss | Jord för 5V strömförsörjning |
Vdd | 5V |
V0 | Potentiometerutgång |
RS | P2.1 |
R / W | Jord |
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 motstånd |
K | Jord |
LED-bakgrundsbelysningens anod kan inte anslutas direkt till en 5V-matning. Den ska anslutas till ett motstånd för att minimera strömflödet genom LCD-modulen. Jag har gjort mina anslutningar med hjälp av ett perf-kort för att lödda LCD-skärmen och sedan använt bygelkablar för att ansluta LCD-skärmen till MSP430-kortet, min inställning ser ut så här nedan men du kan också helt enkelt använda en breadboard för att göra dina anslutningar.
Programmering MSP430 med hjälp av Code Composer Studio för LCD-skärm
Den fullständiga koden som används i detta projekt ges längst ner på denna sida. Förklaringen till att använda koden är som följer. Öppna först rubrikfilen (hd44780.h) och inkludera mikrokontroller artikelnumret i den första delen av filen.
#include "msp430g2553.h"
Vakthundstimern måste stoppas först. DCOCTL- och BCSCTL1- kontrollregister används för att konfigurera oscillatorn för mikrokontrollern. Raderna nedan konfigurerar MCLK till 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Port 1-stiften måste nämnas som utgång, som ska användas för datapinnarna. Stift 0 och stift 1 måste också nämnas som utgång i port 2, som kommer att användas för RS och R / W-stift.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Den inbyggda timern används för att visa värden regelbundet. Timer A väljs med SMCLK (1MHZ) som klockkälla och kontinuerligt läge som driftläge.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Avbrotten för jämförelsekanalerna 1 och 2 och timeröverflödesavbrott delar samma avbrottsvektor ( TIMER0_A1_VECTOR ) med olika startadresser. Capture-jämför kanal 1 (CCR1) använder 2 som adress, som används i switchväskan.
#pragma vector = TIMER0_A1_VECTOR __avbrott ogiltig timer_0_a1_isr (ogiltig) { switch (TA0IV) { fall 2: { hd44780_timer_isr (); ha sönder; } } }
När du har sammanställt din kod kan du ladda upp den till MSP430-kortet, vilket förklaras i att komma igång med MSP430-självstudien. Om allt går som förväntat, bör du se din LCD-skärm viss kontrast som visas nedan.
Om ditt test är mycket svagt kan du försöka justera potentiometern för att få bättre kontrast. Det fullständiga arbetet med projektet finns också i videon som länkas nedan. Hoppas att du gillade projektet och tyckte att det var intressant att bygga ditt eget. Om du har några frågor, vänligen lämna dem i kommentarfältet nedan. Du kan också skriva alla dina tekniska frågor på forum för att få dem besvarade eller för att inleda en diskussion.