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