- Szükséges anyagok:
- Mi az RTC ??
- A DS3231 RTC csatlakoztatása az MSP430-hoz:
- MSP430 programozása RTC modulhoz:
Ebben az oktatóanyagban digitális órát készítünk a DS3231 RTC modul és az MSP430 összekapcsolásával, és az időt és a dátumot megjelenítjük 16x2 LCD-n. Az MSP-EXP430G2 egy fejlesztési eszköz, más néven LaunchPad, amelyet a Texas Instruments biztosít, hogy megtanulja és gyakorolja a mikrovezérlők használatát. Ez a tábla az MSP430 Value Line kategóriába tartozik, ahol az összes MSP430 sorozatú mikrokontrollert programozhatjuk. Ha még nem ismeri az MSP-t, akkor ellenőrizze az MSP430 oktatóanyag használatának megkezdését.
Szükséges anyagok:
- MSP430
- DS3231 RTC modul
- POT -10k
- LCD modul 16 * 2
- Csatlakozó vezetékek
- Kenyérlemez
Mi az RTC ??
A DS3231 egy RTC (Real Time Clock) modul. A legtöbb elektronikai projekt dátumának és idejének fenntartására szolgál. Ennek a modulnak saját érmeelemes tápegysége van, amely akkor is fenntartja a dátumot és az időt, ha a fő áramellátás megszűnik, vagy ha az MCU keményen visszaáll. Tehát miután beállítottuk a dátumot és az időt ebben a modulban, mindig nyomon fogja követni. Többféle RTC IC kapható, mint például a DS1307, a DS3231 stb.
Korábban már használtunk RTC-t más mikrovezérlőkkel az alábbi projektekben:
Megjegyzés: A modul első használatakor be kell állítania a dátumot és az időt. Használhatja az RTC IC DS1307-et is, korábban már használtuk a DS1307-et az Arduinóval.
A DS3231 RTC csatlakoztatása az MSP430-hoz:
Az MSP430 mikrokontroller alapú digitális óra kapcsolási rajza az alábbiakban látható. Mint korábban elmondtuk, a DS3231 az I2C kommunikáció segítségével működik, így lesz egy soros óra (SCL) és egy soros adat (SDA) tű, amelyet össze kell kötni az MSP430-as I2C csapokkal, amely a 9. tű (PIN 2.1)., SCL) és a 10. tű (PIN 2.2, SDA).
Az MSP430 3,3 V Vcc-t ad, de 5 V-ra van szükségünk, hogy csatlakoztassuk az LCD-hez és az RTC modulhoz. Tehát hacket fogunk használni, az USB-kábelcsatlakozó közelében van egy TP1 névre keresztelt jumper. 5V-t onnan vehet.
Kördiagramm:
MSP430 programozása RTC modulhoz:
Itt az Energia IDE-t használjuk a programozáshoz. Ez megegyezik az Arduino IDE-vel és könnyen használható. Ha még nem ismeri az MSP-t és az energiát, akkor kezdje át az MSP használatát az Energia IDE használatával. Az RTC modul interfészéhez könyvtárra van szükségünk ehhez a táblához. Töltse le az RTC könyvtárat erről a linkről, és telepítse.
Szükségünk van Wire (I2C kommunikációhoz használt) és folyadékkristályos könyvtárakra is, amelyek előre telepítve vannak az Energia IDE-be.
Az MSP430 digitális óra teljes kódja a cikk végén található. A kód egyszerű és könnyen érthető. Itt elmagyarázzuk annak néhány részét.
Először is fel kell vennünk a szükséges könyvtárakat.
Az alábbi könyvtár az I2C kommunikációra szolgál az RTC modul és az MSP430 között. Az SDA és az SCK csapok már definiálva vannak ebben a könyvtárban, ezért nem kell külön deklarálnunk ezeket a csapokat.
#include
Akkor már benne RTClib.h könyvtár RTC óra és LiquidCrystal.h LCD funkciókat.
#include "RTClib.h" #include
Ezek után létre kell hoznunk egy példányt az RTC modul inicializálásához.
RTC_DS3231 rtc;
Ezután készítsen egy 7 méretű tömböt, és tárolja mind a hét napot névvel együtt.
char daysOfTheWeek = {"vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"};
Itt van az MSP430 Pins deklarációja, amelyet az LCD kijelző használ: (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);
A void setup () , már inicializált a felületet, hogy az LCD képernyő és az RTC megadott méretei (szélesség és magasság) a kijelző, begin ()
kell meghívni, mielőtt bármilyen más könyvtári parancsokat.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); késés (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Most a kijelzőn látható idő helyes, de van egy probléma, minden alkalommal, amikor újraindítja / visszaállítja a mikrovezérlőt, az LCD megjeleníti az időt, amikor feltöltötted a kódot. Ez azért van, mert az rtc.adjust () függvény tárolta a számítógép idejét, ezért a visszaállításkor ezzel az idővel kezdődik.
A probléma megoldásához először töltse fel a programot az rtc.adjust () függvénnyel, nem kommentálva. Ezután azonnal kommentálja ugyanazt a sort, és töltse fel újra a programot. Most a dátum és az idő be van állítva, és a mikrovezérlő visszaállítása nem fogja befolyásolni.
A hurokfunkcióban a dátumot és az időt az RTC modulból vesszük, és tároljuk az előre definiált változóban, amelyet most meghívunk, és megjelenítjük az LCD-n az lcd.print () függvény segítségével.
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (most.nap (), DEC); lcd.print ("/");…. …….
A teljes kód és a videó alább található.