Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по ЛР домофон.doc
Скачиваний:
6
Добавлен:
13.09.2019
Размер:
1.45 Mб
Скачать

2 Архитектура системы

Изобразим архитектуру интерфейса, которая включает в себя устройства ввода/вывода и порты ввода/вывода.

Для экономии портов, два двоичных индикатора и две кнопки подключим к портам вывода и ввода клавиатуры.

Ввод осуществляется с клавиатуры 3*4. Используются 3 линии порта kbdlamp для выбора строки и 4 линии kbdkey для ввода, и кнопок в количестве 10 штук (2 линии порта kbdkey и порт keyport)/ Общее количество портов ввода равно двум.

Вывод информации осуществляется на 2 семисегментных индикатора (порты indport1 и indport2) и 10 двоичных (2 линии порта kbdlamp и порт lampport). Общее количество портов вывода для дисплея равно трём.

Архитектура устройства представлена на рисунке 2.1.

Indport1 (единицы)

Indport2 (десятки)

kbdlamp

kbdkey

lampport

keyport

Индикаторы звонка

Индикаторы связи

Кнопки ответа

Кнопки открытия

Открыть изнутри

Установка номера первой квартиры

Рисунок 2.1 – Архитектура программы электронный домофон

3 Декомпозиция

Разобьём программу на несколько подпроцессов нижнего уровня. Сначала представим задачу как единый процесс (рисунок 3.1), входными и выходными данными которого будут являться данные с входных/выходных устройств.

Клавиатура 3*4

Семисегментные индикаторы

Электронный домофон

Кнопки в квартирах

Кнопки установки первого номера и открытия изнутри

замок

Телефоны в квартирах

Рисунок 3.1 – Исходная схема программы устройства «электронный домофон»

Выполним декомпозицию программы. Выделим процесс ввода, который будет формировать данные в памяти. Процесс вывода на семисегментные индикаторы, вывод на замок и процесс управления общением и вызовом. Полученная статическая модель программы приведена на рисунке 3.2.

Рисунок 3.2 – Статическая модель программы после первого этапа декомпозиции

Процессы ввода и управления общением и вызовом требуют дальнейшей декомпозиции. Разобьем процесс ввода на подпроцессы ввода с двери и ввода из квартир. Оба они не требуют дальнейшей декомпозиции. Процесс управлением общением и вызовом разобьём на подпроцессы управление общением и управление вызовом. Уточним набор «данные из квартир».

Рисунок 3.3 – Статическая модель программы после декомпозиции

Все процессы имеют очевидную реализацию. Дальнейшая декомпозиция не требуется.

4 Структура данных программы

Из статической модели следует, что передача информации между программными модулями осуществляется с помощью наборов данных.

Результаты разработки структуры данных сведем в таблицу (таблица 4.1).

Таблица 4.1 Структура данных программы устройства электронный домофон.

Наименование данных

Символьное имя

Формат данных

Кодирование данных

примечание

D7

D6

D5

D4

D3

D2

D1

D0

Образ клавиатуры

KbdImage

4 байта

0

0

0

0

0

*

*

*

4 байта в позиционном коде

0

0

0

0

0

*

*

*

...

0

0

0

0

0

*

*

*

Флаг ошибки клавиатуры

KbdErr

Байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг пустой клавиатуры

EmpKbd

Байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг установки квартиры

flsetkv

Байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг открытия двери

fldoor

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Образ квартир

imkvart

байт

0

0

0

0

*

*

*

*

Позиционный код

Очередная цифра

nextdig

байт

0

0

0

0

*

*

*

*

Унитарный код

Образ ответа

imansw

байт

0

0

0

0

*

*

*

*

Позиционный код

Флаг ответа

flansw

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Флаг звонка

flcall

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Номер первой квартиры

sdigout

2 байта

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

2 байта от 0 до 9

Номер вызываемой квартиры

kvart

байт

0

0

0

0

0

*

*

*

от 0 до 3

Флаг ошибки ввода

flerr

байт

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

Включен

Выключен

Данные на дисплей

Digout

2 байта

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

2 байта от 0 до 9

5 Алгоритмы программы

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

Из статической модели программы следует, что для решения поставленной задачи необходимо реализовать ряд процессов:

- Ввод с двери (KbdInput);

- Контроль ввода с клавиатуры (KbdInContr);

- Преобразование очередной цифры (NxtDigTrf);

- ввод цифр (Numvvod);

- Ввод из квартир (KeyInput);

- Управление вызовом (outcall);

- Управление общением (outconn);

- Управление открыванием двери (opendoor);

- Вывод на семисегментные индикаторы (cifrout).

