- Необходими материали:
- Какво е RTC ??
- Свързване на DS3231 RTC с MSP430:
- Програмиране на MSP430 за RTC модул:
В този урок ще направим цифров часовник, като свържем RTC модул DS3231 с MSP430 и ще покажем часа и датата на 16x2 LCD. MSP-EXP430G2 е инструмент за разработка, известен още като LaunchPad, предоставен от Texas Instruments, за да научи и практикува как да използва своите микроконтролери. Тази платка попада в категорията MSP430 Value Line, където можем да програмираме всички микроконтролери от серията MSP430. Ако не сте начинаещи в MSP, проверете нашия стартиращ урок с MSP430.
Необходими материали:
- MSP430
- DS3231 RTC модул
- POT -10k
- LCD модул 16 * 2
- Свързващи проводници
- Макет
Какво е RTC ??
DS3231 е RTC (часовник в реално време) модул. Използва се за поддържане на датата и часа за повечето проекти по електроника. Този модул има собствено захранващо устройство, което поддържа датата и часа, дори когато основното захранване е премахнато или MCU е преминал през твърдо нулиране. Така че, след като зададем датата и часа в този модул, той ще ги следи винаги. Предлагат се няколко типа RTC интегрални схеми като DS1307, DS3231 и т.н.
Преди сме използвали RTC с други микроконтролери в проекти по-долу:
Забележка: Когато използвате този модул за първи път, трябва да зададете дата и час. Можете също да използвате RTC IC DS1307, преди сме използвали DS1307 с Arduino.
Свързване на DS3231 RTC с MSP430:
Електрическа схема за цифров часовник, базиран на микроконтролер MSP430, е дадена по-долу. Както беше казано по-рано, DS3231 работи с помощта на I2C комуникация, така че ще има сериен часовник (SCL) и щифт за серийни данни (SDA), които трябва да бъдат свързани към I2C щифтовете на нашия MSP430, който е щифт 9 (ПИН 2.1, SCL) и щифт 10 (ПИН 2.2, SDA).
MSP430 дава 3.3V Vcc, но ни трябват 5V, за да го свържем с LCD и RTC модул. Така че, ще използваме хак, има джъмпер, наречен TP1 близо до USB кабелния конектор. Можете да вземете 5V от там.
Електрическа схема:
Програмиране на MSP430 за RTC модул:
Тук използваме Energia IDE за програмиране. Той е същият като Arduino IDE и е лесен за използване. Ако не сте запознати с MSP и energia, преминете към започване на работа с MSP, като използвате Energia IDE. За да свържем RTC модул, имаме нужда от библиотека за тази платка. Изтеглете RTC библиотека от тази връзка и я инсталирайте.
Също така се нуждаем от Wire (използва се за I2C комуникация) и библиотеки с liquidcrystal, които са предварително инсталирани в Energia IDE.
Пълният код за този цифров часовник MSP430 е даден в края на тази статия. Кодът е прост и лесно разбираем. Тук обясняваме няколко части от него.
Първо, трябва да включим необходимите библиотеки.
По-долу библиотеката е за I2C комуникация между RTC модул и MSP430. SDA и SCK пиновете вече са дефинирани в тази библиотека, така че не е нужно да декларираме тези пинове отделно.
#include
След това включихме библиотека RTClib.h за RTC часовник и LiquidCrystal.h за LCD функции.
#include "RTClib.h" #include
След това трябва да създадем екземпляр за инициализиране на нашия RTC модул.
RTC_DS3231 rtc;
След това направете масив с размер 7 и съхранявайте всичките седем дни с име в него.
char daysOfTheWeek = {"неделя", "понеделник", "вторник", "сряда", "четвъртък", "петък", "събота"};
Ето декларация за щифтове на MSP430, която да се използва от LCD дисплей: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LCD LiquidCrystal (8, 6, 7,11,12,13);
В void setup () , инициализирахме интерфейса към LCD екрана и RTC и определихме размерите (ширината и височината) на дисплея, begin ()
трябва да бъде извикан преди всякакви други библиотечни команди.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("RTC Clock"); забавяне (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Сега показаното време на дисплея е правилно, но има проблем, всеки път, когато рестартирате / нулирате своя микроконтролер, LCD ще показва времето, в което сте качили кода. Това е така, защото функцията rtc.adjust () е съхранила времето на вашия компютър, така че когато нулирате, тя започва с това време.
За да разрешите този проблем, първо качете програмата с некомментирана функция rtc.adjust () . След това незабавно коментирайте същия ред и качете програмата отново. Сега вашата дата и час са зададени и няма да бъдат засегнати от нулиране на микроконтролера.
Във функция цикъл вземаме дата и час от RTC модула и съхраняваме в предварително дефинираната променлива, наречена сега, и я показваме на LCD с помощта на функцията lcd.print () .
цикъл void () { DateTime сега = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. ...
Пълният код и видеото са дадени по-долу.