- Materials necessaris:
- Què és RTC ??
- Connexió del DS3231 RTC amb MSP430:
- Programació MSP430 per al mòdul RTC:
En aquest tutorial crearem un rellotge digital mitjançant la interfície del mòdul RTC DS3231 amb MSP430 i mostrarem l’hora i la data en un LCD de 16x2. El MSP-EXP430G2 és una eina de desenvolupament també coneguda com LaunchPad proporcionada per Texas Instruments per aprendre i practicar com utilitzar els seus microcontroladors. Aquesta placa pertany a la categoria MSP430 Value Line, on podem programar tots els microcontroladors de la sèrie MSP430. Si no coneixeu MSP, consulteu el nostre tutorial per començar a utilitzar MSP430.
Materials necessaris:
- MSP430
- Mòdul RTC DS3231
- POT -10k
- Mòdul LCD 16 * 2
- Connexió de cables
- Taula de pa
Què és RTC ??
DS3231 és un mòdul RTC (Real Time Clock). S'utilitza per mantenir la data i l'hora de la majoria de projectes electrònics. Aquest mòdul té la seva pròpia font d’alimentació amb cèl·lula de moneda mitjançant la qual manté la data i l’hora, fins i tot quan s’elimina l’alimentació principal o quan la MCU ha realitzat un restabliment complet. Per tant, un cop definida la data i l’hora en aquest mòdul, en farà un seguiment sempre. Hi ha diversos tipus de circuits integrats RTC disponibles com DS1307, DS3231, etc.

Anteriorment hem utilitzat RTC amb altres microcontroladors en els següents projectes:
Nota: Quan utilitzeu aquest mòdul per primera vegada, heu d’establir la data i l’hora. També podeu utilitzar RTC IC DS1307, prèviament hem utilitzat DS1307 amb Arduino.
Connexió del DS3231 RTC amb MSP430:
A continuació es mostra el diagrama de circuits per al rellotge digital basat en microcontroladors MSP430 . Com es va dir anteriorment, el DS3231 funciona amb l'ajut de la comunicació I2C, de manera que tindrà un rellotge serial (SCL) i un pin de dades serials (SDA) que s'ha de connectar als pins I2C del nostre MSP430, que és el pin 9 (PIN 2.1)., SCL) i el pin 10 (PIN 2.2, SDA).
MSP430 dóna 3.3V Vcc, però necessitem 5V per connectar-lo amb mòduls LCD i RTC. Per tant, utilitzarem un hack, hi ha un pont disponible anomenat TP1 a prop del connector del cable USB. Podeu agafar 5V d’allà.
Esquema de connexions:

Programació MSP430 per al mòdul RTC:
Aquí estem fent servir Energia IDE per a la programació. És igual que Arduino IDE i fàcil d’utilitzar. Si no coneixeu MSP i energia, seguiu començant a utilitzar MSP mitjançant Energia IDE. Per a la interfície del mòdul RTC necessitem una biblioteca per a aquesta placa. Descarregueu la biblioteca RTC des d’aquest enllaç i instal·leu-la.
També necessitem biblioteques Wire (utilitzades per a la comunicació I2C) i liquidcrystal que estiguin preinstal·lades a Energia IDE.
Al final d’aquest article es proporciona el codi complet d’aquest rellotge digital MSP430. El codi és senzill i fàcil d’entendre. Aquí en expliquem algunes parts.
En primer lloc, hem d’ incloure les biblioteques necessàries.
A sota de la biblioteca hi ha la comunicació I2C entre el mòdul RTC i MSP430. Els pins SDA i SCK ja estan definits en aquesta biblioteca, de manera que no hem de declarar aquests pins per separat.
#incloure
A continuació, hem inclòs la biblioteca RTClib.h per al rellotge RTC i LiquidCrystal.h per a les funcions LCD.
#include "RTClib.h" #include
Després d'això, hem de crear una instància per inicialitzar el nostre mòdul RTC.
RTC_DS3231 rtc;
A continuació, feu una matriu de la mida 7 i emmagatzemeu els set dies amb el nom.
char daysOfTheWeek = {"Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"};
Aquí teniu la declaració de pins de MSP430 que utilitzarà la pantalla 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);
A la configuració nul·la () , hem inicialitzat la interfície a la pantalla LCD i a RTC i hem especificat les dimensions (amplada i alçada) de la pantalla, s'ha de trucar a begin ()
abans que qualsevol altra ordre de biblioteca.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Rellotge RTC"); retard (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__)))); }
Ara, l’hora que es mostra a la pantalla és correcta, però hi ha un problema; cada cop que reinicieu / reinicieu el microcontrolador, la pantalla LCD mostrarà l’hora en què heu carregat el codi. Això es deu a que la funció rtc.adjust () ha emmagatzemat l'hora de l'ordinador, de manera que quan reinicieu, comença amb aquesta hora.
Per solucionar aquest problema, primer carregueu el programa amb la funció rtc.adjust () sense comentar. A continuació, comenteu immediatament la mateixa línia i torneu a penjar el programa. Ara, la vostra data i hora estan definides i no es veurà afectada per la reinicialització del microcontrolador.
En funció de bucle , prenem la data i l'hora del mòdul RTC i l'emmagatzemem a la variable predefinida anomenada ara i la mostrem a la pantalla LCD mitjançant la funció lcd.print () .
bucle buit () { Data i hora ara = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. ……
A continuació es mostra el codi complet i el vídeo.