В скобках указаны символьные имена, присвоенные программным модулям. Имена будут использоваться как наименования соответствующих процедур программы.

Алгоритм макроуровня программы в одноуровневом представлении приведен на рисунке 5.1. Для повышения информативности ГСА на ней изображены входные и выходные данные, обрабатываемые каждым программным модулем.

Рисунок 5.1 – Граф-схема алгоритма работы программы (одноуровневое представление)

Далее необходимо перейти к двухуровневому представлению алгоритма, что соответствует организации программы. Этот переход осуществляется формально, он представлен на рисунке 5.2.

Рисунок 5.2 – Граф-схема алгоритма работы программы (двухуровневое представление)

Итак, после определения основных программных исполнителей необходимо

разработать алгоритм каждого из них.

Подзадача «Функциональная подготовка» (funcprep) производит инициализацию флагов и начальных значений переменных посредством обнуления всех данных.

Подзадача «Ввод с двери» (kbdinput) осуществляет считывание данных с портов клавиатуры, ключа и перемычки установки первой квартиры и формирует соответствующие их состоянию данные в памяти. Граф-схема представлена на рисунке 5.3.

Ввод с двери

KbdImage, fldoor

Рисунок 5.3 – Граф-схема алгоритма ввода с двери

Этот модуль производит анализ образа клавиатуры и формирует флаги ошибки и пустой клавиатуры. ГСА этого модуля приведена на рисунке 5.4.

Рисунок 5.4 – Алгоритм модуля «Контроль ввода с клавиатуры»

Этот модуль производит анализ образа клавиатуры флагов ошибки и пустой клавиатуры и формирует код кнопки, состоящий из номера строки и столбца. ГСА этого модуля приведена на рисунке 5.5.

Рисунок 5.5 – Алгоритм модуля «Преобразование очередной цифры»

Подзадача «ввод цифр» (numvvod) осуществляет анализ образа клавиатуры и формирует данные в памяти. Граф-схема представлена на рисунке 5.6.

ввод цифр

Empkbd, nextdig, kbderr, flcall, sdigout, flsetkv

flcall, sdigout, digout, flerr, kvart,

Рисунок 5.6 – Граф-схема алгоритма ввод цифр

П

Ввод из квартир

flcall, imkvart, imansw

одзадача «ввод из квартир» (keyinput) осуществляет приём данный о снятой трубке и нажатии кнопки открытия двери из квартир, формируя соответствующие данные. Граф-схема представлена на рисунке 5.7.

flcall, imkvart, imansw, flansw, fldoor

Рисунок 5.7 – Граф-схема алгоритма ввод из квартир

Подзадача «управление вызовом» (outcall) осуществляет обработку данных при вызове одной из четырёх квартир с домофона. Граф-схема алгоритма представлена на рисунке 5.8.

Управление вызовом

flcall, kvart

digout, imkvart

Рисунок 5.8 – Граф-схема алгоритма управление вызовом

Подзадача «управление вызовом» (outconn) осуществляет вывод управляющих сигналов на телефоны в квартирах. Граф-схема алгоритма представлена на рисунке 5.9.

Управление общением

flcall, flansw, imkvart, imansw

Рисунок 5.9 – Граф-схема алгоритма управление вызовом

Подзадача «управление открыванием двери» (opendoor) осуществляет вывод сигнала на замок. Граф-схема алгоритма представлена на рисунке 5.10.

Управление открыванием двери

fldoor

Рисунок 5.10 – Граф-схема алгоритма управление вызовом

Процедура «вывод на семисегментные индикаторы» (cifrout) выполняет вывод в статическом режиме образов цифр из digout. Граф-схема представлена на рисунке 5.11.

Вывод на семисегментные индикаторы

Digout, flerr

Рисунок 5.11 – Граф-схема алгоритма вывод на семисегментные индикаторы

5.1 Кодирование программы

На основании анализа технического задания, архитектуры системы, декомпозиции, структуры и алгоритмов программы напишем исходный код (приложение А).

6 Руководство пользователя

Наберите номер двери на клавиатуре и нажмите клавишу ввод. В случае ошибки нажмите отмена. Если вы увидели на дисплее сообщение об ошибке, значит, вы ошиблись при вводе номера квартиры. В противном случае произойдёт звонок телефона домофона в вызываемой квартире.

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

Поднесите ключ к площадке, или нажмите кнопку изнутри для открытия двери.

При отсутствии ответа, ошибке, или отказе в открытии двери, устройство вернётся в исходное состояние.

Для установки номера первой квартиры в подъёзде, замкните соответствующие контакты на плате, при этом устройство перейдёт в режим настройки. Введите номер первой квартиры в подъезде с клавиатуры и нажмите ввод.