Программирование на ассемблере для начинающих с примерами программ. Краткие характеристики устройства

Здравствуйте!
Я хочу показать, как пишется программа для управления технологическим оборудованием на ПЛК.
Чаще всего я имел дело с ПЛК производства Schneider Electric. Выбранный мной для данной задачи Quantum является самым мощным и дорогим ПЛК данного производителя. Он может управлять оборудованием с тысячами сигналов, для светофора в реальной жизни его никто, естественно, использовать не будет.

Автоматизацией светофоров я никогда не занимался, поэтому алгоритм придумал сам. Вот он:
1. Светофор для регулируемого пешеходного перехода. Т.е. светофор для машин, светофор для пешеходов и кнопка для пешеходов, нажав которую, пешеход уведомляет о желании перейти дорогу.
2. После старта программы загорается зеленый для машин и красный для пешеходов.
3. После нажатия кнопки пешеходом начинает мигать зеленый для машин, затем загорается желтый, затем красный. После этого загорается зеленый для пешеходов, через заданное время он начинает мигать, загорается красный для пешеходов, после этого для машин загорается желтый и красный, затем зеленый.
4. В течение заданного промежутка времени после зеленого на пешеходном светофоре нажатие кнопки пешеходом не запускает алгоритм перехода. Алгоритм перехода запускается в таком случае только по истечению заданного времени.
Программирование ПЛК ведется в среде программирования Unity на языках стандарта МЭК 61131-3. В данный стандарт входят 5 языков. Для примера я выбрал язык функциональных блоков – FBD.
Вот браузер проекта в Unity:

Конфигурируем ПЛК:


ПЛК состоит из монтажной панели, блока питания (1), контроллера (2), модуля дискретного ввода на 32 сигнала 24В постоянного тока (4), модуля дискретного ввода на 32 сигнала 24В постоянного тока (5). В реальном проекте монтажных панелей, подключенных к одному контроллеру по различным сетям, могут быть десятки, а модулей ввода-вывода – сотни.
Создаем переменные необходимых типов в редакторе переменных:


Переменные, привязанные к каналам модулей ввода-вывода имеют адрес, показывающий, к какой корзине, модулю и каналу привязан сигнал.
Программа состоит из секций, выполняемых каждый цикл сканирования контроллера по порядку.
Упрощенно цикл сканирования контроллера выглядит так:
1. Чтение входных сигналов из модуля ввода в переменные с адресам.
2. Выполнение секций.
3. Запись значений из переменных с адресами в выходные сигналы модулей вывода.
4. Переход на п.1.
Создаем секцию Clock с генератором импульса периодом 0,5 секунды. Блок TP при изменении входного сигнала из 0 в 1 на выходе выдает импульс заданной длительности.


Здесь и ниже скриншоты секций приведены в режиме анимации, а не режиме редактирования. На них отображены значения переменных в текущий момент времени при подключении к ПЛК с загруженной программой (числа для числовых переменных, цвет зеленый (1)-красный (0) для булевских).
Секция Main обрабатывает основную логику.
Блок SR устанавливает выход в 1 при S1=1 и сбрасывает выход в 0 при R=1.
Блок R_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 0 в 1 (детектор переднего фронта).
Блок F_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 1 в 0 (детектор заднего фронта).
Переменная inButton, привязанная к каналу кнопки, заменена в секции на inButtonForTest для того, чтобы можно было изменить ее значение на симуляторе контроллера без реального оборудования.


Секция Outputs формирует выходные сигналы для управления лампами светофоров.


Загружаем проект в симулятор контроллера:


Значение любых переменных можно посмотреть в анимационной таблице:


Но для удобства отладки можно сделать экран оператора с простой графикой, анимация которой привязана к переменным:

Пробуем перейти дорогу:

Не ожидал, что для управления такого простого объекта, как светофор, потребуется 30 блоков.
В следующей статье покажу, как написать данную программу, используя все языки стандарта МЭК 61131-3 одновременно.

UPD. Исправил ошибку в названии стандарта.

(Фигуры), (Панель).

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

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

Ход выполнения проекта

1. Создайте новый проект. Сохраните его в отдельной папке, назовите ее «Светофор».

2. Разместите на форме панель (TPanel) c тремя фигурами (TShape), две кнопки (TButton), текстовое поле (TEdit), надпись (TLabel), таймер (TTimer) в соответствии с образцом:

Это должно выглядеть следующим образом:

2. Делаем оформление:

Установите данные значения свойств в инспекторе объектов:

Компонент Свойство Значение
Form1 Caption Светофор
Panel1 Caption *Пусто*
Shape1 Shape stCircle
Shape2 Shape stCircle
Shape3 Shape stCircle
Label1 Caption Скорость
Edit1 Text *пусто*
Button1 Caption Пуск
Button2 Caption Стоп

3. Создаем событие для Form1 в разделе OnCreate – Нажать троеточие

Создаем событие для Timer1 в разделе OnTimer – Нажать троеточие

4. Задаем цвета фигурам:

Финальный вид работы:

5. Во время загрузки формы таймер отключается, фигуры на панели становятся невидимыми.

Создаем обработчик события FormCreate (дважды щелкаем по компоненту Form1) и вставляем данный код:

var k:integer; procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; end;

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

Дважды щелкаем по компоненту Timer1 и вставляем данный код:

6. Напишите программный код для кнопки Пуск. По щелчку на кнопке из поля Скорость считывается интервал для таймера, зануляется показания таймера, таймер включается.

Дважды щелкаем по компоненту Button1 и вставляем код:

procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Interval:=StrToInt(Edit1.text); k:=0; Timer1.Enabled:=true; end;

7. Напишите программный код для кнопки Стоп. После щелчка на кнопке таймер должен отключиться, лампочки светофора снова становятся невидимыми.

Дважды щелкаем по компоненту Button2 и вставляем код:

procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; end;

8. Запустите проект. В поле Скорость введите число 1000 (1000 мс=1с). Лампочки светофора начнут переключаться с интервалом в одну секунду.

Артем Позняк, ученик 10 “А” класса СОШ №23, г. Экибасбуз

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http :// www . allbest . ru /

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

Государственное образовательное учреждение среднего профессионального образования

Уфимский колледж статистики, информатики и вычислительной техники

П ояснительная записка

СВЕТОФОР НА ОСНОВЕ МИКРОКОНТРОЛЕРА

Абдрахимов А.Р.

Руководитель проекта

Мичурин Е.А.

ВВЕДЕНИЕ

1. ОПИСАНИЕ АКТУАЛЬНОСТИ ЗАДАЧИ И ОБЛАСТЬ ПРИМЕНЕНИЯ

1.1 Светофоры

1.2 Типы светофоров

1.3 Конструкция светофоров

2. ИССЛЕДОВАНИЕ, ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА СХЕМ

2.1 Обзор характеристики микроконтроллера ATtiny25V

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ И НОРМАТИВНО-ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ

ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

Повышение технического уровня и эффективности электронного оборудования на основе новейших достижений электроники - одна из важнейших задач развития общества. Создание микропроцессоров обусловлено достижениями в области технологии производства больших интегральных схем (БИС). Вслед за появлением микропроцессоров разрабатывается и получает широкое развитие специальная многофункциональная аппаратура, используемая при решении большого числа задач современной техники. Микропроцессоры позволяют на единой технологической схемотехнической базе за счет программирования создавать различные типы приборов. Так и в своей работе я решил реализовать прибор на основе микропроцессора. В качестве микроконтроллера выбран AVR (ATtiny25V)

В данной курсовой работе было разработано устройство на микроконтроллере, написана программа. Данным устройством является светофор на основе микроконтролера.

При проектировании данной курсовой работой были поставлены следующие задачи:

1) Продумать, спроектировать и на практике проверить устройство на основе микроконтроллера;

2) написать и откомпилировать программу для микроконтроллера

3) рассмотреть вопросы программирования микроконтроллеров.

1 . ОПИСАНИЕ АКТУАЛЬНОСТИ ЗАДАЧИ И ОБЛАСТЬ ПРИМЕНЕНИЯ

В данной курсовой работе на основе микроконтроллера ATtiny25V было спроектировано и реализовано устройство - светофор на основе микроконтролера.

Бурный процесс автомобилизации с каждым годом охватывает все большее число стран, постоянно увеличивается автомобильный парк, количество вовлекаемых в сферу дорожного движения людей. Рост автомобильного парка и объема перевозок ведет к увеличению интенсивности движения, что в условиях городов с исторически сложившейся застройкой приводит к возникновению транспортной проблемы. Особенно остро она проявляется в узловых пунктах улично-дорожной сети. Здесь увеличиваются транспортные задержки, образуются очереди и заторы, что вызывает снижение скорости сообщения, неоправданный перерасход топлива и повышенное изнашивание узлов и агрегатов транспортных средств.

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

Одновременно растет и количество дорожно-транспортных происшествий (ДТП), в которых гибнут и получают ранения миллионы людей во всем мире, повреждаются и выходят из строя дорогостоящая техника и грузы. Свыше 60% всех ДТП приходится на города и другие населенные пункты. При этом на перекрестках, занимающих незначительную часть территории города, концентрируется более 30% всех ДТП.

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

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

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

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

При реализации мероприятий по организации дорожного движения особая роль принадлежит внедрению технических средств: дорожных знаков и дорожной разметки, средств светофорного регулирования, дорожных ограждений и направляющих устройств. При этом светофорное регулирование является одним из основных средств обеспечения безопасности движения на перекрестках. Количество перекрестков, оборудованных светофорами, в крупнейших городах мира с высоким уровнем автомобилизации непрерывно возрастает и достигает в некоторых случаях соотношения: один светофорный объекта 1,5-2 тыс. жителей города.

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

1.1 Светофоры

Значение и чередование сигналов.

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

в местах, где встречаются конфликтующие транспортные, а также транспортные и пешеходные потоки (перекрестки, пешеходные переходы);

· по полосам, где направление движения может меняться на противоположное;

· на железнодорожных переездах, разводных мостах, причалах, паромах, переправах;

· при выездах автомобилей спецслужб на дороги с интенсивным движением;

· для управления движением транспортных средств общего пользования.

Порядок чередования сигналов, их вид и значение, принятые в России, соответствуют международной Конвенции о дорожных знаках и сигналах. Сигналы чередуются в такой последовательности: красный - красный с желтым - зеленый - желтый - красный...

При отсутствии дополнительной секции красный немигающий сигнал запрещает движение по всей ширине проезжей части. Остальные разновидности красного сигнала имеют специальное назначение:

· контурная черная стрелка на красном фоне круглой формы запрещает движение в сторону, указанную стрелкой;

· косой красный крест на черном фоне квадратной формы

· запрещает въезд на полосу движения, над которой он расположен;

· красный силуэт стоящего человека запрещает движение пешеходам;

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

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

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

Разновидности зеленого сигнала и их назначение следующие:

· контурная черная стрелка на зеленом фоне круглой формы, а также зеленая стрелка на черном фоне круглой формы - разрешают движение в сторону стрелки;

· зеленая стрелка, на черном фоне квадратной формы направленная вниз, разрешает движение по полосе, над которой расположен светофор;

· сигнал в виде зеленого силуэта идущего человека разрешает движение пешеходов.

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

Разрешенное направление движения для транспортных средств зависит от сочетания включенных сигналов верхнего и нижнего ряда специального светофора (в случае его применения). При выключенном нижнем сигнале движение запрещено во всех направлениях.

1.2 Типы светофоров

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

В приложении 1 показаны некоторые светофоры, применяемые в нашей стране для управления дорожным движением. В соответствии с ГОСТ 25695-83 "Светофоры дорожные. Общие технические условия" они делятся на две группы: транспортные и пешеходные. Светофоры каждой группы, в свою очередь, подразделяются на типы и разновидности исполнения. Имеются семь типов транспортных светофоров и два типа пешеходных. Каждый светофор имеет свой номер. Первая цифра номера означает группу (1 - транспортный светофор, 2 - пешеходный), вторая цифра - тип светофора, третья цифра (или число) - разновидность его исполнения.

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

Дополнительные секции применяются только со светофорами типа 1 с вертикальным расположением сигналов и имеют сигнал в виде стрелки на черном фоне круглой формы.

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

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

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

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

Транспортные светофоры типа 3 применяются в качестве повторителей сигналов светофоров типа 1. По своему внешнему виду они напоминают светофоры этого типа, однако в отличие от них имеют меньшие габаритные размеры и диаметры сигналов 100 мм. Если основной светофор (типа 1) имеет дополнительную секцию то светофор-повторитель также оборудуется дополнительной секцией естественно уменьшенного размера.

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

Транспортные светофоры типа 4 применяют для управления въездами на отдельные полосы движения. Такая необходимость возникает, например, при организации реверсивного движения. Светофоры этого типа устанавливают над каждой полосой в ее начале. Они имеют горизонтальное расположение сигналов: слева - в виде косого красного креста; справа - в виде зеленой стрелки, направленной острием вниз. Оба сигнала выполняются на черном фоне прямоугольной формы. Габаритные размеры каждого символа 450 500 мм.

Светофоры типа 4 могут применяться со светофорами типа 1, если реверсивное движение организовано не по всей ширине проезжей части. В этом случае действие светофоров типа 1 не распространяется на полосы с реверсивным движением. Запрещается въезд а полосу, ограниченную с обеих сторон двойной прерывистой линией (разметка 1.9), при отключенном светофоре типа 4, расположенного над этой полосой. В противном случае возникает возможность выезда навстречу движения (например, при перегорании ламп красного сигнала одного из светофоров полосы).

Транспортный светофор типа 5 имеет четыре сигнала бело-лунного цвета круглой формы диаметром 100 мм. Подобный светофор применяют в случае бесконфликтного регулирования движения транспортных средств общего пользования (трамваев, маршрутных автобусов, троллейбусов), движущихся по специально выделенной полосе. Однако даже в этих случаях необходимость в установке светофоров типа 5 нередко отпадает: схема организации движения на перекрестке обеспечивает бесконфликтный пропуск транспортных средств указанных видов вместе с общим потоком, и светофоры типа 5 лишь повторяют значения сигналов светофоров типа 1 или 2.

При отсутствии специально выделенных полос для транспортных средств общего пользования или возможности их бесконфликтного пропуска применение светофоров типа 5 становится бессмысленным. Управление движением осуществляется светофорами типа 1 или 2.

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

Светофор типа 7 имеет один сигнал желтого цвета, постоянно работающий в режиме мигания. Его применяют на нерегулируемых перекрестках повышенной опасности.

Транспортные светофоры типа 8 имеют два расположенных вертикально сигнала красного и зеленого цветов круглой формы диаметром 200 и 300 мм. Их применяют при временном сужении проезжей части, когда организуют попеременное движение по одной полосе, а использование для этих целей знаков приоритета затруднено в силу ограниченной видимости на этом участке дороги. Кроме этого, светофоры типа 8 применяют также для управления малоинтенсивным движением на внутренних территориях гаражей, предприятий и организаций, где, как правило, введены ограничения скорости. В перечисленных случаях допускается и использование наиболее распространенных светофоров типа 1, однако светофоры типа 8, отличающиеся от них отсутствием желтого сигнала, указывают на специфику условий движения.

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

Согласно ГОСТ 23457-86, пешеходными светофорами оборудуют все пешеходные переходы на управляемом светофорами перекрестке. При этом, если не обеспечен бесконфликтный пропуск пешеходов, зеленый сигнал должен работать в мигающем режиме, предупреждая пешеходов и водителей о возможности просачивания транспортных средств через пешеходные потоки.

Для всех типов светофоров при наличии двух вариантов сигнала (200 или 300 мм) светофоры с большим размером сигнала устанавливают на магистральных улицах и площадях, на дорогах с максимально допустимой скоростью движения более 60 км/ч, а также при неблагоприятных условиях видимости. Таким образом обеспечивается лучшее восприятие сигналов участниками движения. Кроме этого, увеличенные размеры сигналов подчеркивают характер дороги, на которой находится водитель. С этой же целью перед пересечениями с указанными дорогами со стороны, где были светофоры с диаметром сигнала 200 мм, устанавливают светофор с увеличенным диаметром (300 мм) красного сигнала.

1.3 Конструкция светофоров

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

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

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

В качестве источников света применяют лампы накаливания общего и специального назначения. Известны конструкции, где в качестве источника света используют газосветные трубки или излучающие диоды. Основным недостатком ламп накаливания общего назначения являются большая протяженность нити, которая плохо поддается фокусировке, и низкая виброустойчивость ламп. Кроме того, они имеют сравнительно малый срок службы (500-800 ч.), обусловленный специфическим режимом работы. Повышение срока службы ламп идет по пути применения специальных наполнителей (криптон), усложнения технологии изготовления нити накаливания, увеличения числа держателей нити.

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

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

Светофильтры-линзы способствуют концентрации светового потока. Их использование позволяет отказаться от использования отражателя и уменьшить размер сигнала (транспортные светофоры типов 3 и 5). Светофоры с такими светофильтрами применяют, когда видимость сигнала должна быть обеспечена в достаточно узких пределах - на одной-двух полосах движения.

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

Самым распространенным антифантомным устройством является противосолнечный козырек. Однако при низком положении солнца (в направлении восток-запад, запад-восток) может возникнуть одновременное свечение всех сигналов светофора. Известно несколько методов, позволяющих устранить фантомный эффект и получивших распространения в практике регулирования. Как правило, они связаны с некоторыми изменениями в конструкции отражателя или светофильтра. Отражатель с так называемым антифантомным крестом представляет собой взаимно перпендикулярные сегментные пластины с прорезями для размещения галогенной лампы. Луч света, попадающий от постороннего источника на отражатель, отклоняется и поглощается зачерненной поверхностью пластин. В то же время пластины практически полностью пропускают лучи от лампы светофора. Другим решением является установка перед светофильтром рассеивателем специальной антифантомной линзы, имеющей пилообразный профиль. Луч солнца, попадая на наклонную поверхность, отбрасывается на зачерненную горизонтальную ступеньку и поглощается. Известны также методы устранения фантомного эффекта путем установки перед внутренней поверхностью светофильтра перегородки сотовой конструкции, которая пропускает горизонтальный световой поток оптического устройства светофора, однако задерживает солнечные лучи, если они имеют хотя бы небольшое отклонение по горизонтали.

2 . ИССЛЕДОВАНИЕ, ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА СХЕМ

Общее описание:

ATtiny25 - экономичный 8-разр. КМОП микроконтроллеры, выполненные по усовершенствованной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл микроконтроллеры ATtiny25 достигают производительности 1млн. оп. в сек. при тактировании частотой 1МГц, что позволяет разработчику оптимизировать потребляемую мощность и быстродействие.

Ядро AVR комбинирует богатый набор инструкций с 32 регистрами общего назначения, которые непосредственно подключены к арифметико-логическому устройству (АЛУ). Это позволяет осуществлять доступ при выполнении инструкции сразу к двум регистрам и выполнить ее за один машинный цикл. Результирующая архитектура обладает более высокой эффективностью, обеспечивая производительность в более чем 10 раз выше по сравнению с традиционными CISC-микроконтроллерами.

ATtiny25 содержит следующие элементы: 2 кбайт внутрисистемно-программируемой флэш-памяти, 128 байт ЭСППЗУ, 128 байт статического ОЗУ, 6 линий ввода-вывода общего назначения, 32 универсальных рабочих регистров общего назначения, один 8-разр. таймер-счетчик с режимами сравнения, один 8-разр. высокоскоростной таймер-счетчик, универсальный последовательный интерфейс, внутренние и внешние прерывания, 4-канальный 10-разр. АЦП, программируемый сторожевой таймер с внутренним генератором, а также три программно выбираемых экономичных режима. В режиме холостого хода (Idle) останавливается ЦПУ при этом продолжают работу статическое ОЗУ, таймер-счетчик, АЦП, аналоговый компаратор и система прерываний. В режиме пониженной мощности (Power-down) сберегается содержимое регистров, отключаются все встроенные функции до следующего прерывания или аппаратного сброса. В режиме снижения шумов АЦП (ADC Noise Reduction) останавливается ЦПУ и все модули ввода-вывода, кроме АЦП, за счет чего достигается снижение цифровых шумов во время преобразования АЦП.

Микроконтроллер выпускается по технологии высокоплотной энергонезависимой памяти. Встроенная флэш-память может быть перепрограммирована внутрисистемно через последовательный интерфейс SPI с помощью недорого программатора или с помощью программы в загрузочном секторе (самопрограммирование).

ATtiny25 поддерживается полным набором аппаратных и программных отладочных средств, в т.ч. Cи-компиляторы, Ассемблер, программные отладчики/симуляторы, внутрисхемные эмуляторы и оценочные наборы.

2.1 О бзор характеристики микроконтроллера ATtiny 25 V

8-разр. микроконтроллер с внутрисистемно-программируемой флэш-памятью размером 2кбайт

Особенности:

Высокопроизводительный, экономичный 8-разр. AVR-микроконтроллер

Усовершенствованная RISC-архитектура

Обширный набор из 120 инструкций большинство которых выполняются за один цикл

32 x 8 универсальных регистров общего назначения

Полностью статическая работа

Энергонезависимые памяти программ и данных

Внутрисистемно программируемая флэш-память программ размером 2 кбайт (10 тыс. циклов запись/стирание)

128байт внутрисистемно-программируемого ЭСППЗУ (ATtiny25) (100 тыс. циклов записи/стирания)

128байт внутреннего статического ОЗУ (ATtiny25)

Программируемые биты защиты флэш-памяти и ЭСППЗУ

Отличительные особенности периферийных устройств

8-разр. таймер-счетчик с предделителем и двумя каналами ШИМ

8-разр. высокоскоростной таймер-счетчик с отдельным предварительным делителем 2 высокочастотных выхода ШИМ с отдельными регистрами задания порога сравнения

Программируемый генератор паузы

Универсальный последовательный интерфейс с отдельным детектором условия старт

10-разр. АЦП

4 несимметричных канала

2 дифференциальных канала с программируемым усилением (1x, 20x)

Программируемый сторожевой таймер с отдельным встроенным генератором

Встроенный аналоговый компаратор

Специальные функции микроконтроллера

Встроенная отладочная система debugWIRE

Внутрисистемное программирование через порт SPI

Внешние и внутренние источники прерываний

Экономичные режимы: холостой ход (Idle), уменьшение шумов АЦП (ADC Noise Reduction) и пониженная мощность (Power-down)

Усовершенствованная схема сброса при подаче питания

Программируемая схема контроля напряжения питания

Встроенный калиброванный генератор

Ввод-вывод и корпуса

Шесть программируемых линий ввода-вывода

8-выв. корпус PDIP и 8-выв. SOIC

Рабочее напряжение

1.8 - 5.5В для ATtiny25V

2.7 - 5.5В для ATtiny25

Градации по быстродействию

ATtiny25V: 0 - 4 МГц при 1.8 - 5.5В, 0 - 10 МГц при 2.7 - 5.5В

ATtiny25: 0 - 10 МГц при 2.7 - 5.5В, 0 - 20 МГц при 4.5 - 5.5В

Промышленный температурный диапазон

Малый потребляемый ток

Активный режим: 1 МГц, 1.8В: 450 мкА

Режим пониженной мощности: 0.1 мкА при 1.8В

Структурная схема микроконтроллера приведена в приложении Г.

Технико-экономическое обоснование

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

Резисторы

Светодиоды

ЗАКЛЮЧЕНИЕ

В данной курсовой работе был разработан светофор на основе микропроцессора AVR (ATtiny25V), написана и откомпилирована программа для него, рассмотрены вопросы программирования микроконтроллеров, применения полученных знаний на практике. При выполнении данной курсовой работы был получен ценный опыт разработки подобных устройств, получены навыки в разработке программ на языке ассемблер также был закреплены знания, которые получены на занятиях

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ И НОРМАТИВНО-ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ

1. ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам. - Введ. 1996-01-07 -М.: Изд-во стандартов, 1996.- 36

2. ГОСТ 21.1101-92 СПДС. “Основные требования к рабочей документации”.

3. ГОСТ 2.004-88 ЕСКД “Общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах вывода ЭВМ”,

ПРИЛОЖЕНИЯ

Приложение А

Схема прибора

Программа прошивки микроконтроллера (откомпилированный вариант)

Приложение Б

Листинг программы код программы для прошивки микроконтроллера

This program was produced by the

CodeWizardAVR V2.04.8b Evaluation

Automatic Program Generator

© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

Date: 18.11.2011

Chip type: ATtiny25

AVR Core Clock frequency: 8,000000 MHz

Memory model: Tiny

External RAM size: 0

Data Stack size: 32

#include

#include

unsigned char svet=0;

// Declare your global variables here

// Declare your local variables here

// Input/Output Ports initialization

// Port B initialization

// Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out

// State5=T State4=T State3=T State2=0 State1=0 State0=0

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0A output: Disconnected

// OC0B output: Disconnected

// External Interrupt(s) initialization

// Interrupt on any change on pins PCINT0-5: On

// Analog Comparator initialization

// Analog Comparator: Off

//PORTB.0=1; //green

//PORTB.1=1; //red

//PORTB.2=1; //yellow

if(svet<5)svet++;

case 1:PORTB.0=0; PORTB.1=1; PORTB.2=0;delay_ms(1000); break;

case 2:PORTB.2=1; PORTB.0=0; PORTB.1=1;delay_ms(500); break;

case 3:PORTB.1=0; PORTB.0=1; PORTB.2=0;delay_ms(1000); break;

case 4:PORTB.1=0;PORTB.2=0; PORTB.0=0;delay_ms(100); break;

case 5:PORTB.1=0; PORTB.0=1; PORTB.2=0;delay_ms(100); break;

Приложене В

Назначение выводов:

Размещено на Allbest.ru

...

Подобные документы

    Проектирование системы регулирования дорожного движения на перекрестке (системы управления светофорами) на основе микроконтроллера группы PIC 16F84. Принцип действия устройства, функциональная схема и описание ее элементов. Алгоритм и листинг программы.

    курсовая работа , добавлен 24.12.2012

    Проектирование принципиальной схемы устройства индикации на основе 8-битного AVR микроконтроллера типа ATmega16 с питанием от источника питания на 10 V и отображением данных на графическом LCD-дисплее. Разработка программного обеспечения микроконтроллера.

    курсовая работа , добавлен 19.12.2010

    Особенности микроконтроллера ATTINY семейства AVR. Описание ресурсов микроконтроллера ATTINY12: описание процессора, порты ввода/вывода, периферийные устройства, архитектура ядра. Разработка устройства со световыми эффектами на базе микроконтроллера.

    курсовая работа , добавлен 24.06.2013

    Описание интегратора первого порядка. Обзор микроконтроллера AТmega16. Доопределение набора аппаратных средств. Схема включения микроконтроллера. Формирование тактовых импульсов. Организация сброса. Алгоритм работы и проектирование модулей устройства.

    курсовая работа , добавлен 19.12.2010

    Проектирование шахматных часов с функцией будильника. Создание и разводка печатной платы на основе микроконтроллера при помощи программы Proteus, выбор его архитектуры. Разработка схемы и программного кода. Тестирование прототипа на макетной плате.

    дипломная работа , добавлен 22.01.2016

    Порядок описания и разработки структурной и функциональной схемы микропроцессорной системы на основе микроконтроллера К1816ВЕ31. Обоснование выбора элементов, разработка принципиальной схемы данной системы, программы инициализации основных компонентов.

    курсовая работа , добавлен 16.12.2010

    Практические примеры и их программная реализация на языке ассемблера для микроконтроллера семейства MCS-51 (МК51). Использование команд передачи данных. Арифметические и логические, битовые операции в MCS-51. Взаимодействие МК с объектом управления.

    курсовая работа , добавлен 19.02.2011

    Структурная схема микроконтроллерной системы. Схемы подключения микроконтроллера, цифровых и аналоговых сигналов, линейного дисплея и клавиатуры. Текст главной программы на языке Ассемблера для МК51. Программа ввода и обработки аналоговой информации.

    курсовая работа , добавлен 19.12.2013

    Разработка структурной и принципиальной схем электронного тахометра. Изучение принципа работы датчика магнитного поля. Выбор микроконтроллера. Проектирование управляющей программы для микроконтроллера. Адаптация устройства к промышленному применению.

    курсовая работа , добавлен 22.01.2015

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

Многие считают, что Assembler – уже устаревший и нигде не используемый язык, однако в основном это молодые люди, которые не занимаются профессионально системным программированием. Разработка ПО, конечно, хорошо, но в отличие от высокоуровневых языков программирования, Ассемблер научит глубоко понимать работу компьютера, оптимизировать работку с аппаратными ресурсами, а также программировать любую технику, тем самым развиваясь в направлении машинного обучения. Для понимания этого древнего ЯП, для начала стоит попрактиковаться с простыми программами, которые лучше всего объясняют функционал Ассемблера.

IDE для Assembler

Первый вопрос: в какой среде разработки программировать на Ассемблере? Ответ однозначный – MASM32 . Это стандартная программа, которую используют для данного ЯП. Скачать её можно на официальном сайте masm32.com в виде архива, который нужно будет распаковать и после запустить инсталлятор install.exe. Как альтернативу можно использовать FASM, однако для него код будет значительно отличаться.

Перед работой главное не забыть дописать в системную переменную PATH строчку:

С:\masm32\bin

Программа «Hello world» на ассемблере

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

386 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib .data msg_title db "Title", 0 msg_message db "Hello world", 0 .code start: invoke MessageBox, 0, addr msg_message, addr msg_title, MB_OK invoke ExitProcess, 0 end start

Для начала запускаем редактор qeditor.exe в папке с установленной MASM32, и в нём пишем код программы. После сохраняем его в виде файла с расширением «.asm», и билдим программу с помощью пункта меню «Project» → «Build all». Если в коде нет ошибок, программа успешно скомпилируется, и на выходе мы получим готовый exe-файл, который покажет окно Windows с надписью «Hello world».

Сложение двух чисел на assembler

В этом случае мы смотрим, равна ли сумма чисел нулю, или же нет. Если да, то на экране появляется соответствующее сообщение об этом, и, если же нет – появляется иное уведомление.

486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: mov eax, 123 mov ebx, -90 add eax, ebx test eax, eax jz zero invoke MessageBox, 0, chr$("В eax не 0!"), chr$("Info"), 0 jmp lexit zero: invoke MessageBox, 0, chr$("В eax 0!"), chr$("Info"), 0 lexit: invoke ExitProcess, 0 end start

Здесь мы используем так называемые метки и специальные команды с их использованием (jz, jmp, test). Разберём подробнее:

  • test – используется для логического сравнения переменных (операндов) в виде байтов, слов, или двойных слов. Для сравнения команда использует логическое умножение, и смотрит на биты: если они равны 1, то и бит результата будет равен 1, в противном случае – 0. Если мы получили 0, ставятся флаги совместно с ZF (zero flag), которые будут равны 1. Далее результаты анализируются на основе ZF.
  • jnz – в случае, если флаг ZF нигде не был поставлен, производится переход по данной метке. Зачастую эта команда применяется, если в программе есть операции сравнения, которые как-либо влияют на результат ZF. К таким как раз и относятся test и cmp.
  • jz – если флаг ZF всё же был установлен, выполняется переход по метке.
  • jmp – независимо от того, есть ZF, или же нет, производится переход по метке.

Программа суммы чисел на ассемблере

Примитивная программа, которая показывает процесс суммирования двух переменных:

486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Title", 0 A DB 1h B DB 2h buffer db 128 dup(?) format db "%d",0 .code start: MOV AL, A ADD AL, B invoke wsprintf, addr buffer, addr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start

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

Получение значения из командной строки на ассемблере

Одно из важных основных действий в программировании – это получить данные из консоли для их дальнейшей обработки. В данном случае мы их получаем из командной строки и выводим в окне Windows:

486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: call GetCommandLine ; результат будет помещен в eax push 0 push chr$("Command Line") push eax ; текст для вывода берем из eax push 0 call MessageBox push 0 call ExitProcess end start

Также можно воспользоваться альтернативным методом:

486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: call GetCommandLine ; результат будет помещен в eax invoke GetCommandLine invoke MessageBox, 0, eax, chr$("Command Line"), 0 invoke ExitProcess, 0 push 0 call ExitProcess end start

Здесь используется invoke – специальный макрос, с помощью которого упрощается код программы. Во время компиляции макрос-команды преобразовываются в команды Ассемблера. Так или иначе, мы пользуемся стеком – примитивным способом хранения данных, но в тоже время очень удобным. По соглашению stdcall, во всех WinAPI-функциях переменные передаются через стек, только в обратном порядке, и помещаются в соответствующий регистр eax.

Циклы в ассемблере

Вариант использования:

Data msg_title db "Title", 0 A DB 1h buffer db 128 dup(?) format db "%d",0 .code start: mov AL, A .REPEAT inc AL .UNTIL AL==7 invoke wsprintf, addr buffer, addr format, AL invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start .data msg_title db "Title", 0 buffer db 128 dup(?) format db "%d",0 .code start: mov eax, 1 mov edx, 1 .WHILE edx==1 inc eax .IF eax==7 .BREAK .ENDIF .ENDW invoke wsprintf, addr buffer, addr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0

Для создания цикла используется команда repeat. Далее с помощью inc увеличивается значение переменной на 1, независимо от того, находится она в оперативной памяти, или же в самом процессоре. Для того, чтобы прервать работу цикла, используется директива «.BREAK». Она может как останавливать цикл, так и продолжать его действие после «паузы». Также можно прервать выполнение кода программы и проверить условие repeat и while с помощью директивы «.CONTINUE».

Сумма элементов массива на assembler

Здесь мы суммируем значения переменных в массиве, используя цикл «for»:

486 .model flat, stdcall option casemap: none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib include /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Title", 0 A DB 1h x dd 0,1,2,3,4,5,6,7,8,9,10,11 n dd 12 buffer db 128 dup(?) format db "%d",0 .code start: mov eax, 0 mov ecx, n mov ebx, 0 L: add eax, x add ebx, type x dec ecx cmp ecx, 0 jne L invoke wsprintf, addr buffer, addr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start

Команда dec, как и inc, меняет значение операнда на единицу, только в противоположную сторону, на -1. А вот cmp сравнивает переменные методом вычитания: отнимает одно значение из второго, и, в зависимости от результата ставит соответствующие флаги.

С помощью команды jne выполняется переход по метке, основываясь на результате сравнения переменных. Если он отрицательный – происходит переход, а если операнды не равняются друг другу, переход не осуществляется.

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

Post Views: 767

mob_info