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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


Курсовик Функциональная спецификация и структурная схема электронных автомобильных часов-термометра-вольтметра. Разработка алгоритма работы и принципиальной электрической схемы. Получение прошивки программы для памяти микроконтроллера в результате ассеблирования.

Информация:

Тип работы: Курсовик. Предмет: Схемотехника. Добавлен: 26.12.2009. Сдан: 2009. Уникальность по antiplagiat.ru: --.

Описание (план):


51
КУРСОВОЙ ПРОЕКТ
Автомобильные часы-термометр-вольтметр на базе микроконтроллера

Содержание

Введение
1. Описание объекта и функциональная спецификация
2. Описание структуры системы
3. Описание ресурсов МК AT89C2051
4. Ассемблирование
5. Разработка алгоритма работы устройства
6. Описание выбора элементной базы и работы принципиальной схемы
Заключение
Список литературы
Приложение. Листинг программы и объектный файл
Введение

Современную микроэлектронику трудно представить без такой важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. Микроконтроллерные технологии очень эффективны. Одно и то же устройство, которое раньше собиралось на традиционных элементах, будучи собрано с применением микроконтроллеров, становится проще, не требует регулировки и меньше по размерам. С применением микроконтроллеров появляются практически безграничные возможности по добавлению новых потребительских функций и возможностей к уже существующим устройствам. Для этого достаточно просто изменить программу.
Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя следующие составные части: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой.
Мировая промышленность выпускает огромную номенклатуру микроконтроллеров. По области применения их можно разделить на два класса: специализированные, предназначенные для применения в какой-либо одной конкретной области (контроллер для телевизора, контроллер для модема, контроллер для компьютерной мышки ) и универсальные, которые не имеют конкретной специализации и могут применяться в самых различных областях микроэлектроники, с помощью которых можно создать как любое из перечисленных выше устройств, так и принципиально новое устройство.
Цель курсового проекта - разработка микропроцессорной системы автомобильные часы-термометр-вольтметр на базе микроконтроллера.
1. Описание объекта и функциональная спецификация
Данное устройство предназначено для использования в автомобиле.
Основой устройства является микроконтроллер AT89C2051 фирмы «Atmel». Для отображения информации используется жидкокристаллический индикатор типа ЖКИ13-8/7-02. Несмотря на то, что в настоящее время доступны ЖКИ с встроенными контроллерами, иногда оказывается целесообразным применение специального ЖКИ. Причин может быть несколько. Распространенные ЖКИ со встроенными контроллерами обладают целым рядом недостатков: отсутствие десятичных точек, плохой угол обзора, недостаточный в некоторых случаях размер символов. В то же время существует доступная и довольно удобная в использовании микросхема драйвера ЖКИ КР1820ВГ1. Она выпускается Минским ПО «Интеграл».
Рассмотренное в этой работе устройство устанавливается в автомобиле для индикации времени, контроля заряда аккумулятора и регистрации температуры. Диапазон контролируемого напряжения можно выбрать любой, однако в программе он установлен в пределах от 12,0 В до 15,0 В, а при отклонении от этих значений напряжения включается зуммер.
Функциональная спецификация
1. Входы
a. 4 датчика температуры
b. Кнопка запуска (включение питания)
c. Панель управления с сенсорным переключателем и ИФ приемником
2. Выходы
a. Жидкокристаллический индикатор
b. Звуковой динамик
3. Функции
a. индикация текущего времени
b. будильник
c. таймер
d. индикация температуры в четырех точках
e. звуковая сигнализация при повышении температуры
f. индикация напряжения в бортовой сети автомобиля
g. звуковая сигнализация при падении напряжения бортовой сети
h. управление режимами работы устройства с помощью ИК-пульта
2.Описание структуры системы

После определения входов и выходов устройства разработана структурная схема устройства. Структурная схема автомобильных вольтметра-термометра-часов приведена на рис. 1.
Громкоговоритель
Рис. 1. Структурная схема автомобильных часов-термометра-вольтметра
3. Описание ресурсов МК AT89C2051

