Имитатор телефонной линииРефераты >> Коммуникации и связь >> Имитатор телефонной линии
Генерируемый микроконтроллером сигнал задается с помощью клавиш “Занято”, “Вызов”, “Контроль вызова”.
Таким образом, опираясь на вышеизложенный принцип действия можно приступить к написанию программы для микроконтроллера, и синтезу принципиальной схемы устройства.
4. Описание программы для микроконтроллера
Разрабатываемая для микроконтроллера программа предназначена для обеспечения реализации всех функций разрабатываемого устройства. Программа должна содержать в себе следующие подпрограммы: подпрограмму анализа состояния клавиатуры, подпрограмму индикации ячеек памяти, связанных с набираемым номером, а также подпрограмму генерации сигналов АТС, которая и будет являться основной для разрабатываемого устройства. Также, целесообразно будет реализовать программу в виде бесконечного цикла, состоящего из вызова вышеописанных подпрограмм. Таким образом, можно предложить следующую блок-схему для разрабатываемой программы:
Рис. 1.
Блок-схема программы для имитатора сигнала АТС
Приведенная блок-схема является укрупненной и не дает понятия о принципе работы программы. Поэтому разумным будет привести также блок-схему работы основной подпрограммы mainwork разрабатываемой программы. Данная подпрограмма является основной, так как именно она организует выполнение алгоритма работы устройства.
Рис.2.
Блок-схема работы подпрограммы mainwork
Словами же пояснить работу подпрограммы можно следующим образом. В начале своей работы программа проверяет, лежит ли трубка телефонного аппарата (по сигналу от схемы анализа цепи постоянного тока). Если трубка положена, то проверяется, нажата ли кнопка “Вызов”, и если нажата, то контроллер начинает посылать импульсы 50 Гц пачками (пачка 1 с, пауза 3 с) по линии подачи звонковых импульсов. Если не нажата, то делается вывод о разрыве, вызванном импульсным набором номера, и вызывается соответствующая подпрограмма обслуживания этого набора (которая в случае длительного разрыва сделает вывод о положенной трубке и завершит очередной цикл).
Если же трубка снята, то устройство переходит в один из режимов генерации сигнала, который зависит от состояния клавиш “занято” и “контроль”. В случае нажатия клавиши “занято” программа вызывает подпрограмму busy_sig, которая имитирует сигнал “занято” АТС (50 Гц, пачка и пауза – 0,3 с). Если же нажата клавиша “Контроль вызова”, то вызывается подпрограмма ctrl_call, имитирующая контрольный сигнал вызова другого абонента (425 Гц, пачка 1 с, пауза 3 с). В случае если не нажата ни одна из этих кнопок (или нажаты обе), вызовом подпрограммы gene_50hz_1 генерируется обычный сигнал ответа АТС (50 Гц, непрерывный). После этого работа подпрограммы заканчивается, и начинается новый цикл работы программы.
Остальные подпрограммы (обслуживание клавиатуры, индикации) являются стандартными, и приводить их описание не имеет особого смысла. Спецификации на подпрограммы приведены ниже:
Подпрограмма Ring_in
Назначение: генерация звонковых импульсов и подача их на соответствующую линию;
Входные параметры: отсутствуют;
Выходные параметры: сигнал на линии P3.1;
Вызывается подпрограммой Mainwork;
Подпрограмма Busy_sig
Назначение: генерация сигнала АТС “Занято” и подача его на выходную линию;
Входные параметры: отсутствуют;
Выходные параметры: сигнал на линии P3.0;
Вызывается подпрограммой Mainwork;
Подпрограмма Load50_1
Назначение: “заряжать” таймер T0 на период 10 мс;
Входные параметры: отсутствуют;
Выходные параметры: измененное значение регистров TL0, TH0;
Вызывается подпрограммой Gene_50hz_1;
Подпрограмма Gene_50hz_1
Назначение: генерация одного импульса длительностью 10 мс и подача его на вывод 3.0;
Входные параметры: отсутствуют;
Выходные параметры: сигнал на линии P3.0;
Вызывается подпрограммой Mainwork
Подпрограмма Ctrl_call
Назначение: имитация сигнала “Контроль вызова” и подача его на соответствующий вывод;
Входные параметры: отсутствуют;
Выходные параметры: сигнал на линии P3.0;
Вызывается подпрограммой Mainwork
Подпрограмма Load425_1
Назначение: “заряжать” таймер T0 на период 1,17 мс;
Входные параметры: отсутствуют;
Выходные параметры: измененное значение регистров TL0, TH0;
Вызывается подпрограммой Gene_425hz_1;
Подпрограмма Gene_425hz_1
Назначение: генерация одного импульса длительностью 10 мс и подача его на вывод 3.0;
Входные параметры: отсутствуют;
Выходные параметры: сигнал на линии P3.0;
Вызывается подпрограммой Ctrl_call;
Подпрограмма Indication_fig
Назначение: вывод в порт индикатора цифры, находящейся в заданной ячейке памяти, с одновременным включением необходимого знакоместа;
Входные параметры: цифра, предназначенная для вывода и номер ячейки индикации;
Выходные параметры: код цифры на выходах P0.0-P0.4, а также высокий уровень на одном из выводов P1.0-P1.7;
Вызывается подпрограммой Indicate_all;
Подпрограмма Indicate_all
Назначение: Вывод информации о введенном номере на набор индикаторов;
Входные параметры: значения ячеек хранения цифр номера и число цифр номера;
Выходные параметры: телефонный номер, выведенный на набор индикаторов;
Вызывается подпрограммой Mainwork;
Подпрограмма Counter
Назначение: подсчет числа кратковременных разрывов в цепи постоянного тока;
Входные параметры: сигнал на входе P3.2;
Выходные параметры: число разрывов в цепи постоянного тока, помещенное в стек;
Вызывается подпрограммой Pulse_connect;
Подпрограмма Pulse_connect
Назначение: анализ импульсного набора номера и занесение его цифр в соответствующие ячейки памяти;
Входные параметры: отсутствуют;
Выходные параметры: цифры номера, занесенные в стек;
Вызывается подпрограммой Mainwork;
Подпрограмма Keyb_scan
Назначение: сканирование линейки клавиатуры и устранение дребезга;
Входные параметры: отсутствуют;
Выходные параметры: значение переменных, показывающих состояние клавиатуры;
Вызывается подпрограммой Mainwork;
Для ввода и вывода сигналов микроконтроллера используются следующие порты:
· порт P0 – вывод информации на семисегментные индикаторы;
· порт P1–стробирующие выводы для динамической индикации;
· порт P2 – обслуживание клавиатуры;
· порт P3 – вывод сигналов и звонковых импульсов, а также контроль за наличием тока в цепи.
Модульную структуру программы можно изобразить следующим образом: