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

 

Содержание


1. Техническое задание

2. Введение

3. Выбор микроконтроллера

4. Краткое описание микроконтроллера КМ1816ВЕ51

4.1 Общее описание микроконтроллера

4.2 Порты ввода/вывода информации

4.3 Последовательный порт

4.4 Таймер/счетчик

5. Выбор элементной базы

6. Алгоритм работы устройства

6.1 Алгоритм работы передатчика

6.2 Алгоритм работы приемника

7. Листинг программ

8. Краткое руководство по эксплуатации

9. Заключение

1. Техническое задание


Разработать охранный комплекс для автомобиля. Комплекс должен состоять:

ü"Брелок". Устройство, которое будет формировать 2 команды:

"взять" - взять объект под охрану;

-"снять" - снять объект с охраны;

ü"Приемник". Устройство, которое принимает эти команды, декодирует и организует управлением системой сигнализации.

Предусмотреть программную защиту от перебора.

Взаимосвязь должна осуществляться посредством ИК излучения.

2. Введение


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

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

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

охранный комплекс автомобиль микроконтроллер

3. Выбор микроконтроллера


Для решения задач управления и регулирования в приборах, устройствах и системах автоматики лучше всего приспособлены однокристальные микроЭВМ (ОМЭВМ). ОМЭВМ предназначены для интеллектуализации оборудования различного назначения. Однокристальные микроЭВМ представляют собой приборы, конструктивно выполненные в виде одной БИС и включающие в себя все устройства, необходимые для реализации цифровой системы управления минимальной конфигурации. Использование ОМЭВМ в системах управления обеспечивает достижение исключительно высоких показателей эффективности при низкой стоимости.

В качестве микроЭВМ выбираем восьмиразрядную высокопроизводительную ОМЭВМ семейства МК51 - КР1816ВЕ51. Данные ОМЭВМ рассчитаны на применение в массовой продукции. Новые возможности ввода-вывода и периферийных устройств расширяют диапазон применения и снижают общие затраты системы. Микроконтроллер выполнен на основе высокоуровневой n-МОП технологии и выпускаются в корпусе БИС, имеющим 40 внешних выводов. Цоколевка корпуса МК51 и наименования выводов показаны на рис. Для работы МК51 требуется один источник электропитания +5В. Через четыре программируемых портов ввода/вывода МК51 взаимодействует со средой в стандарте ТТЛ-схем с тремя состояниями выхода.

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

4. Краткое описание микроконтроллера КМ1816ВЕ51


4.1 Общее описание микроконтроллера


Восьмиразрядные высокопроизводительные однокристальные микроЭВМ семейства МК51 серии 1816 выполнены по высококачественной n-МОП технологии.

ОМЭВМ КР1816ВЕ51 (аналог БИС 80С51 семейства МСS-51 фирмы Intel США) содержит масочно-программируемое в процессе изготовления кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитаны на применение в массовой продукции. За счет использования внешних микросхем памяти общий объем памяти программ может быть расширен до 64 Кбайт.

ОМЭВМ содержит все узлы, необходимые для автономной работы:

üцентральный восьмиразрядный процессор;

üпамять программ объемом 4 Кбайт;

üпамять данных объемом 128 байт;

üчетыре восьмиразрядных программируемых канала ввода-вывода;

üдва 16-битовых многорежимных таймера/счетчика;

üсистему прерываний с пятью векторами и двумя уровнями;

üпоследовательный интерфейс;

üтактовый генератор.

Система команд содержит 111 базовых команд с форматом 1, 2, или 3 байта.

ОМЭВМ имеет: 32 регистра общего назначения (РОН); 128 определяемых пользователем программно-управляемых флагов;

Условное графическое обозначение представлено на рисунке 1.


Рисунок 1. Цоколевка корпуса МК51 и наименование выводов


4.2 Порты ввода/вывода информации


Порты P0, P1, P2, P3 являются квазидвунаправленными портами ввода-вывода и предназначены для обеспечения обмена информацией микроконтроллера с внешними устройствами, образуя 32 линии ввода - вывода. Каждый из портов содержит восьмиразрядный регистр, имеющий байтовую и битовую адресацию для установки (запись '1') или сброса (запись '0') разрядов этого регистра с помощью программного обеспечения. Выходы этих регистров соединены с внешними ножками микросхемы.

Схемотехника портов ввода/вывода МК51 для одного бита показана на рисунке 2.


Рисунок 2. Схемотехника портов ввода/вывода МК51: а - порт 0; б - порт 3


üПорт P0 может быть использован для организации шины данных при работе микроконтроллера с внешней памятью данных или программ, при этом через него выводится младший байт адреса A0 - A7 выдается из микроконтроллера и принимается в микроконтроллер байт данных. Во время доступа к внешней памяти во все триггеры - защелки порта P0 аппаратно записываются "1" (т.е. содержимое порта теряется). Кроме того, через порт P0 передаются данные при программировании внутреннего ППЗУ, и читается содержимое внутренней памяти программ при работе с программатором. При сбросе микросхемы во все разряды порта записываются '1'. Схема порта P0 отличается от всех других портов тем, что у этого порта нет внутреннего генератора тока. Поэтому при работе с этим портом приходится подключать внешние резисторы.

üПорт P1 может быть использован для чтения внутренней памяти программ или для передачи младшего байта адреса при программировании внутреннего РПЗУ. В младших моделях микроконтроллера семейства других альтернативных функций у порта P1 нет. При сбросе микросхемы во все разряды порта записываются '1'.

üПорт P2 может быть использован для передачи старшего байта адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ. Через порт Р2 выводится старший байт адреса А8 - А15 при работе с внешней памятью программ и внешней памятью данных (с 16 - разрядным адресом). Во время доступа к внешней памяти содержимое регистра - защелки порта P2 не изменяется. При сбросе микросхемы во все разряды порта P2 записываются '1'.

üПорт P3. Каждая линия порта Р3 имеет индивидуальную альтернативную функцию, которая может быть задействована простым обращением к устройству, соединенному с ножкой порта Линии порта Р3 могут выполнять альтернативные функции только в том случае, если в соответствующие этим линиям разряды регистра записаны логические '1', иначе на линиях порта будет присутствовать '0' независимо от характера принимаемой или передаваемой информации. При сбросе микросхемы во все разряды порта записываются '1'.

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


4.3 Последовательный порт


Через универсальный последовательный порт осуществляются прием и передача информации, представленной в последовательном коде (младшими битами вперед). Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян. Работой последовательного порта управляют три регистра:

·Регистр управления/статуса приемопередатчика SCON

·Бит SMOD регистра управления мощностью PCON

·Буферный регистр приемопередатчика SBUF

Последовательный порт может работать в четырех различных режимах.

·Режим 0. Синхронный режим. Информация передается, и принимается через вывод входа приемника RxD. Принимаются или передается 8 бит данных. Через вывод TxD выдаются импульсы синхронизации, которые сопровождают каждый бит. Скорость передачи фиксирована и составляет 1/12 Fген.

·Режим 1. Асинхронный 8-ми битовый режим. <C:SERGIV_KursMPSDOCMPSMCS51_1%22%20l%20> Передаются (через TXD) или принимаются (через RXD) 10 бит: старт-бит (логический 0), 8 бит данных (младшим разрядом вперед) и стоп-бит (логическая 1). При приеме, стоп-бит поступает в бит RB8 регистра SCON. Скорость передачи в режиме 1 переменная: для управления скоростью передачи вы можете использовать таймер Т1 и/или Т2.

·Режим 2. Асинхронный 9-ти битовый режим с фиксированной скоростью передачи. Передаются (через TXD) или принимаются (через RXD) 11 бит: старт-бит.8 бит данных (младшим разрядом вперед), программируемый 9-й бит данных и стоп-бит. При передаче, в 9-й бит данных (бит ТВ8 регистра SCON) может быть записан логический 0 или 1, например, значение бита четности (бит Р регистра PSW). При приеме, 9-й бит данных поступает в бит RB8 регистра SCON. Присутствие стоп-бита контролируется схемой обнаружения ошибки кадра. Скорость передачи программируется и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.

·Режим 3. Асинхронный 9-ти битовый режим. Совпадает с режимом 2 во всех деталях, за исключением частоты приема/передачи, которая задается таймером.

Во всех четырех режимах передача начинается любой командой, которая использует SBUF как регистр-приемник. Прием в режиме 0 начинается при условии RI = 0, REN = 1. Прием в других режимах начинается с приходом старт-бита, если бит REN установлен.

В первом режиме работы последовательный порт работает в асинхронном режиме. Временная диаграмма передаваемых сигналов через последовательный порт в асинхронном режиме работы показана на рисунке 3. Первый режим работы задаётся записью комбинации 01 в биты SM0 и SM1 регистра SCON. В асинхронном режиме работы информация передается через ножку передатчика последовательного порта микроконтроллера TxD, а принимается через вывод входа приемника RxD, то есть в этом режиме работы последовательный порт работает в дуплексном режиме. Это означает, что передача и приём информации может вестись независимо друг от друга. Скорость передачи в этом режиме настраивается при помощи таймера T1.


Рисунок 3. Временная диаграмма приёма или передачи информации последовательным портом в первом режиме работы.


4.4 Таймер/счетчик


В базовых моделях семейства имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий. Каждый из них состоит из двух 8-битных регистров TH0 (старший байт) и TH0 (младший байт) для таймера 0 или TH1 (старший байт) и TH1 (младший байт) для таймера 1. В режиме таймера содержимое соответствующего таймера/счетчика инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов колебаний кварцевого резонатора.

В режиме счетчика содержимое соответствующего таймера/счетчика инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на вывод микроконтроллера T0 или T1. Так как на распознавание периода требуются два машинных цикла, максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входной сигнал должен удерживать значение 1, как минимум, в течение одного машинного цикла микро-ЭВМ.

Таймер 0 и Таймер 1 могут работать в четырех режимах работы:

·режим 0: 13-битный таймер

·режим 1: 16-битный таймер

·режим 2: 8-битный автоперезагружаемый таймер

·режим 3: Таймер 0 как 2 раздельных 8-битных таймера.

Кроме того, Таймер 1 можно использовать для задания скорости передачи (baud rate) последовательного порта.

Режим 0. В нулевом режиме таймер работает как 13-битный суммирующий счётчик. Этот счётчик состоит из 8 бит регистра ТНх и младших 5 бит регистра TLx, где x в обозначении регистра заменяется на 0 или 1 в зависимости от того таймера, которым мы управляем. Старшие 3 бита регистров TLx не определены и игнорируются. Установка запускающего таймер флага TR0 или TR1 не очищает эти регистры. Работе таймера 0 или таймера 1 в режиме 0 соответствует схема:


Рисунок 4. Схема таймеров 0 или 1 в режиме 0.


Этот режим был введён для совместимости с устаревшим семейством микроконтроллеров MCS-48 для облегчения переноса уже разработанных программ на новые процессоры и поэтому в настоящее время не используется. Тем не менее, в этом режиме можно обеспечить формирование интервала времени длительностью до 8096 мс при частоте задающего генератора 12 МГц.

Режим 1. В первом режиме работы таймер работает как шестнадцатиразрядный счётчик. Режим 1 похож на режим 0, за исключением того, что в регистрах таймера использует все 16 бит. В этом режиме регистры ТНх и TLx также включены друг за другом. Работе таймера 0 или таймера 1 в режиме 1 соответствует схема:



Режим 2. В режиме 2 регистр таймера TLx работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНх в регистр TLx. Переполнение регистра TLx не только устанавливает флаг TFx, но и загружает регистр TLx содержимым регистра ТНх, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНх. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема:

Режим 3. Таймер 1 при работе в режиме 3 просто хранит свое значение. Эффект такой же как при сбросе бита TR1. Таймер 0 в режиме 3 представляет собой два раздельных 8 битных счетчика (регистры TL0 и ТН0), Регистр TL0 использует биты управления таймера 0: С/Т0. GATE0, TR0 и TF0. Регистр ТН0 работает только в режиме таймера и использует биты TR1 и TF1 таймера 1. Таким образом, регистр ТН0 управляет прерыванием таймера 1. Логика работы таймера 0 в режиме 3 показана на схеме:



Работа таймера TL0 разрешается, если бит TR0 = 1, а таймера TH0 - если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен. Этот режим работы позволяет реализовать два независимых таймера, если таймер 1 используется для работы последовательного порта.

5. Выбор элементной базы


При разработке устройства были использованы следующие электронные компоненты:

üМикроконтроллер КМ1816ВЕ51. Удовлетворяет всем необходимым требованиям при проектировке устройства. Относительно недорогой.

üМикросхема К555ЛН1. Представляет собой 6 инверторов.

üМикросхема КР142ЕН5А. Используется для стабилизации напряжения.

Особенности

Выходной ток£ 2.0 А

Значение выходного напряжения5В

Встроенная защита от перегрева

Встроенный ограничитель тока К3

Коррекция зоны безопасной работы выходного транзистора

Разность напряжений входа выхода2,3 В

Максимальная мощность рассеивания (без теплоотвода) 2 Вт

üРеле. РЭС-9. РС4.529.029-07. Используется для коммутации.

üМикросхема КР1056УП1. Используется для преобразования входного пакета с ИК-приемника в TTL-уровень.

6. Алгоритм работы устройства


6.1 Алгоритм работы передатчика


После запуска программы, происходит процесс начальных установок. Затем происходит ожидание нажатия на одну из двух кнопок.