AT89C2051 разработан по технологии КМОП. Микроконтроллер оснащенный Flash программируемым и стираемым ПЗУ, а также совместим по системе команд и по выводам со стандартными приборами семейства MCS-51. Объем Flash ПЗУ - 2 Кбайта, ОЗУ - 128 байтов. Имеет 15 линий ввода/вывода, один 16-разрядный таймера/счетчика событий, полнодуплексный порт (UART) пять векторных двухуровневых прерываний, встроенный прецизионный аналоговый компаратор, встроенные генератор и схему формирования тактовой последовательности. Напряжение программирования Flash памяти - 12 В и ее содержимие может быть защищено от несанкционированных записи/считывания. Имеется возможность очистки Flash памяти за одну операцию и возможность считывания встроенного кода идентификации. Ток потребления в активном режиме на частоте 12 МГц не превышает 15 мА при 6 В и 5,5 мА при напряжении питания 3 В. В пассивном режиме (ЦПУ остановленно, но система прерываний, ОЗУ, таймер/счетчик событий и последовательный порт остаются активными) потребление не превышает 5 мА и 1мА. В стоповом режиме ток потребления не превышает 100 мкА и 20 мкА при напряжении питания 6 В и 3 В, соответственно. Микроконтроллер AT89C2051 ориентирован на использование в качестве встроенного управляющего контороллера.
Для питания устройства используется интегральный стабилизатор U5 типа 7805. Потребляемый устройством ток очень небольшой, поэтому радиатор для этой микросхемы не нужен.
Поскольку микросхемы контроллера ЖКИ требуют небольшого количества сигналов для связи с микроконтроллером, индикатор можно выполнить конструктивно в отдельном корпусе минимального размера и расположить его в удобном для обозрения месте. Провода датчиков температуры могут иметь длину несколько метров. При этом обязательно должен присутствовать земляной провод. Использовать в качестве земли кузов автомобиля нежелательно. Удобно для термометров использовать аудио кабель, который имеет два провода в общем экране, изолированном снаружи.

AT89C2051 - 8-разрядный микроконтроллер с Flash ПЗУ

Рис.2. Структурная схема AT89C2051
Микроконтроллер AT89C51 построен по процессорной архитектуре MCS-51, т.е. он умеет выполнять ассемблерные команды описанные этим стандартом. Стандарт был разработан фирмой INTEL и в дальнейшем стал основой для создания современных INTEL процессоров, но проблема создания маленьких устройств (микроконтроллерных систем) осталась актуальной и по сей день. В результате первые миниатюрные процессоры эксплуатируется до сих пор (например в телефонах АОН).
Цифры 31 или 51 в названии процессора (контроллера) указывают на принадлежность к системе команд MCS-51 (31 в отличии от 51, не имеет возможности использовать порт P0 и P2 как порты - на 31 кристалле это только адресные линии и линии данных внешних устройств [ПЗУ,ОЗУ,Регистров...] = 51 же кристалл имеет возможность незадействованные выводы адресов использовать как выводы портов ввода - вывода). Цифра 80 в начале указывает на то, что исполняемая программа может быть размещена только во внешней ПЗУ. Цифра 83,87 или 89 указывает, что программа может быть как во внешней ПЗУ, так и в ПЗУ кристалла (это более поздние модели 1990-е годы, уже научились ПЗУ делать на одной подложке вместе с самим процессором), 83 - масочная ПЗУ (программируется на заводе изготовителе - например контроллер клавиатуры AT-XT), 87 - однократно программируемая ПЗУ на кристалле процессора в корпусе из пластика или многократно (до 100 раз ) перепрограммируемая ПЗУ на кристалле в керамическом корпусе и окошком для УФ стирания. 89 - многократно (до 10000 раз ) перепрограммируемая ПЗУ на кристалле, электрически стираемая. AT- название фирмы изготовителя ATMEL atmel.com/ или atmel.ru/ (русскоязычный сайт ATMEL). Кроме того это может быть DS - Dallas, N- Intel, P-Philips... Так что данная микросхема - это микропроцессор (правильнее сказать микроконтроллер) со встроенной ПЗУ, которую (ПЗУ внутри процессора) и надо запрограммировать, чтобы микросхема начала выполнять требуемые функции. Данный микроконтроллер программируется стандартным программатором, поддерживающим программирование этого типа микроконтроллеров (например программатор UNIPRO).
Рис.3. Общий вид выводов AT89C2051
4. Ассемблирование

Для ассемблирования используется макpоассемблеp MPASM, он содеpжит все необходимые нам возможности. MPASM входит в пакет программ Microchip MPLAB фирмы Microchip Technology.
В pезультате pаботы ассемблеpа создаются файлы со следующими pасшиpениями: * HEX - объектный файл * LST - файл листинга * ERR - файл ошибок и пpедупpеждений * COD Объектный файл создается в 16-pичном фоpмате и содеpжит код, котоpый должен быть записан в микpосхему. Файл листинга содеpжит полный листинг пpогpаммы вместе с загpузочным кодом. В файл ошибок и пpедупpеждений записываются все ошибки и пpедупpеждения, возникающие в пpоцессе ассемблиpования. Они также пpисутствуют и в файле листинга. После обpаботки нашей пpогpаммы ассемблеp должен был выдать сообщение "Assembly Successful", означающее, что ошибок обнаpужено не было. Файл ошибок не должен был создаться.
Листинг программы и объектный файл приведен в Приложении.
5. Разработка алгоритма работы устройства

Алгоритм работы программы показан на рис. 4. После запуска и инициализации микроконтроллера программа переходит к распределителю, в котором каждую секунду последовательно измеряется напряжение, проверяются кнопки, и выполняется вывод на индикацию. Прерывание от этой последовательности происходит каждую секунду для подсчета времени в часах и таймере, если он включен.
После установки флага "Одна секунда" проверяется бортовое напряжение. Если присутствует его отклонение от установленного, то включается звуковой сигнал. Если отклонения нет, то измеренные значения перекодируются для индикации в двоично-десятичный код.
Далее программа переходит к проверке кнопок. Поскольку кнопки -- многофункциональные, то и их проверка несколько усложнена. Вначале проверяется флаг индикации часов. Если индикация часов отсутствует, то кнопка установки курсора "Разряд" не проверяется, а сразу проверяется кнопка "Режим". Если индикация часов включена и нажата кнопка "Разряд", то к регистру курсора прибавляется единица.
Если кнопка "Режим" нажата, то на единицу увеличивается регистр режима. По значению регистра режима из таблицы выбирается режим индикации (рис. 5).
При индикации напряжения ранее перекодируемые значения напряжения переписываются в регистры индикации.
При индикации часов проверяется, был ли ранее введен курсор в поле индикатора. Если значение регистра курсора -- ненулевое, то выполняется установка часов. Если при этом нажата кнопка "Установка", то к выбранному разряду прибавляется единица, а регистры индикации заполняются новыми значениями. Если установка отсутствует, то регистры индикации заполняются значениями текущего времени.
Рис. 4. Алгоритм работы автомобильных часов (начало)

Рис. 5. Алгоритм работы автомобильных часов (продолжение)

Однако заполненные регистры индикации еще не готовы к выводу на индикацию -- в них необходимо записать значение курсора. Если значение курсора -- ненулевое (т.е. он находится в поле индикатора), то он вводится в младший разряд регистра индикации соответствующего знакоместа.
Если курсор в поле индикатора отсутствует, то обнуляется счетчик цикла записи, и первым импульсом выводится значение запятой для N-го разряда. В принципе, запятая в данном устройстве необходима только одна: для выделения десятых долей напряжения, -- однако подпрограмма вывода на индикацию универсальна, и потому нет смысла ее изменять. Значения запятых заранее записываются в позиционном коде в регистр запятой (т.е. если необходимо высветить запятую в пятом разряде индикатора, то записывают единицу в пятый разряд регистра). При этом необходимо помнить, что первыми в импульсной последовательности идут значения крайнего справа разряда.
После вывода запятой последовательно выводится значение N-ro регистра, начиная с младшего разряда. Затем прибавляется единица к счетчику циклов и, если его значение не равно девяти, цикл вывода данных на индикатор повторяется со следующим регистром. После вывода значения последнего регистра программа возвращается к ожиданию установки флага "Одна секунда" во время прерывания.
Прерывание организовано обычным образом: по переполнению таймера TMR0. При частоте кварцевого резонатора 32 768 Гц коэффициент деления предделителя составляет 32, что вместе с коэффициентом деления таймера, равным 256, и циклом, равным 4, дает одну секунду (4x32x256 = 32 768).
6. Описание выбора элементной базы и работы принципиальной схемы

