Принципы построения многоуровневых сетей - Программирование, компьютеры и кибернетика курсовая работа

Принципы построения многоуровневых сетей - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Принципы построения многоуровневых сетей

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


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


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

Техническое задание (ТЗ) на проектирование должно содержать исчерпывающую и однозначную информацию о требованиях, предъявляемых к проекту. Техническое задание является результатом внешнего проектирования и являет собой объемный документ, в котором на естественном языке описана словесная модель проектируемой системы и требования к ней. Несмотря на строгость и точность формулировок ТЗ не дает однозначного описания объекта проектирования и не позволяет непосредственно переходить от описания функционирования системы к ее техническому воплощению.
Требуется написать программу для построения многоуровневой модели сети на платформе лабораторного макета с микроконтроллером (МК) Аtmega128. Обязательными объектами такой сети являются: компьютер, сеть, сервер, коммутатор и здание. Основные функции - построение модели многоуровневых связных сетей и подсетей с помощью Atmega128.
Входные и выходные параметры определяются из задания. Входными сигналами можно считать воздействие пользователя на кнопочную матрицу, все воздействия делятся на три режима: режим меню, режим навигации и режим линии. В режиме меню идет выбор активного элемента, в режиме навигации - перемещение этого элемента по холсту или переход по уровням вложенности, в режиме линии - соединение элементов между собой.
Общий алгоритм решения задачи, описанной в техническом задании, приведен на рисунке 2.1:
Рисунок 2.1 - Общий алгоритм решения задачи
Требуемое устройство должно содержать следующие блоки:
ѕ ЖК-дисплей с разрешением не меньше 128х64 пикселя;
ѕ Кнопки - 12 штук, организованные в матрицу 3x4;
Рисунок 3.1 - Блок схема лабораторного макета
Сплошным контуром выделена часть устройства, которая используется программой, а именно:
ѕ Блок кнопок (БК) - состоит из 12 кнопок организованных в матрицу 3х4 для подключения которой требуется 3+4 (7) ЛВВ;
ѕ Блок ЖК дисплея (БЖКД) - содержит дисплей управляемый через шину I2C и подключаемый через две ЛВВ;
ѕ Блок памяти (БПам) - содержит микросхему EEPROM памяти подключенную с помощью шины I2C. Особенностью шины является возможность одновременного подключения нескольких устройств к одной и той же шине;
ѕ Блок программатора (БПрог) - содержит в себе JTAG-совместимый программатор и подключается к МК через JTAG интерфейс предусмотренный в МК;
ѕ USB-RS232 преобразователь это специальная микросхема которая служит мостом между шинами USB и RS232.
ЖК-дисплей (COG ЖК индикатор TIC149 фирмы Ampire) - имеет разрешение 133х64 и содержит кроме ЖК матрицы драйвер PCF8535 (управляемый по I2C шине) фирмы Philips Semiconductors.
В качестве кнопок используются тактовые кнопки с размером 6х6х8мм.
JTAG-совместимый программатор - использует МК фирмы Atmel ATmega16, в который заранее записана прошивка, позволяющая программировать основной микроконтроллер.
5.1 Интегрированная среда разработки
После длительного анализа различных сред и анализа требования проекта была выбрана интегрированная среда разработки IAR Embedded Workbench (рисунок 5.1), которая представляет собой очень мощный и удобный инструмент программирования микроконтроллеров фирмы Atmel семейства AVR, включая Mega. Это отладочная среда, которая работает под управлением Windows 95, 98, NT. В нее входят компилятор с языка Си, ассемблер, компоновщик, и отладчик, при этом возможно взаимодействие с внешними программами типа AVR Studio. Встроенный редактор специально настроен на синтаксис языка Си, а дополнительные утилиты и хорошая встроенная система помощи дополнительно облегчают написание программ.
Рисунок 5.1 - Внешний вид IAR Embedded Workbench
Одним из главных достоинств среды разрыбоки IAR Embedded Workbench является один из лучших компиляторов Си по эффективности кода и множество алгоритмов оптимизации предназначенных специально для AVR-микроконтроллеров (что является очень важным параметром при работе с малым объемом ресурсов памяти). Также к плюсам данной интегрированной среды разработки можно отнести широкие возможности для симуляции и отладки проекта:
ѕ Язык описания периферии и операций ввода/вывода;
ѕ Просмотр областей CODE, DATA, EEPROM и регистров ввода/вывода;
ѕ Обработка прерываний с предсказанием;
ѕ Контроль любых переменных и стека;
Для соединения программной части с технической и реализации максимальной производительности необходимо правильно настроить проект.
Выбираем тип микроконтроллера (рисунок 5.2).
Рисунок 5.2 - Выбор микроконтроллера
Выделяем необходимый объем памяти стека - для хранения до десяти холстов (таблиц размещения элементов). Необходимы нестойки наведены на рисунке 5.3:
Рисунок 5.3 - Определения объема стека
В связи с малым количеством памяти - в настройках компилятора выбираем максимальный уровень оптимизации, что наглядно показано на рисунке 5.4:
Рисунок 5.4 - Выбор максимальной оптимизации компилятора
Выбираем программатор JTAGICE для возможности программирования флэш-памяти (рисунок 5.5).
В настройках программатора JTAGICE выбираем порт, через который будет осуществляться соединение с компьютером (рисунок 5.6).
Рисунок 5.6 - Выбор порта компьютера для соединения с программатором
Меню - представляет собой объект класса Menu, который отвечает за предоставления выбора активного элемента. Вызов меню осуществляется в любой момент нажатием на кнопку 10, при этом выводится приглашение выбрать активный элемент. Доступными элементами меню являются: компьютер(computer), сеть(net), здание(building), сервер(server), линия (line), коммутатор(switch), курсор (pointer).
Все операции в программе делятся на три типа: opt_menu, opt_navigation и opt_line; которые хранятся в файле operationType.h. Первый из них переключает раскладку клавиш в режим «Меню» - каждая клавиша выступает номером элемента меню. По нажатию на определенную клавишу создается выбранный элемент и раскладка клавиш переход в режим «Навигация» (второй тип операций). В этом режиме клавиши служат курсором, который помогает перемещать объект в заданное место. Третий тип операций предназначен для рисования соединительной линии.
Для обработки нажатий клавиш создан метод Timer3_overflow являющийся обработчиком по прерыванию. При каждом входе в функцию идет проверка каждой стоки и каждого символа на нажатие. В соответствии от выбранного режима клавиатуры осуществляется его обработка.
Программа написана на языке Си с использованием таких известных технологий как объектно-ориентированное программирование (ООП) и паттерны проектирования. Часть программы написана с помощью классов, а часть с помощью процедур. Все классы можно условно поделить на три категории: классы для отображения сетевых объектов, классы для управления системой и классы для взаимодействия с выбранным устройством.
5.4.1 Классы взаимодействия с выбранным устройством
Рассмотрим классы взаимодействия с выбранным устройством на примере класса TIC_149 (рисунок 5.7), который предоставляет основные функции для работы с ЖК-дисплеем:
ѕ Вывод символов на ЖК-дисплей (Print) - параметром передаем указатель на выводимою строку;
ѕ Установка активного курсора (SetStartPoint) - устанавливает начальную точку для прорисовки, параметром является шестнадцатеричный символ отвечающий за ось абсцисс или за ось ординат;
ѕ Установка активного холста (SetHolst) - установка таблицы отвечающей за расположение элементов на определенном уровне. Параметром передается объект класса Holst. Концепция холста и управления уровнями вложенности будет рассмотрена ниже;
ѕ Получение активного холста (GetHolst) - данная функция возвращает указатель на текущий активный холст;
ѕ Изменение расположения активного курсора на одну клетку вверх (goUp);
ѕ Изменение расположения активного курсора на одну клетку вправо (goRight);
ѕ Изменение расположения активного курсора на одну клетку вниз (goDown);
ѕ Изменение расположения активного курсора на одну клетку влево (goLeft).
Рисунок 5.7 - UML диаграмма класса TIC_149
Данный класс построен с использованием паттерна одиночка «Singleton» - который обеспечивает единственность объекта класса в которым он используется. Для реализации данного паттерна в защищенной части класса был создан статический объект с типом этого же класса и определен конструктор, а в открытую часть был добавлен статический метод GetDisplay, который по запросу всегда возвращает указатель на единственный объект этого класса.
TIC_149* display = TIC_149::GetDisplay();
Рассмотрим более подробно некоторые из методов класса TIC_149:
Инициализация (Init) - с помощью функций TWI (функции работы с шиной I2C) осуществляется задание основных настроек ЖК-дисплея - установка режима отображения, включение/выключение зеркал, установка умножителя частоты, яркости, температуры, начальных точек по оси абсцисс и оси ординат.
Очистка экрана (Clear) - с помощью функций TWI сначала задается первая точка заполнения и в цикле 1064 раза подается сигнал 0x00.
Вывод символов на ЖК-дисплей (Print) - данный метод после задания первой точки заполнения в цикле выводит каждый символ. Для этого в массиве font (массив с шестнадцатеричным указанием каждого из байтов определенного символа) указывается смещение относительно первого символа.
twi_write(font[(*(string+i))*6 + j]);
Функция прорисовки (Draw) - вызывает два метода класса Holst - для установки координат активного элемента или курсора и для подачи сигнала на прорисовку холста.
Функции управления движением активного курсора (goUp, goRight, goDown, goLeft). Весь экран разделен на клетки - 8 по высоте и 10 по ширине.
Разделение экрана на клетки с шестнадцатеричным обозначением каждого из адресов изображено на рисунке 5.8:
Рисунок 5.8 - Адресация в ЖК-дисплее
К классу управления системой нужно отнести класс Holst - предназначенный для хранения и управления всеми элементами сети и подсети. Общая структура класса изображена на рисунке 5.9:
Рисунок 5.9 - UML диаграмма классов управления содержимым ЖК-дисплея
Рассмотрение структуры классов управления содержимым ЖК-дисплея начнем с рассмотрения класса HolstTable - предназначенного для хранения и обработки таблицы типов элементов расположенных на определенном уровне. Он хранит матрицу 10х8 каждый элемент который определен типом char и занимает ровно 1 байт в памяти - это было сделано для экономии памяти устройства. Также он поддерживает следующие методы:
ѕ GetElement - получение типа сетевого объекта по его координатам заданных в десятеричной системе;
ѕ SetElement - размещение элемента на таблице. Параметрами метода выступают координаты размещаемого объекта и его тип;
ѕ GetCurrentID - получение текущего идентификатора таблицы (необходимо для реализации вложенности);
ѕ SetCurrentID - задание текущего идентификатора таблицы (вызывается холстом при создании новой подсети)
Класс Holst содержит множество методов для управления содержимым ЖК-дисплея большинство из которых взаимодействуют с объектами класса HolstTable. Рассмотрим каждый из методов класса Holst подробно:
ѕ SetActiveElement - установка активного элемента, т.е. элемента который в текущий момент можно перемещать или размещать на матрице. Параметром передается указатель на Element, что означает, что мы можем передавать в данный метод любой из сетевых объектов;
ѕ SetActiveElementCoord - установка текущих координат активного элемента;
ѕ GetActiveElementX - метод возвращает значение координаты текущего элемента по оси абсцисс;
ѕ GetActiveElementY - метод возвращает значение координаты текущего элемента по оси ординат;
ѕ GetHolstElement - метод возвращает тип элемента расположенного по заданным координатам. При этом используется вызов метода поиска сетевого элемента по координатам у объекта класса HolstTable;
ѕ GetTypeOfActiveElement - получения типа активного элемента;
ѕ AddActiveElementOnHolst - метод добавляет активный элемент по текущим координатам на холст, использую вызов метода записи в объекта класса HolstTable;
ѕ SetCurrentID - установка идентификатора текущей таблицы;
ѕ GetCurrentID - получение идентификатора текущей таблицы;
ѕ SetBuilding - установка бинарного параметра указывающего на уровень сети (верхний уровень или подуровень);
ѕ FindBuilding - определение номера здания по его текущим координатам, параметром кроме координат объекта, также передается номер уровня;
ѕ FindParent - определение идентификатора родительского уровня. Параметром передается идентификатор текущего уровня;
ѕ GetHolst - получение таблицы сетевых элементов. Метод возвращает обьект типа HolstTable. Используется для сохранения текущего холста при переходе на новый уровень;
ѕ SetHolst - установка таблицы сетевых элементов. Используется для перехода по уровням сети;
ѕ Draw - перерисовка холста. При проходе в цикле таблицы холста проверяется наличие элемента в ячейке, если объект обнаружен - вызывается виртуальный метод GetType - который возвращает тип найденного объекта. Далее создаем объект заданного типа и вызываем у него метод Draw, после чего удаляем созданный объект. Данная технология позволила сэкономить огромное количество памяти, что является жизненно необходимым требованием для бесперебойной и правильной работы программы. Также эта технология дала возможность сделать вложенность сетей до девятого уровня.
5.4.3 Классы отображения сетевых объектов
Родительским классом для всех сетевых объектов является класс Element, который содержит в себе две виртуальные функции - функцию прорисовки элемента и функцию получения типа производного класса. Все классы сетевых объектов переопределяют эти два метода, что наглядно продемонстрировано на рисунке 5.10:
Рисунок 5.10 - UML диаграмма связей сетевых объектов
Функция для получения типа (GetType) - возвращает один шестнадцатеричный символ, который соответствует текущему типу обьекта. Все типы хранятся в файле elementType.h в форме препроцессорных директив define. Типы сетевых элементов с их описанием наведены в таблице 5.1:
Таблица 5.1 - Типы сетевых элементов
Указатель для определения начальной точки соединительной линии
Указатель на определение последней точки соединительной линии
Соединительный элемент для трех линий - сверху, снизу и слева
Соединительный элемент для трех линий - снизу, слева и справа
Соединительный элемент для трех линий - сверху, снизу и справа
Соединительный элемент для трех линий - сверху, слева и справа
Класс Line кроме всего прочего имеет метод SetLineType который задает линии определенное значение - символы с одиннадцатого по двадцать третий из таблицы 5.1. Все типы линии с их шестнадцатеричной матрицей наведены в таблице 5.2:
Таблица 5.2 - Типы соединительной линии
0x00, 0x00, 0x18, 0x66, 0x42, 0x81, 0x81, 0x42, 0x66, 0x18, 0x00, 0x00
0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x08, 0x08, 0x08, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x08, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x08, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x08, 0x08, 0x08, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
Для организации системы вложенности в файле взаимодействия с клавиатурой keyboard.c производится выделение памяти необходимое для десяти уровней вложенности. При размещении на холсте объекта «здание» осуществляется присвоение ему уникального номера подсети. Количество объектов «здание» ограничено десятью элементами, т.к. каждый такой уровень требует большое количество памяти для хранения объектов подсети. Для перехода на подуровень необходимо в режиме «курсор» навести указатель на объект «здание» и нажать на кнопку 5.
Если мы находимся на подуровне - то в левом верхнем углу автоматично создается объект класса out. Он соединяет подуровни и предназначен для перехода на один уровень вверх - по щелчку на нем.
Алгоритм перехода по подуровням изображен на рисунке 5.11:
Рисунок 5.11 - Алгоритм перехода по подуровням
1. Подключить устройство к компьютеру с помощью USB кабеля
2. Выбрать номер нужного объекта с меню и нажать его на клавиатуре.
Размещение клавиш на клавиатуре представлено на рисунке 5.12:
Рисунок 5.12 - Раскладка клавиатуры в режиме «Меню»
3 На экране появится выбранный элемент. Теперь нужно переместить выбранный объект в определенное место на дисплее, для этого пользуемся раскладкой клавиатуры в режиме «Навигация», изображенной на рисунке 5.13:
Рисунок 5.13 - Раскладка клавиатуры в режиме «Навигация»
3. Нажимаем клавишу Enter для размещения объекта на холсте.
4. Для перехода в подсеть необходимо в меню выбрать курсор, навести его на объект «здание» и нажать Enter.
5. Для выхода из подсети необходимо в меню выбрать курсов, навести его на объект «выход» и нажать Enter.
Результатом выполнения комплексного курсового проекта является специализированная программа (прошивка) для лабораторного макета на микроконтроллере Atmega128, которая выполняет все поставленные перед ей требования из технического задания. Разработка прошивки выполнена в среде IAR Embedded Workbench.
Для достижения поставленной цели в проекте были выполнены следующие задачи:
— изучение среды IAR Embedded Workbench;
— изучение принципов построения многоуровневых сетей;
— изучение документации на микросхемы;
— написание прошивки для микропроцессоров Atmel AVR;
— изучение принципов программирования под МК;
— отладка и тестирование прошивки с помощью интерфейса JTAGICE.
Принципы построения и функционирования дешифратора. Синтезирование схемы дешифратора 3-разрядного числа, ее тестирование с помощью программы Multisim 8. Исследование работы микросхемы К155ИД4 и ее зарубежного аналога SN74155 в различных режимах. лабораторная работа [302,0 K], добавлен 27.11.2013
Обзор существующих аналогов программных средств, предназначенных для построения генеалогических деревьев, их достоинства и недостатки. Выбор программных средств, разработка и реализация архитектуры системы хранения данных, отладка и тестирование сервиса. дипломная работа [177,1 K], добавлен 24.06.2012
Изучение составляющих этапов разработки программ, процесса их тестирования, отладки и документирования в контексте курса обучения начинающих программистов. Теоретический анализ постановки задачи и модели программы, создания текста, семантической отладки. курсовая работа [29,2 K], добавлен 28.11.2010
Разработка и написание программы по моделированию движения снаряда при заданных параметрах пути, максимальной высоты, времени полета и траектории. Анализ методов построения модели, разработка алгоритма, написание и отладка программы в среде Delphi. курсовая работа [214,5 K], добавлен 11.02.2011
Особенности представления алгебраических операций над регулярными языками. Операторы, основные принципы работы с регулярными выражениями, способы их построения. Разработка программ для поиска в тексте необходимой информации, их тестирование и отладка. контрольная работа [197,9 K], добавлен 07.08.2013
Основные принципы построения промышленных сетей. Интерфейсы RS485, RS422, RS232: принципы построения и основные параметры. Зависимость максимальной скорости передачи "токовой петли" от длины неэкранированной витой пары. Протоколы обмена информацией. дипломная работа [336,5 K], добавлен 26.05.2014
Анализ и сбор сведений по предметной области. Исследование программ-аналогов для выявления имеющихся недостатков. Создание структуры данных. Разработка пользовательского интерфейса и сопроводительной документации. Отладка и тестирование программы. отчет по практике [2,2 M], добавлен 28.04.2015
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Принципы построения многоуровневых сетей курсовая работа. Программирование, компьютеры и кибернетика.
Реферат: Рыбные ресурсы их использование и охрана. Скачать бесплатно и без регистрации
Реферат: Зима, Олег Валентинович
Курсовая работа по теме Премиальные системы оплаты труда
Доклад по теме Материализм или идеализм?
Курсовая работа по теме Социально-экономические последствия безработицы и методы ее преодоления
Автореферат На Тему Вікові Та Нозологічні Особливості Неврологічних Розладів Ходи
Реферат: Алгоритм формирования ключей в процессе функционирования DES. Скачать бесплатно и без регистрации
Сочинение Болото В Лесу
Реферат по теме Власть и купечество в России
Реферат по теме Антропогеоценоз - елементарний осередок господарсько-культурного типу
Контрольная работа по теме Зарубежный опыт стимулирования персонала
Идеи Для Песен Собственного Сочинения На Русском
Лабораторная Работа Измерение Числа Колебаний Образа
Реферат: Особенности сексуального поведения
Реферат по теме Научная революция XVII века
Презентация К Дипломной Работе Пример Образец
Реферат: Материальная ответственность сторон трудового договора
Курсовая работа по теме Денежная система и ее элементы
Принципы псо. Понятие, классификация, характеристика.
Сочинение О Пушкине На Английском Языке
Расчет параметров коммутируемой телекоммуникационной сети - Коммуникации, связь, цифровые приборы и радиоэлектроника курсовая работа
Планирование фонда заработной платы - Менеджмент и трудовые отношения реферат
Развитие системы дошкольного образования в США - Педагогика дипломная работа


Report Page