Как построить часы реального времени с помощью PICAXE
Введение
Добавление схемы часов реального времени (RTC) и цифрового дисплея в микроконтроллер для создания функциональных часов является излюбленным делом для многих электроники DIY. Фактически, такой отличный проект с использованием Arduino был недавно опубликован в статье Йенса Кристоферсена, посвященной AAC.
Этот проект представляет собой другой, и, возможно, несколько более простой подход, в котором используется микроконтроллер PICAXE 08M2 +, ЖК-дисплей с серийным рюкзаком, как описано в этой статье, и модуль часов реального времени.
Для создания и программирования этого проекта требуется скромный фон с микроконтроллерами PICAXE, и если вы окажетесь недооцененными, обзор некоторых из этих статей может быть в порядке.
Модули часов реального времени
Модуль часов реального времени состоит из интегральной схемы RTC и периферийных компонентов, необходимых для поддержки микросхемы часов, все из которых были собраны на специальной печатной плате. Пример такого модуля показан на фотографии ниже.

Этот конкретный модуль RTC является собственным дизайном автора, но более или менее репрезентативным для многих других проектов. В верхнем центре находится чип RTC, который в этом случае является DS1307 от Maxim Integrated. Слева от DS1307 - кристалл 32, 768 МГц, а под кристаллом находится резервная батарея 3 В, чтобы поддерживать работу DS1307 при прерывании внешнего питания. Зеленый светодиод загорается, чтобы показать, что подключено внешнее питание, а керамический конденсатор фильтрует питание на DS1307. Заголовок штыря с надписью «PH5» соединяет модуль с питанием и другими внешними схемами. Три резистора являются подтягиваниями для трех сигнальных проводов.
Почему сигнализация DS1307 «смотреть в квадрате»). Быстрый поиск в режиме онлайн найдет модули DS1307 от американских и международных поставщиков. Некоторые модули будут иметь только DS1307 IC, а другие могут добавить AT24C32 или какой-либо другой чип EEPROM; программируемая память не используется в этом проекте, но она не вызовет никаких проблем, если она включена
I 2 C сигнализация является обязательной для кода в этом проекте. Для связи с микроконтроллером требуется только два провода: последовательная линия передачи данных (SDA) и последовательная линия синхронизации (SCL), и обе они потенциально двунаправлены. Существует много больше, чтобы узнать о I 2 C, и вам предлагается изучить его, но глубокое знание устраняется удивительными способностями системы PICAXE.
В общем, любой модуль RTC можно использовать для этого проекта, если он отвечает следующим требованиям.
- Использует DS1307
- Работает на 5 В постоянного тока и обеспечивает точки подключения для + 5Vin и земли
- Обеспечивает легкий доступ к выводам SDA и SCL
Штырьки заголовка часто используются в качестве соединительных точек; см. фото ниже. (Доступ к Vbat и SQW-проводам не требуется.)

Конечно, вы также можете построить свою собственную схему RTC, как описано здесь, если она соответствует требованиям, указанным выше.
Схемографическая схема и макет
Схема показана ниже; Нажмите здесь для увеличения изображения.
Как вы видите, схема довольно проста. Модуль RTC содержит все части внутри красного прямоугольника и подключается через четыре провода к PICAXE. Дисплей оснащен последовательным адаптером рюкзака LCD117, который подключается к 08M2 только тремя проводами через PH1.

На приведенной ниже фотографии показан модуль RTC, сборка без пайки и дисплей; проект полностью функциональный. Обратите внимание, что цвета проводов, отмеченные на схеме выше, соответствуют фактическим цветам проводов, которые использовались в сборке без паяльника.
Разумеется, внешний вид вашей сборки будет отличаться от фотографии, чтобы использовать модуль RT1307 RTC, который вы используете. Электрическая конфигурация должна быть идентична схеме и фотографии.