Микросхема КР1820ВГ1 [1] используется для управления 36-сегментным ЖКИ в режиме 3-уровневого мультиплексирования. Микросхема изготавливается по КМОП-технологии и выпускается в 20-выводном пластмассовом DIP-корпусе. Микросхема содержит встроенный тактовый генератор, резистивный делитель напряжения и делители частоты, с помощью которых формируются сигналы управления строками (общими электродами) и столбцами (сегментными электродами) ЖКИ в режиме 3-уровневого мультиплексирования. Одна микросхема имеет три выхода управления строками и 12 выходов управления столбцами. Предусмотрена возможность каскадирования схем, что позволяет использавать их для управления мультиплексным ЖКИ с числом сегментов более 36. Микросхема не требует никаких навесных компонентов и работает в диапазоне напряжения питания от 3 до 6 вольт. Назначение выводов микросхемы КР1820ВГ1 показано в таблице 1.
Таблица 1. Назначение выводов микросхемы КР1820ВГ1.
Вывод
Обозначение
Тип
Назначение
1...3
COB1, COC3, COB3
Выход
Управление столбцами В1, С3, В3
4
CS
Вход
Выбор кристалла
5
Ucc
-
Напряжение источника питания
6
GND
-
Общий
7
D
Вход
Данные
8...13
COA2, COB4, COB2, COA1, COC2, COC4
Выход
Управление столбцами A2, B4, B2, A1, C2, C4
14
C
Вход
Тактовый сигнал С
15
COA/G
Выход
Управление сторокой А (вход генератора G)
16
COC/G
Выход
Управление сторокой С (выход генератора G)
17
COB
Выход
Управление строкой В
18...20
COC1, COA3, COA4
Выход
Управление столбцами B1, A3, A4
Микросхема КР1820ВГ1 имеет четыре режима работы: одиночный, старший, младший и тестовый. В одиночном режиме одна микросхема управляет 36-сегментным ЖКИ, обеспечивая полную синхронизацию его работы. Старший и младний режимы предназначены для организации управления ЖКИ с числом сегментов более 36, тестовый режим - для контроля качества микросхем в процессе изготовления. Данные вводятся в микросхему в последовательном коде по входу D с синхронизацией записи фронтом тактовых импульсов по входу C (рис. 6).
Рис. 6. Загрузка микросхемы КР1820ВГ1 по последовательной шине

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

