Автор работы: Пользователь скрыл имя, 24 Ноября 2013 в 15:05, курсовая работа
Степень интеграции элементов в микросхемах на сегодняшний день очень высока. В результате этого развития появились многофункциональные микросхемы, называемые микроконтроллерами. Они могут объединять себе микропроцессор, АЛУ, порты ввода/вывода, ПЗУ, ОЗУ и т. д. С помощью таких микросхем можно создавать сложные системы управления технологическими процессами. В качестве объектов управления могут быть практически любые устройства, в том числе и трехпозиционные термостаты. Цель данной курсовой работы ознакомиться с устройством микроконтроллера ATmega 128 и получить навыки разработки управляющих устройств. А так же укрепить знания в области программной части микроконтроллера и его программирования.
1. Введение………………………………………………………………………3
2. Содержание задания (исходные данные)…………………………………...4
3. Описание элементов системы……………………………………………….5
3.1 Описание объекта управления……………………………………………..5
3.2. Описание микроконтроллера ATmega128………………………………..5
4. Описание системы индикации……………………………………………...15
4.1 Светодиоды ………………………………………………………………...15
4.2 Описание кнопок…………………………………………………………...15
5. Алгоритм управления………………………………………………………..16
6. Заключение…………………………………………………………………...17
7. Используемая литература……………………………………………………18
Министерство транспорта Российской Федерации
Федеральное агентство железнодорожного транспорта
Федеральное бюджетное образовательное учреждение высшего профессионального образования
Омский государственный университет путей сообщения (ОмГУПС)
Кафедра «Автоматика и системы управления»
Световые эффекты: плавное изменение яркости свечения
RGB – светодиода
Пояснительная записка к курсовому проекту по предмету
«Микропроцессорные системы управления на
железнодорожном транспорте»
ИНМВ.0719.7226 ПЗ
Выполнила студентка
группы 0719
____________ Л.А. Пропп
«___» __________ 2012 г.
Руководитель
_____________ Александров
«___» __________ 2012 г.
Омск 2012
Реферат
Курсовая работа содержит 22 страниц, 5 рисунков,
4 библиографических источника.
Световые эффекты: плавное изменение яркости свечения RGB – светодиода.
Объектом проектирования является разработка управления RGB – светодиода с помощью микроконтроллеров PIC12FG29/
Цель курсовой работы – составить и запрограммировать алгоритм работы плавного изменения яркости светодиода.
Содержание
Введение
Чтобы понять, каким образом можно управлять RGB – светодиодом с помощью микроконтроллера, нужно знать, что представляет собой RGB – светодиод.
RGB – светодиод – это просто три расположенных светодиода под одной линзой: красный – Red, зеленый – Green, синий – Blue, отсюда и название. Как известно сочетанием этих трёх цветов можно получить любой другой цвет. Обычно у этих трёх светодиодов объединены плюсовые (с общим анодом) или минусовые (с общим катодом) выводы, соотвественно, всего у RGB – светодиода четыре вывода, хотя иногда бывает, что все шесть выводов делают раздельно. То есть, фактически, управление RGB – это управление тремя светодиодами. Яркость свечения светодиода зависит от протекающего через светодиод тока.
Идея управления заключается в том, что если подавать на светодиод прямоугольные импульсы, то, регулируя их скважность, можно регулировать средний ток и, соответственно, среднюю яркость. При этом если частота импульсов будет достаточно большой (хотя бы как у плохого монитора – 60 Гц, а ещё лучше 100), то никакого мелькания мы не увидим, нам будет казаться, что светодиод светит постоянно, при этом кажущаяся яркость будет равна средней яркости.
Выбор основных цветов обусловлен особенностями физиологии восприятия цвета сетчаткой человеческого глаза. Цветовая модель RGB нашла широкое применение в технике.
Аддитивной она называется потому, что цвета получаются путём добавления к черному. Иначе говоря, если цвет экрана, освещённого цветным прожектором, обозначается в RGB как (r1, g1, b1), а цвет того же экрана, освещенного другим прожектором, — (r2, g2, b2), то при освещении двумя прожекторами цвет экрана будет обозначаться как (r1+r2, g1+g2, b1+b2).
Изображение в данной цветовой модели состоит из трёх каналов. При смешении основных цветов (основными цветами считаются красный, зелёный и синий) — например, синего (B) и красного (R), мы получаем пурпурный (M magenta), при смешении зеленого (G) и красного (R) — жёлтый (Y yellow), при смешении зеленого (G) и синего (B) — циановый (С cyan). При смешении всех трёх цветовых компонентов мы получаем белый цвет (W).
Рисунок 1. – результат смешения основных цветов
Таким образом, все что нам нужно для управления RGB – светодиодом по такому методу, – это три ШИМ.
Рисунок 2 – схема подключения RGB – светодиода
Схема подключения достаточно банальна, главная фишка в данном случае находится в программной части. Дело в том, что редко у каких контроллеров младших серий есть три ШИМ или хотя бы три таймера с прерываниями (из которых легко сделать ШИМ). У рассматриваемого нами в качестве примера PIC12F629 вообще нет ни одного ШИМ, есть только два аппаратных таймера. В связи с этим, необходимые три канала ШИМ пришлось реализовывать программно.
Необходимо понимать, что если вы используете RGB с общим плюсом, то выбранный светодиод загорается, когда на соответствующем выводе контроллера установлен "0", а если используется RGB с общим минусом, то выбранный светодиод загорается, когда на соответствующем выводе установлена "1".
1 Язык программирования С++
C++ — компилируемый статически типизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования как процедурное программирование, модульность, раздельная компиляция, обработка исключений, абстракция данных, типы (объекты), виртуальные функции, объектно-ориентированное программирование, обобщенное программирование, контейнеры и алгоритмы, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Наиболее популярны проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.
При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико — отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C.
Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году — нынешняя версия этого стандарта — ISO/IEC 14882:2003.
Ранние версии языка, известные под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Simula имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию C). Вначале в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.
Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.
В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из–за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции–члены, функции-константы и защищённые члены.
В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.
Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.
Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.
В наш век кажется нет такой отрасли знаний, которая бы так стремительно развивалась, как программирование и вычислительная техника. Кажется никакая еще наука не развивалась такими семимильными шагами и такими темпами. Возникает новая техника: компьютеры, процессоры, дисководы. Появляются новые возможности и новые информационные технологии.
Программирование сейчас везде и всюду. Оно обслуживает предприятия, офисы, конторы, учебные заведения – все, где есть управленческий труд и потоки информации. Нелегок труд программиста. Трудны языки программирования. Особенно поражает их многообразие. И сам процесс программирования становится таким объемным и сложным, что старые методы уже никого не удовлетворяют, и на смену им приходят новые методы и новые языки программирования, подобные языку С++ и системе Visual C++ 6.0, способные убыстрить во много раз разработку и сопровождение программ. Сегодня мы смотрим назад из XXI–ого века в XX–й век и восхищаемся новейшими Windows–технологиями, визуальным подходом и объектно–ориенированным программированием. За короткий срок они покорили и завоевали весь мир.
2
Программная реализация трехканального
ШИМ на микроконтроллере PIC12F629
Представленная ниже программа предназначена для управления RGB–светодиодом с помощью микроконтроллера PIC12F629. Для этого в программе реализован программный трехканальный ШИМ. Каждый канал имеет разрядность 2 бита, позволяя таким образом сделать 22=4 различных уровня яркости свечения каждого кристалла, что в совокупности даёт возможность отобразить 4*4*4=64 различных цвета. Частота ШИМ - 100 Гц.
Алгоритмы:
Рисунок 3 – схема управления RGB – светодиодом
Поскольку для каждого канала мы используем 2 бита, то можно все три канала закодировать одним байтом (то есть каждый цвет можно кодировать одним байтом).
В данной программе переменная "skor" служит для задания скорости смены цветов. Количество импульсов с одной и той же уставкой равно начальному значению переменной "skor". В нашем примере начальное значение "skor"=25, то есть каждая уставка действует в течении 25 импульсов. Поскольку частота у нас 100 Гц, то 25 импульсов – это 250 мс.
Если есть желание организовать загрузку необходимых цветов с компьютера, то нужно делать аппаратный контроль передачи и, на время обработки подпрограммы прерывания от таймера, запрещать приём данных. Если этого не сделать, то пересылка данных может сбить частоту импульсов. В результате какое-то время некоторые светодиоды могут казаться максимально включенными, а другие – полностью выключенными.
3 Контроллер для светодиодной ленты
Трёхканальные контроллеры, представляют собой устройства для управления светодиодными модулями и светодиодными лентами. Контроллеры могут управлять монохромными и полноцветными RGB светодиодными лентами по запрограммированным алгоритмам, а также с внешнего устройства (компьютера), по протоколу DMX–512. Контроллеры дают возможность выбора исполняемого сценария переключения LED, изменения яркости и скорости воспроизведения. Управление контроллерами обычно осуществляется с помощью инфракрасного пульта ДУ, который может дистанционно до 50 метров если используется радиоуправление и до 5 метров при ИК, выбирать сценарии смены цветов, управлять скоростью изменения цвета, яркостью светодиодной подсветки, а также останавливать сценарий на понравившемся оттенке. Предназначены контроллеры для декоративной подсветки, концертного оборудования, регулировки яркости светодиодных лент и модулей, тюнинга автомобилей.
Некоторые контроллеры могут работать и как автономный источник сигнала DMX-512, например для управления другими устройствами поддерживающими данный протокол, например сканеры, диммеры, стробоскомы, зенитные прожектора и т.д.
Информация о работе Разработка микропроцессорного устройства управления