Если нажата кнопка "взять", то выполняется следующее:

Øчерез последовательный приемопередатчик передается байтовый пакет из последовательности 10010101. Эта последовательность является командой "взять объект под охрану"

Øкак только пакет отправлен - зажигается светодиод на 1 секунду. Светодиод является контролем.

Если нажата кнопка "снять", то выполняется:

Øчерез последовательный приемопередатчик передается байтовый пакет из последовательности 01110110. Эта последовательность является командой "снять объект с охраны"

Øкак только пакет отправлен - зажигается контрольный светодиод на 1 секунду.

Блок-схема работы передатчика изображена ниже.



6.2 Алгоритм работы приемника


После запуска программы, происходит процесс начальных установок. Затем:

. Проверяется переменная FLAG (флаг состояния объекта - находится под охраной или нет).

Если FLAG=1, тогда объект находится под охраной, и мы ждем команд от передатчика. Это определяется состоянием RI. Если команда не поступила, то мы опрашиваем охранные шлейфы, и если все в порядке - возвращаемся к проверке флага. Если шлейфы не в порядке, то выдаем тревогу и снова возвращаемся к проверке флага.

Если FLAG=0, тогда мы анализируем поступивший пакет:

. Если пакет равен последовательности 10010101, то мы проверяем шлейфы (закрыты двери или нет). Если шлейфы в порядке, то "берем" объект под охрану, присваиваем FLAG=1 и возвращаемся к п.1. Если шлейфы не в порядке, то зажигаем красный светодиод и возвращаемся в п.1.

. Если пакет равен последовательности 01110110, тогда мы "снимаем" объект с охраны, присваиваем FLAG=0 и идем в п.2.

Если пакет не равен последовательности 01110110, то выдаем тревогу и возвращаемся к п.1.

Блок-схема работы приемника изображена ниже.


7. Листинг программ


üЛистинг программы для передатчика.

sjmp start_vzyat bit P1.0_snyat bit P1.1bit P1.2:

; Делаем начальные установкиkey_vzyatkey_snyatkontrolPSW, #00001000b; Выбор банка регистров RB1

; Производим опрос клавишьkey_vzyat, vzyat_ohr; если нажата кнопка "взять", то берем под охрануkey_snyat, snyat_ohr; если нажата кнопка "снять", то снимаем с охраны

sjmp start_ohr: acall vzyatstart_ohr: acall snyat

sjmp start

; ***Подпрограмма задержки на 50 мс***_50ms: orl TMOD, #00000001b; Переводим тайер T0 в 1-ый режим работыTH0, #HIGH (not (50000-1)); заносим старшую часть от 50 мсTL0, #LOW (not (50000-1)); заносим младшую часть от 50 мсTR0; запускаем таймер: jnb TF0, wait1; Установился ли флаг прерыванияTR0; Остановка таймераTF0; сброс флага прерывания

; ***Подпрограмма зажигания контрольного светодиода на 1 с

; после отправки пакета с командой:

setb kontrolR0, #20_w: acall delay_50ms

djnz R0, sec_wkontrol

ret

; Подпрограмма отправки комады взять под охрану:SCON, #01100000b; настройка последовательного порта на 1-ый

; режим работыTMOD, #00001111b; настройка таймера 1 на 2-ый режим работы

orl TMOD, #00100000bTH0, #fdhTL0, #fdhTR1sbuf, #10010101b; отправка команды

jnb TI, $; ждем пока отправитсяTI; очистка флага TIsvetodiod; зажигаем контрольный светодиод

; Подпрограмма отправки комады снять с охраны

snyat:SCON, #01100000bTMOD, #00001111bTMOD, #00100000bTH0, #0fdhTL0, #0fdhTR1sbuf, #01110110b

jnb TI, $TIsvetodiod

ret

üЛистинг программы для приемника.

sjmp startBIT P2.0BIT P2.1BIT P2.2; Зеленый светодиод. горит, когда объект не под охраной,

; орана снятаBIT P2.3; Красный светодиод. Горит, когда шлейф оборван

; или не закрыты двери при взятии объект под охрануBIT P2.4; Желтый светодиод горит, когда объект под охраной

shleyf1 BIT P2.5BIT P2.6

flag SET 0; если flag=1, то объект под охраной

; если flag=0, то объект не под ораной:

; Делаем начальные установкиshleyf1; устанавливаем значение 1 на битах 5 и 6shleyf2; порта 2 для регистрации возможного обрываgreen; зажигаем зеленый светодиодredyellowPSW, #00001000b; Выбор банка регистров RB1_paket:

