Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Цифровые часы на RTC DS12C887 и 8051

Данная статья представляет собой улучшенный вариант цифровых часов с использованием RTC DS12C887 и 8051 с установкой времени. В предыдущей статье мы обсуждали основные приемы получения данных из RTC DS12C887,  используя  микроконтроллер  8051 (AT89C51). Эта статья  продолжение к вышеуказанной статье, которая знакомит вас с концепцией обработки прерываний для получения времени и другой информации от RTC DS12C887 .   

Используя прерывания, мы получаем большое преимущество и гибкость при обработке данных с RTC,  по сравнению с ранее описанным методом. Преимущество данного метода заключаются в том, что мы разгружаем микроконтроллер от лишних действий, тем самым экономим память мк.

RTC 12C887 имеет три прерывания, а именно:

  • Будильник, настроенный на время суток
  • По периоду времени
  • Конец цикла обновления часов

Более подробно о прерываниях можно прочитать в техническом описании на изделие. Исходный код программы свободно распространим и написан на С.

Все три прерывания работают независимо друг от друга.

Схема часов:

Когда происходит прерывание DS12C887, выполняются следующие события:
1. Бит 7 и соответствующий флаг прерывания регистра С устанавливается равным лог. 1.
2. Вывод IRQ переключается на лог. 0,  если бит разрешения соответствующего прерывания установлен  в регистре B.

Шаги для обработки прерывания:
1. Подключите IRQ вывод RTC к внешнему аппаратному прерыванию микроконтроллера.
2. Инициализировать внешние  прерывания  микроконтроллера для получения прерываний от RTC.
3. Инициализировать прерывание RTC, которое будет использоваться, настроив соответствующие биты регистра B.
4. Когда возникает прерывание  нужно читать значение Регистра  C, чтобы проверить, какое прерывание произошло.

Регистры В и С используются для обработки прерываний. Чтобы включить нужное прерывание нужно установить биты 4-6  в регистре В.

Регистр С можно только читать, он содержит информацию о том какое прерывание произошло посредством установки (лог.1)  соответствующего флага  прерывания. Для более подробной информации можно обратиться  к техническому описанию.

Когда происходит прерывание  7 ой бит регистра С устанавливается  в лог. 1. Далее устанавливается флаг соответствующего прерывания. Далее просто считывается значение этого регистра. Регистр  C обновляется каждый раз, независимо от того использовали ли мы прерывание или нет. В таком случае значение регистра С сохраняется. Если произошло первое прерывание, а потом второе то флаг первого прерывания сохранится в регистре.

Вывод 19 (выход прерывания  IRQ)  RTC используется для указания на прерывание. На выводе лог. 0 если:
1. Любое из трех прерываний происходит.
2. Бит разрешения соответствующего прерывания установлен в Регистре  B.

Этот вывод может быть использован для обеспечения внешнего аппаратного прерывания микроконтроллеру. Этот вывод мультиплексирован ко всем трем прерываниям, т.е. лог.0, когда любое из прерываний происходит и, следовательно, означает, что прерывание произошло.Однако, чтобы определить, какое прерывание произошло надо считать значение  регистра С. На IRQ будет лог. 0, пока на флаге прерывания  лог.1 в регистре С и соответствующих разрешающих битах регистра B. После того, как прерывание произошло, вывод IRQ нужно сменить состояние, чтобы часы работали дальше. Вывод IRQ может быть установлен с помощью одного из двух способов:
1. Подачей лог. 0  на вывод сброса очистит  состояние IRQ.
2. Читая регистр  C, вывод прерываний будет очищен с помощью процессора.

В коде мы использовали второй метод сброса IRQ. Читая регистр C узнаем, какие прерывания произошли.

Подключение  DS12C887 к микроконтроллеру показано на схеме. В этой статье используется прерывание - конец цикла обновления часов. Каждый раз, когда приходит прерывание, время увеличивается на одну секунду. Результат отображается на ЖК-дисплее. Часы представлены в этой статье также  имеют  установку  времени. Часы используют  2-е внешнее прерывание  микроконтроллера AT89C51 для установки времени. Пользователь может установить время, нажав переключатель, подключенный к контакту 13 микроконтроллера, который является прерыванием 2. Часы и минуты можно установить с помощью кнопки на выводе 5 и  6 контроллера AT89C51. После того, как время установили, пользователю необходимо нажать на старт (вывод 8 контроллера), чтобы запустить часы. Код программы для часов RTC DS12C887 + 8051 написан на языке C.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МикроконтроллерAT89C511 Поиск в магазине ОтронВ блокнот
LCD-дисплей16x2 HD447801 Поиск в магазине ОтронВ блокнот
RTCDS12C8871 Поиск в магазине ОтронВ блокнот
Электролитический конденсатор10мкФ 25В1 Поиск в магазине ОтронВ блокнот
Резистор10 кОм1 Поиск в магазине ОтронВ блокнот
Подстроечный резистор10 кОм1 Поиск в магазине ОтронВ блокнот
Кварцевый резонатор12 МГц1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 15.01.2014 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
200 Вт усилитель класса D на IRS2092 ELM327 OBD II — адаптер с поддержкой CAN
вверх