- Material som krävs:
- Vad är RTC ??
- Ansluta DS3231 RTC med MSP430:
- Programmering MSP430 för RTC-modul:
I denna handledning kommer vi att skapa en digital klocka genom att koppla ihop RTC-modul DS3231 med MSP430 och visa tid och datum på 16x2 LCD. MSP-EXP430G2 är ett utvecklingsverktyg aka LaunchPad från Texas Instruments för att lära sig och öva sig på hur man använder sina mikrokontroller. Denna styrelse faller under MSP430 Value Line-kategorin där vi kan programmera alla MSP430-seriens mikrokontroller. Om du inte är ny inom MSP, kolla in vår start med MSP430-handledning.
Material som krävs:
- MSP430
- DS3231 RTC-modul
- POT -10k
- LCD-modul 16 * 2
- Anslutande ledningar
- Bakbord
Vad är RTC ??
DS3231 är en RTC- modul (Real Time Clock). Den används för att bibehålla datum och tid för de flesta av elektronikprojekten. Denna modul har sin egen myntcellströmförsörjning med vilken den behåller datum och tid även när huvudströmmen tas bort eller MCU har genomgått en hård återställning. Så när vi har ställt in datum och tid i den här modulen kommer det alltid att hålla koll på det. Det finns flera typer av RTC IC: er som DS1307, DS3231 etc.
Vi har tidigare använt RTC med andra mikrokontroller i nedanstående projekt:
Obs! När du använder den här modulen för första gången måste du ställa in datum och tid. Du kan också använda RTC IC DS1307, vi har tidigare använt DS1307 med Arduino.
Ansluta DS3231 RTC med MSP430:
Kretsschema för MSP430 Microcontroller-baserad digital klocka ges nedan. Som tidigare nämnts fungerar DS3231 med hjälp av I2C-kommunikation så att den kommer att ha en seriell klocka (SCL) och en Serial Data (SDA) -stift som måste anslutas till I2C-stiften på vår MSP430 som är stift 9 (PIN 2.1, SCL) och stift 10 (PIN 2.2, SDA).
MSP430 ger 3,3 V Vcc men vi behöver 5 V för att ansluta den med LCD och RTC-modul. Så vi kommer att använda ett hack, det finns en bygel tillgänglig som heter TP1 nära USB-kabelkontakt. Du kan ta 5V därifrån.
Kretsschema:
Programmering MSP430 för RTC-modul:
Här använder vi Energia IDE för programmering. Det är samma som Arduino IDE och lätt att använda. Om du är ny på MSP och energia, gå igenom att komma igång med MSP med Energia IDE. För att ansluta RTC-modulen behöver vi ett bibliotek för detta kort. Ladda ner RTC-bibliotek från den här länken och installera det.
Vi behöver också Wire (används för I2C-kommunikation) och liquidcrystal- bibliotek som är förinstallerade i Energia IDE.
Komplett kod för denna MSP430 digitala klocka ges i slutet av denna artikel. Koden är enkel och lättförståelig. Här förklarar vi några delar av det.
Först måste vi inkludera nödvändiga bibliotek.
Nedanstående bibliotek är för I2C-kommunikation mellan RTC-modulen och MSP430. SDA- och SCK-stift är redan definierade i detta bibliotek, så vi behöver inte deklarera dessa stift separat.
#omfatta
Sedan har vi inkluderat RTClib.h- bibliotek för RTC-klocka och LiquidCrystal.h för LCD-funktioner.
#include "RTClib.h" #include
Efter detta måste vi skapa en instans för att initialisera vår RTC-modul.
RTC_DS3231 rtc;
Gör sedan en matris av storlek 7 och förvara alla sju dagarna med namnet i.
char daysOfTheWeek = {"söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"};
Här är stiftdeklaration av MSP430 som ska användas av LCD-skärm: (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 ogiltig installation () har vi initierat gränssnittet till LCD-skärmen och RTC och specificerat måtten (bredd och höjd) på displayen, börja ()
måste anropas innan andra bibliotekskommandon.
ogiltig installation () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); fördröjning (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Nu är tiden som visas på displayen korrekt men det finns ett problem, varje gång du startar om / återställer din mikrokontroller, visar LCD tiden när du laddade upp koden. Detta beror på att rtc.adjust () -funktionen har sparat tid för din dator, så när du återställer börjar den med den tiden.
För att åtgärda detta, ladda först upp programmet med funktionen rtc.adjust () utan kommentarer. Kommentera sedan omedelbart samma rad och ladda upp programmet igen. Nu är ditt datum och tid inställt och påverkas inte av återställningen av mikrokontrollern.
I loop- funktionen tar vi datum och tid från RTC-modulen och lagrar i den fördefinierade variabeln som kallas nu och visar den på LCD- skärmen med funktionen lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Komplett kod och video ges nedan.