КУРСОВАЯ. Курсовая. Задача курсовой работы укрепление старых и получение новых знаний в области микроконтроллеров, проектирования и программирования
![]()
|
Введение Человечество научилось считать еще в древности и изначально подсчеты велись «на пальцах». Соответственно была возможность считать до 10, после чего записывать или запоминать число, чтобы вести дальнейшие подсчеты. С развитием технологий человечество освоило счеты. Счеты - простое механическое устройство (счётная доска с костями) для выполнения арифметических расчётов. С использованием счетов можно было складывать уже большие числа. В XX веке человечество увидело первую ЭВМ (электронно-вычислительная машина), которая могла сама выполнять вычислительные операции, стоило лишь давать ей данные и команды. Но у первых ЭВМ были значительные недостатки, в числе которых были большие габариты (первая ЭВМ занимала целую комнату) и непосредственно стоимость. С развитием технологий эти недостатки были устранены, а мощность была в разы увеличена. Сегодня в XXI веке у нас есть микроконтроллеры. Микроконтроллер – микросхема, предназначенная для управления электронными устройствами. Исходя из названия, сразу понятно, что они очень компактные, а их стоимость, по меркам нашего времени не очень велика. Область их применения, как и спектр возможностей, очень широкая. Микроконтроллеры могут использоваться как в домашних условиях, так и на крупных предприятиях. Целью курсовой работы является, разработка цифрового устройства, выполняющего функцию 4-разрядного суммирующего счетчика. Задача курсовой работы укрепление старых и получение новых знаний в области микроконтроллеров, проектирования и программирования. Областью теоретических знаний являются знания полученные в ходе обучения в техникуме и открытые интернет источники, включая онлайн-библиотеки. Разработка технического задания Разработка технического задания – очень важная часть выполнения любого проекта. Техническое задание помогает понять цели и задачи разрабатываемого проекта, планировать время и стоимость разработки, создать прототип устройства. В ходе работы необходимо выполнить цифровое устройство, выполняющее функцию счетчика, на базе какого-либо микроконтроллера. После размышлений было принято решение сделать устройство, которое будет подсчитывать количество нажатий на кнопку и выводить счетную информацию на светодиоды в двоичном коде. В дальнейшем данное устройство можно будет модифицировать, например, вместо кнопки установить датчик движения или светочувствительный датчик, в зависимости от дальнейшего предназначения устройства. Так как устройство предназначено для эксплуатации в помещении, оно будет гарантированно исправно функционировать в температурном диапазоне от 0 до 25С° (±5С°) и влажности воздуха не более 90%. Отсутствие вибраций увеличит точность работы системы, а также продлит срок службы устройства, так как вибрации, как и другие механические воздействия, могут повредить структуру платы микроконтроллера, что привет к неисправности устройства. Устройство будет находиться в корпусе оснащенным степенью защиты IP5x, то есть будет защищено от попадания пыли (не полностью). Степень защиты IP5x подразумевает защиту от пыли, в таком случае проникновение пыли не полностью устранено, но попавшая пыль не повредит удовлетворительной работе оборудования, также присутствует полная защита от контакта. Предварительно визуализировав устройство и его работу, мною были составлены основные параметры устройства. Разрабатываемое цифровое устройство должно выполнять функцию суммирующего 4-разрядного счетчика и выводить информацию в двоичном коде на светодиоды. Схема должна питаться от источника тока 5В и с учетом светодиодов потреблять не более 100мА. Устройство будет иметь 2 входа для кнопок, одна из которых будет выполнять функцию сброса, а также 4 информационных выхода со светодиодами для вывода информации в двоичном коде. Таблица 1 – основные параметры изделия
При выборе микроконтроллера данная таблица будет главным помощником. Опираясь на данные, представленные в таблице и следуют выбирать микроконтроллер. Так как таблица основных параметров устройства составлена, можно приступать к следующему этапу проектирования устройства – выбору микроконтроллера. Выбор микроконтроллера В ходе работы необходимо использовать микроконтроллер для произведения вычислительных операций. Первым делом взгляд падает на семейство микроконтроллеров Arduino, имеющих в своем ядре AVR микроконтроллер. Семейство Arduino предлагает широкий выбор микроконтроллеров, предназначенных для универсального использования. Основные отличия моделей микроконтроллеров данного семейства это -количество информационных входов и выходов, габариты, объем памяти, как оперативной, так и постоянной, мощность процессора и непосредственно стоимость самого микроконтроллера. Отталкиваясь от технического задания, функциональности и ценового диапазона следует выбирать конкретную модель Arduino. Не стоит выпускать из виду и размеры самого микроконтроллера, от них будет зависеть мобильность устройства. Перед тем как приступать к выбору микроконтроллера, стоит визуализировать конечное устройство, чтобы определить необходимый или максимально допустимый размер устройства. При выборе микроконтроллера стоит внимательно прочесть его технические параметры, ведь никому не хочется терять деньги и время из-за того, что микроконтроллер не подошел для проекта. В нашем проекте от микроконтроллера требуется: Компактность; Скорость работы; Стабильность работы; Невысокая стоимость; Простота устройства; Наличие цифровых и аналоговых входов и выходов; Возможность питания от источника 5В. Учитывая требования, описанные ранее можно подобрать микроконтроллер. В нашем случае почти идеально подходит микроконтроллер Arduino Nano на базе Atmega 328. Данный микропроцессор функционален, компактен, относительно недорогой и имеет все что нужно для выполнения необходимых нам функций. У него много информационных входов и выходов, хотя использоваться будет только 6, но это дает возможность модифицировать устройство в дальнейшем. В таблице 2 приведены основные параметры микроконтроллера Arduino Nano. Таблица 2 – основные параметры Arduino Nano
После составления таблицы основных параметров микроконтроллера можно приступать к созданию схем изделия. Питание микроконтроллера 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. Пояснение структурной схемы Устройства ввода (кнопки) Микроконтроллер (Arduino Nano) Устройство вывода (светодиоды) Так как в нашем проекте в качестве устройств ввода используются кнопки, то при их нажатии сигнал передается непосредственно микроконтроллеру. Микроконтроллер в свою очередь обрабатывает эти сигналы и принимает дальнейшее вычислительное решение. После всех вычислительных операций микроконтроллер отправляет сигнал на устройство вывода информации, в качестве которого у нас 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-разрядного суммирующего счетчика. Основная задача курсовой работы выполнена – были получены навыки проектирования и программирования, а также получены новые знания и закреплены старые. Список используемой литературы Микроэлектроника: лабораторный практикум. – СКФУ.: 2014, 123 с. (www.knigafund.ru)Аналого-цифровые каналы микропроцессорных систем управления: учебное пособие. Шишов О. В. - Директ-Медиа.: 2015, 211 с. (www.knigafund.ru) Введение в цифровую электронику. Лекция 4. Основные понятия микропроцессорной техники. Презентация. Новиков Ю. В. |