- Erforderliche Materialien:
- Was ist RTC?
- Anschließen der DS3231 RTC mit MSP430:
- Programmierung von MSP430 für RTC-Modul:
In diesem Tutorial erstellen wir eine Digitaluhr, indem wir das RTC-Modul DS3231 mit MSP430 verbinden und Uhrzeit und Datum auf einem 16x2-LCD anzeigen. Der MSP-EXP430G2 ist ein Entwicklungstool, auch bekannt als LaunchPad, das von Texas Instruments bereitgestellt wird, um den Umgang mit ihren Mikrocontrollern zu erlernen und zu üben. Diese Karte fällt unter die Kategorie MSP430 Value Line, in der wir alle Mikrocontroller der MSP430-Serie programmieren können. Wenn Sie MSP noch nicht kennen, lesen Sie unser Tutorial Erste Schritte mit MSP430.
Erforderliche Materialien:
- MSP430
- DS3231 RTC-Modul
- POT -10k
- LCD-Modul 16 * 2
- Kabel anschließen
- Steckbrett
Was ist RTC?
DS3231 ist ein RTC- Modul (Real Time Clock). Es wird verwendet, um Datum und Uhrzeit für die meisten Elektronikprojekte zu verwalten. Dieses Modul verfügt über ein eigenes Knopfzellen-Netzteil, mit dem Datum und Uhrzeit auch dann beibehalten werden, wenn die Hauptstromversorgung unterbrochen wird oder die MCU einen Hard-Reset durchlaufen hat. Sobald wir also Datum und Uhrzeit in diesem Modul eingestellt haben, wird es immer verfolgt. Es gibt verschiedene Arten von RTC-ICs wie DS1307, DS3231 usw.
Wir haben RTC zuvor mit anderen Mikrocontrollern in den folgenden Projekten verwendet:
Hinweis: Wenn Sie dieses Modul zum ersten Mal verwenden, müssen Sie Datum und Uhrzeit einstellen. Sie können auch den RTC IC DS1307 verwenden. Wir haben zuvor DS1307 mit Arduino verwendet.
Anschließen der DS3231 RTC mit MSP430:
Das Schaltbild für die auf einem Mikrocontroller basierende Digitaluhr MSP430 ist unten angegeben. Wie bereits erwähnt, arbeitet der DS3231 mit Hilfe der I2C-Kommunikation, sodass er über einen Serial Clock (SCL) und einen Serial Data (SDA) -Pin verfügt, die mit den I2C-Pins unseres MSP430 verbunden werden müssen, bei denen es sich um Pin 9 (PIN 2.1) handelt, SCL) und Pin 10 (PIN 2.2, SDA).
MSP430 liefert 3,3 V Vcc, aber wir benötigen 5 V, um es mit LCD- und RTC-Modul zu verbinden. Also werden wir einen Hack verwenden, es gibt einen Jumper namens TP1 in der Nähe des USB-Kabelanschlusses. Sie können 5V von dort nehmen.
Schaltplan:
Programmierung von MSP430 für RTC-Modul:
Hier verwenden wir Energia IDE zum Programmieren. Es ist dasselbe wie Arduino IDE und einfach zu bedienen. Wenn Sie mit MSP und Energia noch nicht vertraut sind, führen Sie die ersten Schritte mit MSP mithilfe von Energia IDE durch. Für die Schnittstelle zum RTC-Modul benötigen wir eine Bibliothek für diese Karte. Laden Sie die RTC-Bibliothek von diesem Link herunter und installieren Sie sie.
Wir brauchen auch Draht (für I2C Kommunikation verwendet wird) und Flüssigkristall Bibliotheken, die in Energia IDE vorinstalliert sind.
Der vollständige Code für diese MSP430-Digitaluhr finden Sie am Ende dieses Artikels. Code ist einfach und leicht verständlich. Hier erklären wir einige Teile davon.
Zuerst müssen wir die notwendigen Bibliotheken einbeziehen.
Die folgende Bibliothek dient zur I2C-Kommunikation zwischen dem RTC-Modul und dem MSP430. SDA- und SCK-Pins sind bereits in dieser Bibliothek definiert, sodass wir diese Pins nicht separat deklarieren müssen.
#einschließen
Dann haben wir die RTClib.h- Bibliothek für die RTC-Uhr und LiquidCrystal.h für LCD-Funktionen aufgenommen.
#include "RTClib.h" #include
Danach müssen wir eine Instanz erstellen, um unser RTC-Modul zu initialisieren.
RTC_DS3231 rtc;
Erstellen Sie dann ein Array der Größe 7 und speichern Sie alle sieben Tage mit dem Namen darin.
char daysOfTheWeek = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};
Hier ist die Pins-Deklaration von MSP430, die vom LCD-Display verwendet werden soll: (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);
In void setup () haben wir die Schnittstelle zum LCD-Bildschirm und zur RTC initialisiert und die Abmessungen (Breite und Höhe) der Anzeige angegeben. Start ()
muss vor allen anderen Bibliotheksbefehlen aufgerufen werden.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); Verzögerung (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }}
Die auf dem Display angezeigte Uhrzeit ist korrekt, es liegt jedoch ein Problem vor. Jedes Mal, wenn Sie Ihren Mikrocontroller neu starten / zurücksetzen, zeigt das LCD die Uhrzeit an, zu der Sie den Code hochgeladen haben. Dies liegt daran, dass die Funktion rtc.adjust () die Zeit Ihres Computers gespeichert hat. Wenn Sie sie zurücksetzen, beginnt sie mit dieser Zeit.
Um dieses Problem zu beheben, laden Sie zuerst das Programm mit der nicht kommentierten Funktion rtc.adjust () hoch . Kommentieren Sie dann sofort dieselbe Zeile und laden Sie das Programm erneut hoch. Jetzt sind Datum und Uhrzeit eingestellt und werden durch das Zurücksetzen des Mikrocontrollers nicht beeinflusst.
In der Schleifenfunktion nehmen wir Datum und Uhrzeit vom RTC-Modul und speichern sie in der jetzt aufgerufenen vordefinierten Variablen und zeigen sie mit der Funktion lcd.print () auf dem LCD an.
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Der vollständige Code und das Video sind unten angegeben.