Програмування мікроконтролерів
ВСТУП
В моєму завданні треба реалізувати функцію світлофору з
регулюванням часу між сигналами. Для свого курсового проекту я обрав найбільш
широко використовуваний варіант світлофору, це автомобільний світлофор.
Світлофор - пристрій оптичної сигналізації, призначений для
регулювання руху людей, велосипедів, автомобілів і інших учасників дорожнього
руху, поїздів залізниці та метрополітену, річкових і морських суден, трамваїв,
тролейбусів, автобусів і всього транспорту. Використовується у всіх країнах світу.
Щодо їх конструкції, то світлофори бувають на лампах
розжарювання і галогенних лампах та світлодіодні.
Блок управління світлофорних об'єктів:
Мовою дорожніх служб світлофорним об'єктом називаються кілька
світлофорів, які управляються загальним електронним блоком і діють як єдине
ціле. Найпростіший спосіб управління світлофором - електромеханічний, за
допомогою кулачкового механізму. Більш просунуті електромеханічні контролери
мали кілька програм роботи (кілька пакетів кулачків) - під різні навантаження перехрестя.
У сучасних світлофорах застосовуються мікропроцесорні схеми. У великих містах,
які страждають від «пробок», світлофорні об'єкти підключають до єдиної системи
регулювання руху (як правило, через GSM-модем). Це дозволяє оперативно
змінювати програми роботи світлофора (у тому числі тимчасово, на кілька годин
або днів) і синхронізувати світлофорні об'єкти один з одним з точністю до
секунд. ля проходу пішоходів через жваву трасу, а також на нерівнозначних
перехрестях застосовуються контролери викличної дії, що дають зелений, коли із
другорядного напрямку наближається машина (для цього під асфальтом
розташовується індуктивний датчик), або коли пішохід натисне на кнопку.
. РОЗРОБКА ПРОГРАМНОЇ СХЕМИ
Для реалізації функції світлофора було обрано мікроконтролерATMEL
90s83535. Даний мікроконтролер має 4 порти для роботи з даними, в своїй роботі
я задіяв 2 порти, обидва були налаштовані на вивід даних. За допомогою одного я
подавав сигнали на різнокольорові світло-діоди, з певною затримкою, таким чином
була реалізована функція світлофора. А за допомогою іншого я подавав комбінації
при яких загорався той чи інший світло-діод мого світлофора(див. рис. 1.1).
Рис. 1.1. програмна схема для реалізації функції світлофора.
. ПРОГРАМА-СИМУЛЯТОР МІКРОКОНТРОЛЕРНИХПРИСТРОЇВ
Для
побудови схеми було використано програмне середовище Proteus VSM-
програма-симулятор мікроконтролернихпристроїв. А якщо точніше, тоProteus 7.7
ServicePack 2.
Програмне
середовище Proteusна рис 2.1.
Рис.
2.1. Програмне середовище Proteus.
Зверху
ми бачимо панель меню з головними налаштуваннями та функціями(див. рис 2.2).
Рис.
2.2. Верхня панель-меню.
Зліва
знаходиться панель часто використовуваних, та основних компонентів для побудови
схем (див. рис 2.3).
Рис. 2.3 Панель компонентів
І знизу ми бачимо панель керування симуляцією, тобто, роботою
схеми. Це запуск, покрокова робота схеми, пауза і стоп(див. рис 2.4). Також
справа від них знаходиться рядок стану, де відображається кількість повідомлень
щодо несправності, чи якихось інших випадків, що виникають під час роботи
схеми.
Рис. 2.4 Панель управління симуляцією
І саме головне, це підключення .hex файлу до нашого
мікроконтролеру. Цей процес реалізований дуже просто, достатньо два рази
клацнути на наш мікроконтролер і у вікні налаштувань навпроти «Programfile»
вказати шлях до створеного .hex файлу(див рис 2.5).
Рис. 2.5 Вікно характеристик мікроконтролера
3.
СЕРЕДОВИЩЕ ПРОГРАМУВАННЯ МІКРОКОНТРОЛЕРІВ
Програмна
частина мого завдання реалізовувалась в програмному середовищі CodeVisionAVRv.
2.05.3 Standart (див. рис 3.1).
Рис.
3.1 Програмне середовище CodeVisionAVR
Зверху
ми бачимо знайому нам всім панель меню з основними функціями.
Зліва
знаходиться панель, в якій відображається компоненти нашого проекту, а сама
підключені заготовочні файли, бібліотеки, файли вихідного коду тощо.
З
правого боку є панель для швидкої вставки заготовлених блоків циклів,
операторів порівняння тощо. Це пришвидшує, та спрощую написання програмного
коду.
Знизу
є панель помилок та попереджень, як і в багатьох програмних середовищах для
розробки програмного забезпечення.
Після
запуску процесу компіляції і створення потрібного нам .hex файлу, для роботи
нашої схеми, з’являється вікно з повідомленням про результат компіляції нашого
програмного коду (див рис 3.2).
світлофор
мікроконтролер схема порт
Рис.
3.2 Результат компіляції програмного коду
Якщо
ж під час компіляції були знайдені помилки в програмному коді, то це вікно буде
виглядати дещо інакше.
4.
РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Отже,
мною було розроблено програму для реалізації програмної частини завдання, а
саме функції світлофора. Як я писав вище, я задіяв два порти, в саме порт А і
портD. Обидва порти налаштовані на вивід інформації.
На
порт А подавалась комбінація для загорання того чи іншого кольорового
світло-діода. На порт Dподавалась та ж комбінація і ця комбінація відображалась
на 8 світло-діодах, таким чином імітувалась робота з LPT портом. Тобто,
приходить відповідна комбінація на LPT порт, загораються певні світло-діоди, і
згідно прийнятої комбінації загорається один із світло-діодів світлофора. Все
це відбувається з певною затримкою.
Блок-схема
для програми:
Програмний
код на мові С(Сі):
#include<90s8535.h>
#include<delay.h>
();();();
(void)
{=0b11111111;//
настраиваем порт А на вывод=0b11111111;// настраиваем порт D на
вывод=0b11111111;// разрешаемпрерывания
(1)
{
//имитацияроботысветофора();();();
}
}
()
{
//гориткрасный=0b00010101;=0b00010101;_ms(5000);=0b00000000;=0b00000000;_ms(250);
}
()
{
//горитжелтый=0b00101010;=0b00101010;_ms(5000);
//мигаетжелтый=0b00000000;=0b00000000;_ms(250);=0b00101010;=0b00101010;_ms(1000);
=0b00000000;=0b00000000;_ms(250);=0b00101010;=0b00101010;_ms(1000);=0b00000000;=0b00000000;_ms(250);=0b00101010;=0b00101010;_ms(1000);=0b00000000;=0b00000000;_ms(250);
}()
{
//горитзеленый=0b11000000;=0b11000000;_ms(5000);
//мигаетзеленый=0b00000000;=0b00000000;_ms(250);=0b11000000;=0b11000000;_ms(1000);=0b00000000;=0b00000000;_ms(250);=0b11000000;=0b11000000;_ms(1000);=0b00000000;=0b00000000;_ms(250);=0b11000000;=0b11000000;_ms(1000);=0b00000000;=0b00000000;_ms(250);
}
ВИСНОВКИ
Під
час роботи над курсовим проектом було застосовано знання з програмування
мікроконтролерів, а саме прийом та передача даних з портів мікроконтролера, з
попереднім їх налаштуванням на введення/виведення даних, встановлення
переривань та управління часовими затримками.
Тобто,
було реалізовано функцію світлофора за допомогою відповідного програмування
мікроконтролеа. В моєму випадку, в якості світлофора виступали 3 колорьових
світлодіода, що загорались з певною часовою затримкою, що регулювалась
запрограмованим мікроконтролером.
Для
написання прошивки для використовуваного мікроконтролера я користувався
знаннями з мови програмування С(Сі).
Також
була проведена робота з іншими джерелами щодо роботи та програмування
мікроконтролері.