Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВБА_МК метода.doc
Скачиваний:
83
Добавлен:
13.04.2015
Размер:
1.45 Mб
Скачать

1.1.5. Принципы программного управления светодиодами, подключенными к внешним выводам портов ввода/вывода микроконтроллера 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=0b01011110; линии 0, 5 и 7 порта В запрограммированы на вывод данных, остальные (1,2,3,6) – на ввод.

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

а=0х12; присвоить переменной а значение 12h;

PORTD = a; вывести данные (значение переменной а) в порт вывода D.

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

b=PINС; записать данные из порта ввода С в переменную b.

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

PORTB.2=0; второй бит порта D сбросить в 0;

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

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

бита порта F;

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