Russian Arabic English French German Hungarian Japanese Romanian Turkish Ukrainian

Таймер на микроконтроллере

В рассматриваемом таймере предусмотрено два режима обратного отсчета интервалов времени длитель­ностью от 1 -й до 999 минут или такого же числа секунд. Схема устройства представлена на рисунке. В нем име­ется выключатель SA1, с помощью кото­рого выбирают, в каких единицах, мину­тах или секундах будет вестись счет, кнопки управления SBl— SB3. трехраз­рядный светодиодный индикатор HG1 (разряд сотен) — HG3 (разряд единиц).

После включения питания таймера RC-цепь R2C3 формирует импульс, уста­навливающий микроконтроллер DDI (AT90S2313- 10PI) в исходное состояние.



При установке продолжительности формируемой выдержки каждым нажа­тием на кнопку SBI  показания инди­катора увеличивают на единицу. Если удерживать эту кнопку нажатой более 3 с. значение на индикаторе станет в каждую секунду увеличиваться на 5 еди­ниц (минут или секунд). Кнопка S62 (V) действует аналогично кнопке SB1. но значение на индикаторе не увеличива­ется, а уменьшается. По достижении значений 999 или 0 дальнейшее изме­нение показаний в соответствующую сторону автоматически блокируется. Выбрав выключателем 5AI, в мину­тах или в секундах будет отсчитываться врем» и установив кнопками SBI и SB2 необходимую продолжительность вы­держки, следует нажать на кнопку SB3 (С). С этого момента начинается работа таймера — высокий уровень на выходе PD6 микроконтроллера сменяется низ­ким, подается напряжение на исполни­тельное устройство, подключенное к разьему Х2, о чем сигнализирует неоно­вая лампа HLI (со встроенным балласт­ным резистором), и начинается обрат­ный отсчет заданного времени. Число, выведенное на индикатор, каждую ми­нуту или секунду уменьшается на еди­ницу Десятичная точка в разряде еди­ниц мигает с периодом I с.

Как только показания индикатора достигнут нуля, низкий уровень на выходе PD6 вновь станет высоким, что приведет к выключению исполнитель­ного устройства. Кроме того, в режиме отсчета минут в этот момент на выходе PD4 будет сформирована импульсная последовательность длительностью 60 с — прозвучит звуковой сигнал. Затем прибор возвратится в исходное состояние.

Для досрочного завершения вы­держки на кнопку SB3 следует нажать еще раз — исполнительное устройство будет выключено. Чтобы сформировать новую выдержку, необходимо задать ее продолжительность заново.

Узел управления исполнительным устройством собран на твердотельном реле U1, излучающий диод которого соединен с выходом PD6 микроконт­роллера. Благодаря этому реле цепи. связанные с сетью 220 В, изолированы от остальных цепей таймера. Пьезо­электрический излучатель НА1, подаю­щий звуковой сигнал окончания вы­держки. 1юдключен к выходу PD4.

На выходах порта в микроконтрол­лерах формируются сигналы, поступаю­щие через токоограничительные резис­торы R4—R11 на катоды элементов све­тодиодных индикаторов HG1—HG3. и сигналы, используемые для определе­ния состояния кнопок SB1—SB3. Вто­рые выводы всех кнопок соединены вместе и подключены к входу РОЗ мик­роконтроллера. Диоды VD1—VD3 пре­дотвращают замыкания между линиями порта В при одновременном нажатии на несколько кнопок.

Транзисторы VTI —VT3, управляемые сигналами с выходов PDO — PD2, пооче­редно соединяют с источником питания общие аноды индикаторов HG1— HG3. что требуется для организации динами­ческой индикации.

Тактовая частота микроконтроллера DDI задана кварцевым резонатором Z равной 10 МГц.

