- Nødvendige materialer:
- Hvad er RTC ??
- Tilslutning af DS3231 RTC med MSP430:
- Programmering MSP430 til RTC-modul:
I denne vejledning laver vi et digitalt ur ved at interfacere RTC-modul DS3231 med MSP430 og vise tid og dato på 16x2 LCD. MSP-EXP430G2 er et udviklingsværktøj, aka LaunchPad, leveret af Texas Instruments for at lære og øve sig i, hvordan man bruger deres mikrokontrollere. Dette kort falder ind under MSP430 Value Line-kategorien, hvor vi kan programmere alle MSP430-serien Microcontrollers. Hvis du er ny hos MSP, så tjek vores komme i gang med MSP430-tutorial.
Nødvendige materialer:
- MSP430
- DS3231 RTC-modul
- POT -10k
- LCD-modul 16 * 2
- Tilslutning af ledninger
- Brødbræt
Hvad er RTC ??
DS3231 er et RTC- modul (Real Time Clock). Det bruges til at opretholde dato og tid for de fleste af elektronikprojekterne. Dette modul har sin egen møntcelleforsyning, ved hjælp af hvilken det opretholder datoen og klokkeslættet, selv når hovedstrømmen fjernes, eller MCU'en har gennemgået en hård nulstilling. Så når vi har indstillet dato og klokkeslæt i dette modul, vil det altid holde styr på det. Der er flere typer RTC IC'er tilgængelige som DS1307, DS3231 osv.
Vi har tidligere brugt RTC med andre mikrokontrollere i nedenstående projekter:
Bemærk: Når du bruger dette modul for første gang, skal du indstille dato og klokkeslæt. Du kan også bruge RTC IC DS1307, vi har tidligere brugt DS1307 med Arduino.
Tilslutning af DS3231 RTC med MSP430:
Kredsløbsdiagram for MSP430 Microcontroller-baseret digitalt ur er angivet nedenfor. Som tidligere fortalt fungerer DS3231 ved hjælp af I2C-kommunikation, så den har et serielt ur (SCL) og en seriel data (SDA) -stift, der skal forbindes til I2C-stifterne på vores MSP430, som er stiften 9 (PIN 2.1, SCL) og pin 10 (PIN 2.2, SDA).
MSP430 giver 3,3 V Vcc, men vi har brug for 5 V for at forbinde det med LCD og RTC-modul. Så vi bruger et hack, der er en jumper tilgængelig, der hedder TP1 nær USB-kabelstik. Du kan tage 5V derfra.
Kredsløbsdiagram:
Programmering MSP430 til RTC-modul:
Her bruger vi Energia IDE til programmering. Det er det samme som Arduino IDE og let at bruge. Hvis du er ny inden for MSP og energia, skal du gå igang med at komme i gang med MSP ved hjælp af Energia IDE. For at interface RTC-modul har vi brug for bibliotek til dette kort. Download RTC-bibliotek fra dette link og installer det.
Vi har også brug for Wire (bruges til I2C-kommunikation) og liquidcrystal- biblioteker, som er forudinstalleret i Energia IDE.
Komplet kode til dette MSP430 digitale ur findes i slutningen af denne artikel. Koden er enkel og let forståelig. Her forklarer vi få dele af det.
Først skal vi medtage nødvendige biblioteker.
Nedenstående bibliotek er til I2C-kommunikation mellem RTC-modul og MSP430. SDA- og SCK-ben er allerede defineret i dette bibliotek, så vi behøver ikke at erklære disse ben separat.
#omfatte
Derefter har vi inkluderet RTClib.h- biblioteket til RTC-ur og LiquidCrystal.h til LCD-funktioner.
#include "RTClib.h" #include
Herefter skal vi oprette en instans for at initialisere vores RTC-modul.
RTC_DS3231 rtc;
Lav derefter en matrix af størrelse 7, og opbevar alle syv dage med navn i.
char daysOfTheWeek = {"søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"};
Her er Pins-erklæring af MSP430, der skal bruges af LCD-display: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
I ugyldig opsætning () har vi initialiseret grænsefladen til LCD-skærmen og RTC og specificeret dimensionerne (bredde og højde) på skærmen, start ()
skal kaldes før andre bibliotekskommandoer.
ugyldig opsætning () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); forsinkelse (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Nu er den viste tid på skærmen korrekt, men der er et problem, hver gang du genstarter / nulstiller din mikrocontroller, viser LCD det tidspunkt, hvor du uploadede koden. Dette skyldes, at rtc.adjust () -funktionen har gemt din computers tid, så når du nulstiller, starter den med det tidspunkt.
For at løse dette problem skal du først uploade programmet med funktionen rtc.adjust () uden kommentarer. Kommenter derefter straks den samme linje, og upload programmet igen. Nu er din dato og dit klokkeslæt indstillet og påvirkes ikke af nulstilling af mikrocontrolleren.
I loop- funktion tager vi dato og klokkeslæt fra RTC-modulet og gemmer i den foruddefinerede variabel kaldet nu og viser det på LCD ved hjælp af lcd.print () -funktionen.
ugyldig loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Komplet kode og video er angivet nedenfor.