На рис. 7 показан пример конфигурации ЖКИ, а в таблице 2 показан порядок следования битов в кодовой посылке для этого варианта подключения такого ЖКИ.
Таблица 2. Порядок следования битов в кодовой посылке
Бит
Вывод
Сегмент ЖКИ
Бит
Вывод
Сегмент ЖКИ
D0
COA1, COC/G
H1
D20
COB3, COC/G
D3
D1
COB1, COB
G1
D21
COA3,COB
C3
D2
COC1,COA/G
F1
D22
COA3, COA/G
B3
D3
COC1, COB
E1
D23
COB3, COA/G
A3
D4
COB1, COC/G
D1
D24
COA4, COC/G
H4
D5
COA1,COB
C1
D25
COB4, COB
G4
D6
COA1, COA/G
B1
D26
COC4,COA/G
F4
D7
COB1, COA/G
A1
D27
COC4, COB
E4
D8
COA2, COC/G
H2
D28
COB4, COC/G
D4
D9
COB2, COB
G2
D29
COA4,COB
C4
D10
COC2,COA/G
F2
D30
COA4, COA/G
B4
D11
COC2, COB
E2
D31
COB4, COA/G
A4
D12
COB2, COC/G
D2
D32
COC1, COC/G
P1
D13
COA2,COB
C2
D33
COC2, COC/G
P2
D14
COA2, COA/G
B2
D34
COC3, COC/G
P3
D15
COB2, COA/G
A2
D35
COC4, COC/G
P4
D16
COA3, COC/G
H3
D36
Не используется
-
D17
COB3, COB
G3
D37
Q6
-
D18
COC3,COA/G
F3
D38
Q7
-
D19
COC3, COB
E3
D39
Q8
-
Биты D0..D7 соответствуют сегментам первого разряда, биты D8..D15 - второго и т. д. Биты D32..D35 соответствуют специальным сегментам P1...P4. Бит D36 может принимать любое значение. Биты D37 и D38 (Q6 и Q7) управляют режимом работы схемы согласно таблице 3. Бит D39 (Q8) предназначен для синхронизации работы двух и более микросхем при каскадировании.
Для загрузки микросхемы в одиночном режиме необходимо выполнить следующую последовательность действий:
· установить на сходе CS уровень логического 0
· записать восемь битов данных для каждой цифры первого-четвертого разрядов
· записать четыре бита для специальных сегментов и четыре бита управления: 0|0|1|1|P4|P3|P2|P1
· установить на входе CS уровень логической 1
Таблица 3. Назначение битов управления микросхемой
Бит
Режим работы
Выход
D36 (Q7)
D37 (Q6)
COC/G
COA/G
1
1
Младший
Выход управления строкой С
Вход генератора
0
1
Одиночный
То же
Выход управления строкой А
1
0
Тестовый
-
-
0
0
Старший
Выход внутреннего генератора
Выход управления строкой А
После установки микросхемы в нужный режим для последующей смены данных необязательно записывать все 40 бит информации. Для загрузки микросхемы в старшем и младшем режимах необходимо выполнить следующую последовательность действий:
· установить на входе CS обеих схем уровень логического 0
· записать 32 бита данных для «младшей» схемы
· записать четыре бита для специальных сегментов младшей схемы и четыре бита управления: 1|1|1|1|P4|P3|P2|P1 (при подаче последней единицы обе микросхемы устанавливаются в младший режим, выводы COA/G обеих схем работают как входы генератора. Происходит синхронизация работы микросхем)
· установить на входах CS обеих схем уровень логической 1
· установить на входе CS «старшей» схемы уровень логического 0
· записать 32 бита данных для старшей схемы
· записать четыре бита для специальных сегментов старшей схемы и четыре бита управления: 0|0|0|0||P4|P3|P2|P1 (после этого вывод COA/G старшей схемы начитает работать как выход управления строкой А, а вывод COC/G - как выход встроенного генератора. Импульсы с выхода генератора старшей схемы поступают на вход генератора COA/G младшей схемы, и оба кристалла начинают работать синхронно от генератора старшей схемы)
· установить на сходе CS установить уровень логической 1
Чтобы записать во внутренние регистры-защелки новые данные, нет необходимости сбрасывать обе схемы: достаточно записать данные по очереди во внутренние регистры-защелки каждой схемы. При этом в последний бит D39 должен записываться ноль как для старшей, так и для младшей схем.
Нужно сказать, что некоторые типы ЖК индикаторов неудовлетворительно работают при питании микросхем драйверов напряжением 5В. Однако картина резко улучшается при снижении напряжения питания до 3.3 - 4.0В. Это сделать совсем несложно, так как потребляемый драйверами ток очень мал. В цепь питания можно включить параметрический стабилизатор напряжения на основе TL431 или даже простой резистивный делитель. На всех цифровых входах драйверов также понадобятся делители напряжения.
В качестве часов реального времени применена микросхема DS1302 фирмы Dallas. Эта микросхема имеет раздельные входы для подключения основного и резервного источников питания, что избавляет от проектирования довольно хитрых схем перехода на резервный источник. Кроме того, имеется встроенная схема «капельной» зарядки резервного источника питания, которая может быть включена программно. Дополнительно микросхема имеет ОЗУ объемом 31 байт, которое может быть использовано для энергонезависимого хранения параметров. Из навесных элементов требуется только кварцевый резонатор. Здесь хочется предостеречь от применения дешевых некачественных резонаторов. Согласно рекомендациям фирмы Dallas, требуется резонатор, рассчитанный на емкость нагрузки 6 пФ. В противном случае точность хода часов будет неудовлетворительной или даже появятся проблемы с запуском кварцевого генератора.
Для обмена с микросхемой DS1302 используются общие с драйверами ЖКИ линии данных и тактирования. Разделены только сигналы CS и RST. К сожалению, микросхема DS1302 имеет довольно специфический 3-х проводный интерфейс, который в фирменной документации описан весьма неоднозначно. Это довольно редкий пример плохого фирменного описания. Поэтому в новых разработках лучше применять более современные микросхемы, например DS1307 с интерфейсом I2C.
В качестве датчиков температуры применены микросхемы цифровых термометров DS1821 фирмы Dallas. В цепях данных термометров включены защитные цепочки R11-R14, VD1-VD8, а в цепи питания включен ограничивающий резистор R10 для защиты от короткого замыкания. Несмотря на то, что аппаратно имеется возможность подключить четыре термометра, данная версия программы работает только с тремя. Это вызвано недостаточным объемом памяти программ. Термометры устанавливаются в разных местах автомобиля. В данном случае они были установлены в салоне, на открытом воздухе и в моторном отсеке. Благодаря наличию заданных программно порогов, кроме индикации температуры осуществляется ещё и контроль ее выхода за безопасные пределы. Ввиду недостаточного объема памяти программ, редактирование порогов температур не поддерживается. Пороги в виде констант внесены в текст программы. Для первого термометра +55 градусов, а для второго и третьего термометра +99 градусов.
Для измерения напряжения бортовой сети построен простейший 8-разрядный АЦП на основе встроенного в микроконтроллер компаратора. Для уменьшения влияния помех используется 16-кратное усреднение результатов. Принцип работы АЦП пояснен на рис. 8.
Рисунок 8. Принцип работы АЦП

На входе AIN1 формируется пилообразное напряжение, которое сравнивается с входным напряжением, которое через делитель R2, R3 поступает на вход компаратора AIN0. Емкость C8 снижает влияние помех на показания вольтметра. Пилообразное напряжение формируется на емкости C9 в результате заряда ее стабильным током от генератора тока, собранного на элементах VT2, VD9, R6. Перед началом измерения конденсатор C9 разряжен с помощью открытого ключа VT3. Когда начинается цикл измерения, на порту P1.5 устанавливается низкий логический уровень, транзистор VT3 закрывается, и напряжение на конденсаторе C9 начинает линейно нарастать. В это время разрешается счет программному счетчику. Счет идет до тех пор, пока напряжение на C9 не станет равным входному (на средней точке делителя R2, R3). При этом переключается встроенный компаратор, и счет запрещается. Значение, накопленное в счетчике, будет пропорционально входному напряжению. Применение генератора тока (а не резистора) позволило получить линейный закон заряда C9, что исключило необходимость программной линеаризации АЦП, которая потребовала бы дополнительных затрат и так дефицитной памяти программ. Необходимо отметить, что конденсатор C9 должен быть термостабильным, например, с пленочным диэлектриком типа К73-17. С помощью резистора R6 подбирают ток генератора таким образом, чтобы показания АЦП совпадали с реальным значением напряжения на входе +B. Кроме индикации напряжения осуществляется контроль его падения ниже порога 10В. В случае такого падения включается звуковая сигнализация.
Для управления устройством применяется ИК-пульт дистанционого управления. Конструктивно он и т.д.................


Перейти к полному тексту работы



Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.