Загружаемая в микроконтроллер таймера программа, исходный текст которой имеется в приложении к статье, состоит из трех основных частей; моду­ля инициализации (метка INIT). основ­ного бесконечного цикла (метка SE1) и обработчика прерывания от таймера T/CI (метка Т1М0>.

Она начинает свою работу, инициа­лизируя регистры, счетчики, стек, тай­мер Т/С1. сторожевой таймер, порты ввода—вывода. По завершении инициа­лизации на индикатор выведено число 001. все десятичные точки выключены, на выходе PD6 установлен высокий уро­вень, поэтому цепь исполнительного устройства разомкнута. Отсчет времени остановлен.

Задача формирования точных интер­валов времени длительностью 1 с ре­шена с помощью прерываний от тайме pa Т/С 1, запросы которых следуют через каждые 3.9 мс (1/256 с). Их подсчитыва­ет счетчик в регистре R25. С помощью счетчика, организованного в регистре R21. формируется интервал в I мин.

В процессе обработки прерываний производятся также смена отображае­мого на индикаторе разряда и преобра­зование двоичного значения цифры, выводимой в этом разряде, в «семисегментный» код. Кроме того, выполняется опрос состояния кнопок, формируются сигналы управления оптоэлектронным реле и звуковым сигнализатором.

В памяти данных микроконтроллера с адреса $060 по $062 организован буфер, хранящий -значение оставшего­ся до завершения выдержки интервала времени. Именно из него программа обработки прерывания берет цифры для динамического вывода на индика­тор. При нажатии на кнопку SB1 храня­щееся в буфере значение увеличивает ся на единицу. Одновременно запус­кается счетчик секунд в регистре г1. Если кнопка удерживается нажатой более 3 с, значение в буфере начинает увеличиваться на единицу пять раз за каждую секунду. Подсчет интервала времени, в 1ечение которого происхо­дит это увеличение, организован в ре­гистре RО. После отпускания кнопки SB 1 счетчики в регистрах R1 и RО обнуляются.

Совершенно аналогичным образом организована обработка нажатий на кнопку SB2. уменьшающих число в буфере. Счетчики времени для этой кнопки находятся в регистрах RЗ и R2

В процессе отсчета заданной вы­держки число в буфере декрементиру­ется (уменьшается на единицу) каждую минуту или секунду в зависимости от положения выключателя SA1. Учтите, что при переводе его в другое положе­ние до завершения заданной выдержки соответственно изменится период де­крементирования.

В регистре R22 хранится двоичный код с единицей в разряде, соответ­ствующем включенному в данный момент разряду индикатора. При ини­циализации в него записывается 00000001 (включен индикатор HG3). а в регистр Y — начальный адрес буфера (S060). При каждом вызове процедуры обработки прерывания содержимое регистра R22 сдвигается на один разряд влево, а регистр Y инкрементируется. Понятно, что как только единица в реги­стре R22 будет сдвинута в третий разряд (пройдены все индикаторы), регистры R22 и Y следует перезагрузить, восста­новив в них исходные значения.

На время опроса состояния кнопок SB1—SB3 все индикаторы выключаются, а на выходах PB0 РВ2 микроконтролле­ра формируется код «бегущий ноль». Обнаружив низкий уровень на входе РОЗ и зная, на каком из выходов PB0—РВ2 уровень в данный момент низкий, про­цедура обработки прерывания принима­ет решение о том. какая кнопка нажата.

Вся программа занимает около 670 байт памяти программ микроконт­роллера.

Таймер собран на макетной плате, помещенной в пластмассовый корпус, на переднюю панель которого выведены индикаторы HG1—HG3. кнопки SB1 — SB3. выключатель SA1 и неоновая лампа HL1. Потребляемый от источника напря­жения 5 В ток не превышает 100 мА

Пьезоэлектрический излучатель НРМ14АХ можно заменить на НРА17АХ или НРА14АХ. Вместо индикаторов HDSP-F50I подойдут и другие свето­диодные семиэлементные индикаторы с общими анодами. Индикаторную лам­пу N-702R со встроенным резистором можно заменить обычной неоновой лампой, включив последовательно с ней резистор номиналом 200.. .560 кОм и мощностью не менее 0.25 Вт.

Программа микроконтроллера

Добавить комментарий


Защитный код
Обновить

Рейтинг@Mail.ru Яндекс.Метрика