- Wymagane materiały:
- Co to jest RTC?
- Podłączanie DS3231 RTC z MSP430:
- Programowanie MSP430 dla modułu RTC:
W tym samouczku stworzymy zegar cyfrowy, łącząc moduł RTC DS3231 z MSP430 i wyświetlając godzinę i datę na wyświetlaczu LCD 16x2. MSP-EXP430G2 to narzędzie programistyczne, znane również jako LaunchPad, dostarczone przez firmę Texas Instruments, umożliwiające naukę i ćwiczenie korzystania z mikrokontrolerów. Płytka ta należy do kategorii MSP430 Value Line, w której możemy zaprogramować wszystkie mikrokontrolery serii MSP430. Jeśli nie masz doświadczenia z MSP, zapoznaj się z naszym samouczkiem rozpoczynającym pracę z MSP430.
Wymagane materiały:
- MSP430
- Moduł DS3231 RTC
- POT -10k
- Moduł LCD 16 * 2
- Przewody łączące
- Płytka prototypowa
Co to jest RTC?
DS3231 to moduł RTC (Real Time Clock). Służy do utrzymywania daty i godziny dla większości projektów elektroniki. Ten moduł ma własny zasilacz do baterii pastylkowej, za pomocą którego utrzymuje datę i godzinę nawet po odłączeniu głównego zasilania lub po przeprowadzeniu twardego resetu MCU. Więc kiedy ustawimy datę i godzinę w tym module, będzie to zawsze śledzić. Dostępnych jest kilka typów układów scalonych RTC, takich jak DS1307, DS3231 itp.
Wcześniej używaliśmy RTC z innymi mikrokontrolerami w poniższych projektach:
Uwaga: Korzystając z tego modułu po raz pierwszy, musisz ustawić datę i godzinę. Możesz również użyć RTC IC DS1307, wcześniej używaliśmy DS1307 z Arduino.
Podłączanie DS3231 RTC z MSP430:
Schemat obwodu zegara cyfrowego opartego na mikrokontrolerze MSP430 przedstawiono poniżej. Jak wspomniano wcześniej, DS3231 działa z pomocą komunikacji I2C, więc będzie miał pin zegara szeregowego (SCL) i szeregowy (SDA), który musi być podłączony do pinów I2C w naszym MSP430, który jest pinem 9 (PIN 2.1, SCL) i styk 10 (PIN 2.2, SDA).
MSP430 daje 3,3 V Vcc, ale potrzebujemy 5 V, aby połączyć go z modułem LCD i RTC. Więc użyjemy hacka, dostępna jest zworka o nazwie TP1 w pobliżu złącza kabla USB. Możesz stamtąd wziąć 5V.
Schemat obwodu:
Programowanie MSP430 dla modułu RTC:
Tutaj używamy Energia IDE do programowania. Działa tak samo jak Arduino IDE i jest łatwy w użyciu. Jeśli nie masz doświadczenia z MSP i energią, zapoznaj się z MSP za pomocą Energia IDE. Do interfejsu modułu RTC potrzebna jest biblioteka do tej płytki. Pobierz bibliotekę RTC z tego łącza i zainstaluj ją.
Potrzebujemy również bibliotek Wire (używanych do komunikacji I2C) i bibliotek ciekłokrystalicznych, które są preinstalowane w Energia IDE.
Pełny kod tego zegara cyfrowego MSP430 znajduje się na końcu tego artykułu. Kod jest prosty i łatwo zrozumiały. Tutaj wyjaśniamy kilka jego części.
Najpierw musimy załączyć niezbędne biblioteki.
Poniższa biblioteka służy do komunikacji I2C pomiędzy modułem RTC a MSP430. Piny SDA i SCK są już zdefiniowane w tej bibliotece, więc nie musimy ich deklarować osobno.
#zawierać
Następnie dołączyliśmy bibliotekę RTClib.h dla zegara RTC i LiquidCrystal.h dla funkcji LCD.
#include „RTClib.h” #include
Następnie musimy utworzyć instancję, aby zainicjować nasz moduł RTC.
RTC_DS3231 rtc;
Następnie utwórz tablicę o rozmiarze 7 i zapisz wszystkie siedem dni z nazwą.
char daysOfTheWeek = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"};
Oto deklaracja pinów MSP430 do wykorzystania przez wyświetlacz LCD: (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);
W void setup () , mamy zainicjowany interfejs do ekranu LCD oraz RTC i określone wymiary (szerokość i wysokość) na wyświetlaczu, begin ()
musi być wywołana przed jakimikolwiek innymi poleceniami bibliotecznych.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Zegar RTC"); opóźnienie (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Teraz czas pokazany na wyświetlaczu jest poprawny, ale jest problem, za każdym razem, gdy ponownie uruchomisz / zresetujesz mikrokontroler, LCD pokaże czas, w którym załadowałeś kod. Dzieje się tak, ponieważ funkcja rtc.adjust () przechowuje czas komputera, więc po zresetowaniu zaczyna się od tego czasu.
Aby rozwiązać ten problem, najpierw załaduj program z funkcją rtc.adjust () bez komentarzy. Następnie natychmiast skomentuj tę samą linię i ponownie załaduj program. Teraz data i godzina są ustawione i resetowanie mikrokontrolera nie będzie miało na nie wpływu.
W funkcji pętli pobieramy datę i czas z modułu RTC i przechowujemy w predefiniowanej zmiennej o nazwie now i wyświetlamy ją na LCD za pomocą funkcji lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print („/”);…. …….
Kompletny kod i wideo podano poniżej.