Здравствуйте.
Написал пробный вариант регистратора дискретных сигналов, пока двухканальный (тестовый вариант).
Так как в программировании не силён, алгоритм получился наверняка не оптимальный.
Что применяется из железа в данный момент (основа): Контроллер ATmega 8535 (SEM0007M-8535-16) частота 4мГц – задействован внутренний генератор, дисплей MT-16S2D-3YLG (2 строки по 16 символов) – подключен по четырёхбитной шине данных, пять кнопок с НР-контактами, часы-календарь DS1307 со стандартной обвязкой. Устройство живёт пока на отладочной плате.
Краткое описание устройства:
Как Вы уже заметили, девайс имеет часы реального времени, это основа устройства. В данном варианте задействованы два дискретных канала контроля с внутренними подтягивающими резисторами (это только в тестовом варианте, для удобства). При замыкании любого канала на общий провод (GND) более 1 секунды, в EEPROM записывается номер текущего канала, время (часы, минуты), дата (число, месяц), количественный номер записанного сообщения, индикация о записанном сообщении и адрес последней записанной ячейки энергонезависимой памяти. При этом звучит зуммер в течении 1,5 секунды, сигнализируя о новом записанном сообщении. На индикаторе отображается номер канала, мигающий символ (динамик) и порядковый номер записанного сообщения.
В данном варианте девайса, максимальное количество записанных сообщений равняется 100 (используется EEPROM контроллера).
Устройство имеет в базовом варианте пять кнопок управления: вверх, вниз, вправо, влево, ОК.
В дежурном состоянии на дисплее показано текущее время, номер последнего записанного в память канала, индикатор записанного сообщения, индикатор будильника, индикатор напряжения батареи часов (в данном варианте пока не реализовано), день недели, дата, месяц, год и количество записанных сообщений.
Дисплей.gif [ 8.15 КБ | Просмотров: 18888 ]
Описание алгоритма:
При первом запуске программы, устройство автоматически уходит в режим установки дня недели, даты, месяца, года, часов, минут, секунды просто обнуляются при записи установок с помощью кнопки «ОК». Установка осуществляется кнопкой «Вверх», а сохранение выбранного значения кнопкой «ОК». Повторно зайти в этот режим можно из дежурного режима с помощью кнопки «Вниз».
Из дежурного режима с помощью кнопки «Вверх» попадаем в режим установки будильника. Включение и выключение будильника осуществляется с помощью кнопки «ОК»
В режим просмотра записанных сообщений заходим с помощью кнопки «Вправо». На экране отображается информация последнего записанного сообщения (секунды и день недели не отображаются). С помощью кнопок «Влево» и «Вправо» просматриваем все сообщения. Если хотим попасть сразу на первое записанное сообщение, то необходимо сперва нажать кнопку «Влево», а потом кнопку «Вверх». Возврат в дежурный режим осуществляется с помощью кнопки «ОК». При этом индикатор записанных сообщений и индикация количества сообщений, обнуляется. Повторно из дежурного состояния просмотреть старую запись невозможно.
Если не просматривать записанного сообщения до полного заполнения EEPROM, то при полностью заполненной памяти, на дисплее появляется надпись «Память заполнена на 100%». В этом режиме регистратор игнорирует сообщения от каналов контроля. Выход из этого режима осуществляется с помощью кнопки «ОК», при этом происходит переход не в дежурный режим, а в режим просмотра сообщений.
Тестовый вариант пока живёт на отладочной плате.
3.jpg [ 35.12 КБ | Просмотров: 18888 ]
Данный регистратор после доработки можно применять, к примеру, в охранных устройствах.
Registrator.rar [30.06 КБ]
Скачиваний: 784