; проверяем установлина ли охрана, если да, то проверяем шлейфы на обрыв

; если нет, то проверка на пакетflag, #1, proverka1RI, proerka1; Если пакет пришел, то proverka1 - его анализ

mov R0, P2R0, #00100000bR1, P2R1, #01000000bR0, #00100000b, vzlom

cjne R1, #01000000b, vzlomread_paket

; анализ входящих пакетов:

; ***Настройка последовательного порта на 1-ый режим работы***SCON, #01110000b

; настройка таймера 1 на 2-ый режим работы

anl TMOD, #00001111bTMOD, #00100000bTH0, #0fdhTL0, #0fdh

setb TR1RI,$; ждем окончания приема пакетаA, SBUF; заносим его в аккуляторRIA, #10010101b, proverka2; если пакет = команда взят под охрану (10010101),

; тогда проверяем закрыты ли двери_or:

mov R0, P2R0, #00100000bR1, P2

anl R1, #01000000bR0, #00100000b, onred; если двери не закрыты, тогда зажигаем красныйR1, #01000000b, onred; светодиод и ждем новой команды

; Если двери закрыты, тогда берем под охрану

clr redyellowzamokflag, #1read_paket:

setb redproverka1

; Если пакет = команда снять с ораны, то снимаем орану

; если другая последовательность, то идет перебор => включаем сигнализацию: cjne A, #01110110, vzlomzamok; открываем замкиyellow; тушим желтый светодиодgreen; зажигаем зеленый

mov flag, #0proverka1: acall trevoga

sjmp read_paket

; ***Подпрограмма задержки на 50 мс***_50ms: orl TMOD, #00000001b; Переводим тайер T0 в 1-ый режим работыTH0, #HIGH (not (50000-1)); заносим старшую часть от 50 мсTL0, #LOW (not (50000-1)); заносим младшую часть от 50 мсTR0; запускаем таймер: jnb TF0, wait1; Установился ли флаг прерыванияTR0; Остановка таймераTF0; сброс флага прерывания

; ***Подпрограмма сигнализации. Выдает звук длительностью=20с

trevoga: setb alarmredR2, #400_w: acall delay_50msR2, sec_walarmred

8. Краткое руководство по эксплуатации


Комплекс представляет собой два устройства:

."Брелок" - пульт управления;

2.Приемник. Располагается в автомобиле. К нему подключаются все датчики и замки дверей.

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

Индикация:

На панели, в автомобиле, располагаются 3 светодиода:

üЗеленый. Сигнализирует о том, что автомобиль находится не под охраной.

üЖелтый. Свидетельствует о том, что объект находится под охраной.

üКрасный. Сигнализирует о взломе или попытке взять объект под охрану с незакрытыми дверьми.

К охранным шлейфам можно подключать различные извещатели. Описание некоторых приводится в приложении.

9. Заключение


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

Приложение


1.УСТРОЙСТВО ОКОНЕЧНОЕ СИСТЕМЫ ПЕРЕДАЧИ SMS СООБЩЕНИЙ ПО КАНАЛАМ СОТОВОЙ СВЯЗИ GSM (УО-4)

Предназначено для охраны нетелефонизированных объектов.

·Контроль 4 шлейфов сигнализации с включенными в них охранными, пожарными и охранно-пожарными извещателями

·Передача SMS извещений по 5 телефонным номерам

·Автоматизация взятия под охрану и снятия с охраны каждого ШС с помощью брелков Touch Memory

·Удаленное взятие под охрану и снятие с охраны с помощью передачи SMS сообщений

·Квитирование взятия под охрану с пункта централизованной охраны

·Возможность подключения сирены

·Возможность подключения внешнего считывателя и индикатора состояния УО-4С

·Периодическая передача тестового сообщения на один из телефонов

·Передача 13 видов SMS-сообщений, 5 видов команд в виде SMS-сообщений от удаленного абонента по сотовой сети

·Световая и звуковая индикация состояний ШС и режима работы УО

·Два выхода: на сирену и выход, настраиваемый при выборе конфигурации работы УО

·Программирование параметров УО через подключенный телефон

·4 группы конфигурируемых параметров УО

oсистемные параметры конфигурации (16 типов)

oпараметры ключей Touch Memory

oномера телефонов и их имена, по которым отправляются сообщения

oномер телефона SMS-центра

·Режим работы: дежурный, программирование, тревожный, режим управления доступом, передача сообщений


Содержание 1. Техническое задание 2. Введение 3. Выбор микроконтроллера 4. Краткое описание микроконтроллера КМ1816ВЕ51 4.1 Общее описание ми

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