Главная » Микроконтроллеры
Призовой фонд
на октябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Регулируемый паяльник 60 Вт
Паяльник
4. 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 Поиск в LCSCВ блокнот
LCD-дисплей16x2 HD447801 Поиск в LCSCВ блокнот
RTCDS12C8871 Поиск в LCSCВ блокнот
Электролитический конденсатор10мкФ 25В1 Поиск в LCSCВ блокнот
Резистор10 кОм1 Поиск в LCSCВ блокнот
Подстроечный резистор10 кОм1 Поиск в LCSCВ блокнот
Кварцевый резонатор12 МГц1 Поиск в LCSCВ блокнот
Добавить все

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

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

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

Теги:

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

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

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

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

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

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

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Модуль радиореле на 4 канала Конструктор для сборки: предусилитель на лампе 6N3
вверх