Принципи програмного керування світлодіодами, підключеними до зовнішніх виводів портів вводу/виводу мікроконтролера AVR ATMEGA128

Відповідно до технічної документації на вихідних лініях мікроконтролерів AVR при рівні напруги, що відповідає “логічному нулю”, струм навантаження становить порядку 20 мА. Стандартні світлодіоди споживають струм у межах 3÷20 мА при робочій напрузі порядку 1,5÷4 В. Це дозволяє безпосередньо підключати світлодіод до вихідної лінії порту послідовно з обмежуючим струм резистором (див. рисунок 1.5). Другий вивід ланцюга необхідно приєднати до позитивного полюса джерела живлення (+5 В).

Для керування світлодіодом необхідно подавати на відповідний вивід мікроконтролера рівні “логічного нуля” або “логічної одиниці”. З появою на виводі мікроконтролера, до якого підключений світлодіод, рівня «логічного нуля», спадання напруги на світлодіоді буде достатнім для світіння. При формуванні на відповідному виводі мікроконтролера напруги “логічної одиниці” спадання напруги на світлодіоді не буде, і він буде погашений.

 

 

Рисунок 1.5 - Схема підключення світлодіода до виходу порту

вводу/виводу мікроконтролера AVR

 

 

Для керування рівнями напруги на вихідних лініях мікроконтролера можна застосовувати алгоритми маскування або, безпосередньо, команди для роботи з бітами (cbi, sbi), описані в підрозділі 1.1. 3.3. Пряме звертання до регістрів портів вводу/виводу мовою Assembler забезпечується за допомогою команд in і out (див. підрозділ 1.1. 3.1). Компілятор мови С допускає використання ідентифікаторів регістрів вводу/виводу: DDRX – регістр керування напрямком передачі даних, PORTX регістр виводу даних, PINX – регістр вводу даних, де Х – позначення порту вводу/виводу. Наприклад, програмно доступні регістри порту А позначаються як: DDRA, PORTA, PINA (див. таблицю 1.1). Якщо лінія порту вводу/виводу Х програмується на вивід, то у відповідному біті регістра керування напрямком передачі даних DDRX повинна бути встановлена 1, якщо на уведення – тоді 0. Розглянемо приклади:

unsigned char a, b; декларація змінних а й b розміром у байт;

DDRB=0b0101110; лінії 0, 5 і 7 порту В запрограмовані на вивід даних, інші (1,2,3,6) – на уведення.

DDRD=0xFF; установка всіх ліній порту D у режим виводу даних;

а=0х12; привласнити змінній а значення 12h;

PORTD = a; вивести дані (значення змінної а) у порт виводу D.

DDRС=0; установка всіх ліній порту С у режим вводу даних;

b=PINС; записати дані з порту вводу С у змінну b.

Для роботи з окремими розрядами регістрів портів вводу/виводу мовою С можна використати конструкції: PORTX.N і PINX.N, де N – номер біта. Наприклад,

PORTB.2=0; другий біт порту D скинути в 0;

PORTB.4=1; четвертий біт порту D установити в 1;

PORTD.5=PINF.3; п'ятому біту порту D привласнити значення третього біта порту F;

Найбільш універсальним способом роботи з окремими розрядами регістрів портів вводу/виводу є використання масок і поразрядных логічних операцій.

 

1.2 Опис лабораторної установки

Лабораторна робота виконується в індивідуальному порядку. На кожному робочому місці повинні бути встановлені: багатофункціональний лабораторний макет на базі мікроконтролера AVR ATMEGA 128, ПЕОМ типу IBM PC/AT c інстальованим програмним забезпеченням: операційною системою MS-WINDOWS v. 9x, 2000, XP і программатором на основі крос-компілятора мови програмування C CodeVision AVR.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: