«Таймер обратного отсчета с динамической индикацией. Сайт о микроконтроллерах AVR.RU», версия для печати. Исходный документ: https://avr.ru/ready/measure/time/time

Таймер обратного отсчета с динамической индикацией

 

         Предлагается  простая  схема  таймера  со светодиодной  динамической  индикацией и  звуковой  сигнализацией  (см. Рис 1).Таймер  может  быть  применен в  кулинарии,  медицине и  других  областях, где  уставка  времени  не  превышает  99 сек.   Установка  времени  отсчета  осуществляется   при нажатии  кнопки «SET»  и  кнопок  «>» , «<» - увеличения  и  уменьшения  времени  отсчёта, которое  индицируется на  светодиодном  индикаторе  DA2  с  общим  катодом. В  качестве  катодных  ключей  используется  транзисторная  сборка  DA3. По  окончании  счета  включается  генератор  на  DD2.1, DD2.2c  выходным  каскадом  на  VT1, который  нагружен  на излучатель  звука  Z1. Ядром  схемы  является  микроконтроллер  ATtiny2313  (DD1), работающий  от  внутреннего  генератора  -  4 МГц . Цепь  сброса  DD1  образована  R12, C2, DD2.3, DD2.4. Стабилизированное  питание  схемы  (+5В) обеспечивает  микросхема  DA1. Элементная  база  схемы  и  её  возможная  замена  приведены  на  Рис.1.. Контроллер  (в  корпусе  DIP)  желательно  установить  в  панельке  для  микросхем,  что  очень  удобно  при  отладке  программы. 

схема

 

         Блок-схема  программы  представлена   на  Рис.2 . Программа  состоит  из  основной  части, и подпрограмм  установки  времени  по  внешнему  прерыванию -  INT0, обработки  прерываний таймера1  по  совпадению  в  канале А  и индикации.  Таймер  периодически  по  достижении 1сек обнуляется  и  начинает  счет  сначала. Останов  таймера  происходит  по  истечении   установленного  времени. 

 блок-схема

          Подпрограмма  индикации  выделяет  из  заданного  времени  единицы  и  десятки  секунд  и  посредством  косвенной  адресации управляет  семисегментными  индикаторами.

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

         Остановимся  на  некоторых  моментах  программы:

         1. Если  тактовая  частота  контроллера  - 4МГц, то  для получения  интервала  1 сек  таймеру  необходимо  сделать  4000000 отсчётов.   При  коэффициенте  делителя  1/64 количество  отсчётов  таймера  составит   4000000 / 64 = 62500 . С  учётом  того, что  16-разрядный таймер  может  считать  от  0  до  65536, в OCR1A_  запишем  62500.

         2. Для  формирования  задержки 1 сек  без  таймера  при  тактовой  частоте  4 МГц  необходимо  4000000/5 (5- коэфф., зависящий  от  величины  задержки и  тактовой  частоты), получаем  800000. Переводим  это  число  в  шестнадцатеричную  систему – 0хС3500. Записываем  это  число, используя  четное  количество  разрядов  (добавляем  нулевой  старший  разряд , если  количество  разрядов  нечетное), и  затем  делим  его  на  группы  по  два  разряда: 0х00, 0х35,0х0С. Далее  следует  загрузка  этих  чисел  в  регистры  Delay.

        3.Обычно  коды  семисегментного  индикатора  помещают  в память  программ  и  извлекают  с  помощью  команды  lmp, но  в  данном  случае  в  целях  упрощения  программы  для  хранения  кодов  используются  регистры  r0…r9.

        Литература:

        Д. Мортон   Микроконтроллеры  AVR. Вводный  курс.- М.: «Додека – ХХ1»,2006.

        А.В. Белов  Микроконтроллеры  AVR  в  радиолюбительской  практике. – СПб.: «Наука  и  техника», 2007. 

        Ю.В. Ревич   Практическое  программирование  Atmel  AVR  на  языке  ассемблера. – СПб.: «БХВ – Петербург», 2008. 

 

  Приложения:


Схема (jpg и PCAD 2006) (/int/Files/Dounload/timer/Timer_shema.rar)

Программа (AVR Studio 4.12) (/int/Files/Dounload/timer/Timer_program.rar)




Автор: Andre (http://forum.avr.ru/member.php?u=11273)
      

Все права защищены © AVR.RU, 2021.