- •Содержание
- •Введение
- •1 Анализ задачи
- •1Функциональная спецификация системы
- •2) Описание интерфейса между системой и пользователем.
- •1.2 Описание интерфейса между системой и пользователем
- •2 Предварительное проектирование системы
- •2.1 Разбиение системы на модули
- •2.2 Соотношение между аппаратными и программными средствами
- •2.3 Построение структурной схемы аппаратной части системы
- •3 Проектирование аппаратных средств системы
- •4 Проектирование программного обеспечения
- •Заключение
- •Список использованных источников
- •Приложение а
4 Проектирование программного обеспечения
С точки зрения программиста, разработанная система управления состоит из программно доступных регистров микроконтроллера и четырёх портов A, В, C и E. Вся работа системы заключается в определении состояния входных портов, выполнения определённых вычислений и выводе данных из микроконтроллера Motorola (ввод данных в порты).
Блок-схема алгоритма работы программы приведена на чертеже БГУИ.100701.027 ПД.
Вначале выполняется инициализация микроконтроллера. Выделяется память для стека, устанавливается предделитель таймера (так чтобы интервал между срабатываниями был равен 1 с), порт C устанавливается на ввод, таймер устанавливается на 1 секунду. Далее в бесконечном цикле выполняются следующие действия:
Проверка состояния кнопок установки температурного режима.
Проверка текущей температуры.
Проверка состояния двери.
При проверке состояния кнопок установки температурного режима загорается светодиод, соответствующий нажатой кнопке. Также из памяти берутся значения минимальной и максимальной температуры заданного диапазона (они хранятся в соответствующих массивах, что позволяет легко изменить эти значения в коде программы).
При проверке температуры вначале значение текущей температуры считывается с датчика температуры. Далее проверяется выход текущей температуры за границы заданного диапазона. Если текущая температура находится в границах диапазона (температурный режим поддерживается), никаких действий не предпринимается. Если текущая температура выше максимальной для заданного диапазона, включается мотор охлаждения. Если текущая температура ниже минимальной для заданного диапазона, мотор охлаждения отключается.
При проверке состояния двери анализируется, открыта ли дверь холодильника или закрыта. Если дверь открыта, никаких действий не предпринимается (время, в течение которого дверь была открыта, считается и анализируется в обработчике прерывания таймера). Если дверь закрыта, то счетчик времени, в течение которого дверь была открыта, обнуляется. Также если работает сигнализация, которая срабатывает если дверь открыта в течение 4 минут, то эта сигнализация отключается.
Каждую секунду срабатывает таймер. В обработчике прерывания от таймера выполняются следующие действия:
Сброс флага прерывания.
Установка таймера еще на 1 секунду.
Увеличение времени, в течение которого дверь холодильника открыта (если дверь закрыта, этот счетчик очень скоро обнулится, т.е. так и не достигнет значения 4 минут).
Если время, в течение которого дверь холодильника открыта, стало больше 4 минут, то выдается сигнализация открытия двери.
Если мотор охлаждения включен, то проверяется, уменьшилась ли температура с момента его включения. Если уменьшилась, то счетчик времени работы мотора охлаждения обнуляется.
Если мотор охлаждения включен, температура не уменьшилась, и прошло 4 минуты (к примеру), то это свидетельствует о невозможности поддерживать температурный режим (выходит, что мотор охлаждения неисправен). В таком случае выдается сигнализация невозможности поддержания температурного режима.
Полный листинг программы приведен в приложении. В таблице 1 приведена карта памяти для устройства управления холодильником.
Таблица 1 – Карта памяти
ОЗУ $0000 - $0040 $0041 - $0081 |
Стек Переменные |
Регистры и Порты $1000 $1004 $1006 $100A $1025 $1024 $1026 $1007 |
PORTA PORTB PORTC PORTE TFLG2 TMSK2 PACTL DDRC |
ПЗУ $E000 - $E01D $E01E - $E0D3 $E0D4 - $E100 $FFF0 - $FFFE |
Основная программа Пользовательские подпрограммы Подпрограмма обработки прерывания Вектора обработки прерываний |