Что такое код?
Как и все проекты PICAXE, это зависит от кода, написанного на PICAXE BASIC и составленного в одной из интегрированных сред разработки (IDE), доступных на веб-сайте PICAXE. Редактор PICAXE 6 является самой современной средой IDE и настоятельно рекомендуется.
Доступны две полностью функциональные программы для загрузки и запуска. Скачайте их оба, и откройте их как в редакторе PICAXE 6, но еще не запрограммируйте 08M2 с одним из них.
Первый используется для загрузки дня, даты и времени в DS1307, очень короткий и показан ниже. Он достаточно хорошо прокомментирован, но будет обсуждаться далее в этой статье.

Скачать код
Вторая программа используется для чтения дня, даты и времени в PICAXE 08M2 и предоставления команд μC для преобразования, форматирования и отображения результатов на ЖК-дисплее. Из-за некоторых длин линий он не может отображаться в полном размере; Нажмите здесь для увеличения изображения. Вы можете загрузить его и открыть его с помощью Редактора программ 6, но пока не программируйте 08M2.

Скачать код
Программирование PICAXE
Для выполнения функций часов требуется два программирования. Во-первых, DS1307 24-часовой Time Set.bas должен быть запрограммирован в 08M2, который устанавливает время, день и дату в DS1307. Во-вторых, PA-08M2 + LCD117 RTC.bas запрограммирован в PICAXE, чтобы проинструктировать μC, как читать DS1307, преобразовывать данные и отображать соответствующее время, день и дату на ЖК-дисплее.
Если вы еще этого не сделали, запустите PICAXE Editor 6 (или IDE по вашему выбору) и откройте обе программы. Обратите внимание, что DS1307 24-часовой Time Set.bas загрузит неверную дату в чип RTC; не меняйте его в это время. Программируйте 08M2 с DS1307 24-часовым временем Set.bas, и когда он будет завершен, запрограммируйте 08M2 с PA-08M2 + LCD117 RTC.bas.
Если все будет хорошо, примерно через шесть секунд на ЖК-дисплее отобразится время как раз перед полуночью в субботу, 31 декабря 2011 года. Наблюдайте, как часы доходят до полуночи; день меняется на воскресенье, дата меняется до 1 января 2012 года, а время меняется до 12:00. Наденьте свою новогоднюю шляпу и сверните свои новые функциональные часы.
Сброс часов
Установка времени, дня и даты в DS1307 так же просто, как изменение DS1307 24-часовой Time Set.bas и перепрограммирование схемы. Строка 18 содержит восемь пар шестнадцатеричных чисел, а строка 19 - это комментарий, который показывает, что каждая из пар контролирует. Первые семь пар используются для установки времени, дня и даты; сравните значения внутри круглых скобок с комментариями в строках 11, 12 и 13.
Измените шестнадцатеричные значения в круглых скобках, чтобы отобразить время, день и дату, которые вы хотите загрузить в DS1307. Вероятно, лучше всего установить время в минуту или меньше, чем фактическое время, чтобы позволить себе время, чтобы быть готовым к программированию PICAXE. И поскольку для программирования чипа требуется около 15 секунд, вы должны начать программирование примерно до того времени, которое вы выбрали.
Также помните, что после того, как вы используете DS1307 24-часовой Time Set.bas для сброса времени, вам нужно будет снова запрограммировать PICAXE с помощью PA-08M2 + LCD117 RTC.bas.
Хотите узнать больше?
Если вы довольны тем, что часы работают, это здорово; не читайте дальше.
Но, может быть, вам интересно, почему дисплей на часах показывает 12-часовой формат, когда DS1307 был запрограммирован на использование 24-часового формата. Или, может быть, вы озадачены тем, почему время, день и дата были запрограммированы в шестнадцатеричных числах, но на дисплее отображаются десятичные числа. Или, возможно, у вас есть другие вопросы о работе кода.
Обе программы достаточно хорошо комментируются, а методы, используемые для преобразования данных из DS1307, достаточно хорошо известны, но, откровенно говоря, есть некоторые операции, которые невозможно полностью объяснить в комментарии. Фактически, такие объяснения выходят за рамки этого проекта и требуют отдельной статьи. Однако в техническом описании DS1307 содержится множество информации, а команда bcdtoascii описана в Руководстве по PICAXE 2.
Удачи и счастливого возиться!
Попробуйте этот проект сами! Получить спецификацию.