Главная страница
Навигация по странице:

  • Разработка технического задания

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

  • Разработка схем изделия

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

  • Язык программирования

  • Список используемой литературы

  • КУРСОВАЯ. Курсовая. Задача курсовой работы укрепление старых и получение новых знаний в области микроконтроллеров, проектирования и программирования


    Скачать 355.85 Kb.
    НазваниеЗадача курсовой работы укрепление старых и получение новых знаний в области микроконтроллеров, проектирования и программирования
    АнкорКУРСОВАЯ
    Дата19.05.2022
    Размер355.85 Kb.
    Формат файлаdocx
    Имя файлаКурсовая.docx
    ТипЗадача
    #538841

    Введение

    Человечество научилось считать еще в древности и изначально подсчеты велись «на пальцах». Соответственно была возможность считать до 10, после чего записывать или запоминать число, чтобы вести дальнейшие подсчеты. С развитием технологий человечество освоило счеты. Счеты - простое механическое устройство (счётная доска с костями) для выполнения арифметических расчётов. С использованием счетов можно было складывать уже большие числа.

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

    Сегодня в XXI веке у нас есть микроконтроллеры. Микроконтроллер – микросхема, предназначенная для управления электронными устройствами. Исходя из названия, сразу понятно, что они очень компактные, а их стоимость, по меркам нашего времени не очень велика. Область их применения, как и спектр возможностей, очень широкая. Микроконтроллеры могут использоваться как в домашних условиях, так и на крупных предприятиях.

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

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

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

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

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

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

    Так как устройство предназначено для эксплуатации в помещении, оно будет гарантированно исправно функционировать в температурном диапазоне от 0 до 25С° (±5С°) и влажности воздуха не более 90%. Отсутствие вибраций увеличит точность работы системы, а также продлит срок службы устройства, так как вибрации, как и другие механические воздействия, могут повредить структуру платы микроконтроллера, что привет к неисправности устройства.

    Устройство будет находиться в корпусе оснащенным степенью защиты IP5x, то есть будет защищено от попадания пыли (не полностью). Степень защиты IP5x подразумевает защиту от пыли, в таком случае проникновение пыли не полностью устранено, но попавшая пыль не повредит удовлетворительной работе оборудования, также присутствует полная защита от контакта.

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

    Разрабатываемое цифровое устройство должно выполнять функцию суммирующего 4-разрядного счетчика и выводить информацию в двоичном коде на светодиоды. Схема должна питаться от источника тока 5В и с учетом светодиодов потреблять не более 100мА. Устройство будет иметь 2 входа для кнопок, одна из которых будет выполнять функцию сброса, а также 4 информационных выхода со светодиодами для вывода информации в двоичном коде.

    Таблица 1 – основные параметры изделия


    Наименование параметра

    Значение параметра

    Напряжение питания

    5 В

    Потребляемый ток (не более)

    100 мА

    Уровень логической 1 (не ниже)

    4,2 В

    Уровень логического 0 (не выше)

    0,5 В

    Выполняемая функция

    Суммирующий счетчик

    Разрядность счетчика

    4

    Количество информационных выходов

    4

    Индикация состояния разрядов счета

    Вывод на светодиоды


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

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

    Выбор микроконтроллера
    В ходе работы необходимо использовать микроконтроллер для произведения вычислительных операций. Первым делом взгляд падает на семейство микроконтроллеров Arduino, имеющих в своем ядре AVR микроконтроллер. Семейство Arduino предлагает широкий выбор микроконтроллеров, предназначенных для универсального использования. Основные отличия моделей микроконтроллеров данного семейства это -количество информационных входов и выходов, габариты, объем памяти, как оперативной, так и постоянной, мощность процессора и непосредственно стоимость самого микроконтроллера.

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

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

    В нашем проекте от микроконтроллера требуется:

    • Компактность;

    • Скорость работы;

    • Стабильность работы;

    • Невысокая стоимость;

    • Простота устройства;

    • Наличие цифровых и аналоговых входов и выходов;

    • Возможность питания от источника 5В.

    Учитывая требования, описанные ранее можно подобрать микроконтроллер. В нашем случае почти идеально подходит микроконтроллер Arduino Nano на базе Atmega 328. Данный микропроцессор функционален, компактен, относительно недорогой и имеет все что нужно для выполнения необходимых нам функций. У него много информационных входов и выходов, хотя использоваться будет только 6, но это дает возможность модифицировать устройство в дальнейшем.

    В таблице 2 приведены основные параметры микроконтроллера Arduino Nano.

    Таблица 2 – основные параметры Arduino Nano

    Наименование параметра

    Значение

    Микроконтроллер

    Atmel Atmega328

    Напряжение питания

    5 В

    Входное напряжение

    7-12 В

    Входное напряжение (предельное)

    20 В

    Максимальный ток цифрового выхода

    40 мА

    Количество цифровых пинов

    14 шт.

    Количество аналоговых входов

    8 шт.

    Флэш память

    32 кб

    Объем оперативной памяти

    1 кб

    Частота

    16 МГц

    Размеры

    19х42 мм.

    Вес

    7 г.


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

    Питание микроконтроллера

    Arduino Nano может быть запитан через кабель Mini-B USB, от внешнего источника питания с нестабилизированным напряжением 6-20В (через вывод 30) либо со стабилизированным напряжением 5В (через вывод 27). Устройство автоматически выбирает источник питания с наибольшим напряжением. Напряжение на микросхему FTDI FT232RL подается только в случае питания Arduino Nano через USB. Поэтому при питании устройства от других внешних источников (не USB), выход 3.3В (формируемый микросхемой FTDI) будет неактивен, в результате чего светодиоды RX и TX могут мерцать при наличии высокого уровня сигнала на выводах 0 и 1.

    Память

    Объем памяти программ микроконтроллера ATmega168 составляет 16 КБ (из них 2 КБ используются загрузчиком); в ATmega328 - этот объем составляет 32 КБ (из которых 2 КБ также отведены под загрузчик). Помимо этого, ATmega168 имеет 1 КБ оперативной памяти SRAM и 512 байт EEPROM (для взаимодействия с которой служит библиотека EEPROM); а микроконтроллер ATmega328 - 2 КБ SRAM и 1 КБ EEPROM.

    Входы и выходы

    С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов Arduino Nano может работать в качестве входа или выхода. Рабочее напряжение выводов - 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо основных, некоторые выводы Ардуино могут выполнять дополнительные функции:

    • Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Эти выводы соединены с соответствующими выводами микросхемы-преобразователя USB-UART от FTDI.

    • Внешние прерывания: выводы 2 и 3. Данные выводы могут быть сконфигурированы в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, по фронту, по спаду или при изменении сигнала. Для получения дополнительной информации см. функцию attachInterrupt().

    • ШИМ: выводы 3, 5, 6, 9, 10 и 11. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.

    • Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Данные выводы позволяют осуществлять связь по интерфейсу SPI. В устройстве реализована аппаратная поддержка SPI, однако на данный момент язык Ардуино пока ее не поддерживает.

    • Светодиод: вывод 13. Встроенный светодиод, подсоединенный к цифровому выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается.



    Входы и выходы Arduino nano

    Разработка схем изделия
    Структурная схема — это совокупность элементарных звеньев объекта и связей между ними, один из видов графической модели. Под элементарным звеном подразумевается часть объекта, системы управления и т. д., которая реализует элементарную функцию.

    Для упрощения дальнейшей задачи сделаем структурную схему.

    Приложение 1.

    Пояснение структурной схемы

    1. Устройства ввода (кнопки)

    2. Микроконтроллер (Arduino Nano)

    3. Устройство вывода (светодиоды)

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

    Принципиальная схема изделия

    Приложение 2.

    Пояснение принципиальной схемы

    На принципиальной схеме наглядно показано подключение кнопок и светодиодов с использованием резисторов.

    Резисторы R4-R7 выполняю ограничивающую функцию, то есть они ограничиваю ток, подаваемый на светодиоды. Это влияет на широту видимого спектра (яркость), а соответственно и долговечность светодиодов

    На схеме есть 2 кнопки S1 и S2, одна из них включает систему, а вторая производит сброс счета системы. Кнопки подключены с использование подтягивающих резисторов R2 и R3 номиналом 10000 Ом.

    Схема цепей питания

    Так как микроконтроллер должен получать питание, составим схему питания.

    Приложение 3.

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

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

    Алгоритм работы микроконтроллера
    Перед тем как программировать микроконтроллер необходимо определить алгоритм его работы или же последовательность действий. В нашем случае будет 2 программы – основная и подпрограмма.

    Приложение 4.

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

    Приложение 5.

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

    Алгоритм выглядит довольно просто, но за любым алгоритмом работы микроконтроллера стоит код, где-то большой, где-то не очень, но тем не менее он есть. Естественно для написания кода необходимо сначала выбрать язык программирования.

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

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

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

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

    Достоинства и недостатки:

    • минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы

    • большие объемы кода, большое число дополнительных мелких задач

    • плохая читабельность кода, трудность поддержки (отладка, добавление возможностей)

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

    • меньшее количество доступных библиотек, их малая совместимость

    • непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора

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

    • максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей «железа»)

    • непереносимость на другие платформы (кроме двоично совместимых).

    Данный тип языков получил свое название от названия транслятора (компилятора) с этих языков — ассемблера (англ. assembler — сборщик). Название последнего обусловлено тем, что на первых компьютерах не существовало языков более высокого уровня, и единственной альтернативой созданию программ с помощью ассемблера было программирование непосредственно в кодах.

    Язык ассемблера в русском языке часто называют «ассемблером» (а что-то связанное с ним — «ассемблерный»), что, согласно английскому переводу слова, неправильно, но вписывается в правила русского языка. Однако, сам ассемблер (программу) тоже называют просто «ассемблером», а не «компилятором языка ассемблера» и т. п.

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

    Описание основных команд программы:

    rjmp inicial ; переход на программу инициализации

    rjmp INT_0 ; переход на программу прерывания

    .include "ini_STAK.txt" ; инициализируем указатель СТЕКа

    .include "ini_port_D.txt" ; инициализируем порт Д

    .include "ini_Delay.txt" ; инициализация задержки

    sei ; разрешаем внешние прерывания

    start: ; начало основной программы

    rjmp start ; создание бесконечного цикла

    .equ confIOPD = $80 ; присвоение значения переменной

    .equ adrPIND = $30 ; адрес обращения к порту

    .equ adrMCUCR = $55 ; адрес ОЗУ регистра

    clr ZH ; перенос 00 в старший регистр

    ldi r16, confIOPD ; конфигурация порта D в регистр

    st Z+, r16 ; инициализируем DDRD

    st Z, r16 ; запись данных в ОЗУ

    ldi ZL, adrSFIOR ; запись в указатель адрес регистра SFIOR

    ld r17,Z ; считывание ОЗУ

    bld r17, 2 ; активация резисторов

    st Z, r17 ; инициализация резисторов

    ld r17,Z ;считывание состояние регистра из ОЗУ

    bset 6 ; устанавливаем бит Т в 1

    ld r17,Z ; считывание состояние регистра из ОЗУ

    st Z, r17 ; включение обработки прерываний

    .equ RamSPL = $5f ; присвоение значения переменной

    .def XL = r26 ; присвоение регистру имя для обращения

    .equ adrTCCR0 = $53 ; адрес ОЗУ для обращения к регистру

    ;.equ adrGIFR = $5A ; адрес ОЗУ регистра

    clr ZH ; запись 00 в старший байт

    ld r17,Z ;считывание информации из ОЗУ
    Таким образом выглядят основные команды программы, записанной в наш микроконтроллер. Именно она сообщает микроконтроллеру что необходимо делать в той или иной ситуации. С ее помощью микроконтроллер понимает, что и в какой регистр памяти необходимо записывать и когда и какие светодиоды включать.

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

    В ходе работы было спроектировано цифровое устройство, выполняющее функцию 4-разрядного суммирующего счетчика с отображением информации на светодиодах. Собранная система имеет широкий спектр применения от входной двери, до пропускного пункта в метро или какой-либо организации. Устройство было оснащено защитой от пыли по протоколуIP5x.

    В целом устройство получилось довольно компактным, быстродействующим и относительно недорогим. Помимо этого, данное устройство потребляет очень мало электроэнергии и, в теории, может питаться как от сети 220В с преобразователем напряжения (5В), так и от обычных батареек, что делает систему относительно универсальной.

    При выполнении курсовой работы, помимо основных заданий было выполнено побочное задание в виде знакомства с программой Microsoft Visio. Visio – программа для построения блок-схем, алгоритмов и принципиальных электрических схем. Освоение программы, так же как и выполнения курсовой работы – бесценный опыт.

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

    Основная задача курсовой работы выполнена – были получены навыки проектирования и программирования, а также получены новые знания и закреплены старые.

    Список используемой литературы

    1. Микроэлектроника: лабораторный практикум. – СКФУ.: 2014, 123 с. (www.knigafund.ru)

    2. Аналого-цифровые каналы микропроцессорных систем управления: учебное пособие. Шишов О. В. - Директ-Медиа.: 2015, 211 с. (www.knigafund.ru)

    3. Введение в цифровую электронику. Лекция 4. Основные понятия микропроцессорной техники. Презентация. Новиков Ю. В.
      Национальный Открытый Университет «ИНТУИТ» - 2014, 20 с. (www.knigafund.ru)

    4. Периферийные устройства вычислительной техники. Лошаков С. Национальный Открытый Университет «ИНТУИТ».: 2016, 436 с. (www.knigafund.ru)

    5. Аппаратные средства вычислительной техники: учебник. Айдинян А. Р. Директ-Медиа.2016 г., 125 с. (www.knigafund.ru)


    6. Вершинин О.Е. Применение микропроцессоров для автоматизации технологических процессов. Л.: Энергоатомиздат, Ленинградское отделение, 2010, 208с.

    7. Микропроцессоры. В 3-х кн. Архитектура и проектирование микро ЭВМ. Организация вычислительных процессов. Учебник для ВТУЗов. /П.В. Нестеров, В.Ф. Шаньгин, В.Л. Горбунов и др. Под ред. Л.Н. Преснухина. – М.: Высш. шк, 2010, 495с.

    8. http://www.mikroe.com

    9. http://www.atmel.com

    10. http://www.eldigi.ru




    написать администратору сайта