Основные приемы программирования универсальных портов ввода-вывода микроконтроллеров AVR

 

Цель работы: изучить основные приемы программирования универсальных портов ввода-вывода микроконтроллеров AVR.

Задание:

Спроектировать елочную гирлянду с микроконтроллерным управлением, реализующим два режима работы: «Прыгающий огонек» и «Пожарная сигнализация». Гирлянда должна состоять из 8 светодиодных индикаторов, подключенных к порту ввода-вывода D микроконтроллера. Переключение между режимами осуществляется с помощью двухпозиционного ключа, который соединен с линией PC3. Название текущего режима отображается на ЖК-дисплее c использованием транслитерации. Временную задержку формировать с использованием стандартной процедуры компилятора mikroPascal delay_Cyc.

Режим «Прыгающий огонек»: «огонек» перескакивает с одного индикатора на другой в следующей последовательности D1 - D4 - D7 - D8 - D5 - D2 - D1. После того, как «огонек» возвращается в исходное состояние, все повторяется вновь. Пауза, в течение которой «огонек» не движется, составляет 40 мс.

Режим «Пожарная сигнализация»: сначала в течение 27 мс горят светодиоды 1, 2, 3, 4, 5, потом в течение того же времени горят светодиоды 4, 5, 6, 7, 8, после чего все повторяется с начала.

программирование микроконтроллер гирлянда


Принципиальная схема


Принцип работы и описание спроектированного устройства

Светодиодные индикаторы D0 - D7 подключается к выводу PD0 - PD7 микроконтроллера. Резисторы R1 - R8 ограничивают ток, протекающий через светодиод, на уровне 20 мА (ток потребления светодиода). После того как на выводе PD0 - PD7 устанавливается уровень логической единицы, ток через светодиод не протекает и светодиод не светится. При появлении низкого потенциала на данном выводе микроконтроллера через диод начинает протекать ток, что вызывает его свечение.

Микроконтроллер кроме выдачи управляющих воздействий может также принимать сигналы извне. Эта задача часто возникает при подключении различного рода датчиков. Рассмотрим случай подключения дискретного датчика, роль которого будет играть дискретная кнопка с фиксацией (двухпозиционный ключ). При замыкании контактов кнопки должен «загораться» светодиод, при размыкании - «гаснуть». Рассмотрим приведенную схему подробней. Кнопка SС0 подключена к линии PC3. Когда она находится в разомкнутом состоянии, то на линии присутствует высокий уровень сигнала. При замыкании кнопки на линии PC3 потенциал падает до нуля, микроконтроллер воспринимает это как низкий логический уровень. Резистор R9 сопротивлением 2 кОм ограничивает ток короткого замыкания.

Применение светодиодной индикации в микроконтроллерных системах часто бывает недостаточно, например, для вывода числовой и символьной информации, для этого применяют сегментные или жидкокристаллические индикаторы (ЖКИ). Наиболее популярными из алфавитно-цифровых ЖКИ-модулей являются модули, построенные на базе контроллера HD44780. Контролер HD44780 потенциально может управлять 2-мя строками по 40 символов в каждой, поддерживает символы с матрицей 5х7 точек.

Расчет длительности временных интервалов пауз

Для формирования задержки 40мс и 27мс с помощью команды delay_Cyc необходимо провести операции:

Частота тактирования микроконтроллера (частота кварца) FCLK составляет 4 МГц. Тогда время одного такта

= 1/FCLK = 1/(4?106) = 250 нс.


Далее необходимо подсчитать количество тактов, необходимых для реализации требуемой задержки


NCLK = TD / TCLK = 40000/0,25 = 160000.= TD / TCLK = 27000/0,25 = 108000.



Осциллограммы


Режим «Прыгающий огонек»:


Режим «Пожарная сигнализация»:


Текст управляющей программы для компилятора mikroPascal


program Lab1Var6;c:byte;:integer;_Custom_Init(PORTA,7,6,5,4,PORTA,0,1,2);:=0xff;:=0xff;:=%11110111;:=0;(true) do_Custom_Cmd(LCD_CLEAR);_Custom_Out(1,1,'Prygauyshiy');_Custom_Out(2,1,'ogonek');:=pinc;:=c and not(%11110111);c=%00001000 thens<>1 do begin:=0xff;:=portd and not(1 shl 1);_Cyc(160000);:=portd or (1 shl 1);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 4);_Cyc(160000);:=portd or (1 shl 4);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 7);_Cyc(160000);:=portd or (1 shl 7);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 0);_Cyc(160000);:=portd or (1 shl 0);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 5);_Cyc(160000);:=portd or (1 shl 5);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 2);_Cyc(160000);:=portd or (1 shl 2);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;:=portd and not(1 shl 1);_Cyc(160000);:=portd or (1 shl 1);_Cyc(160000);:=pinc;:=c and not(%11110111);c=0 then break;elses<>1 do_Custom_Cmd(LCD_CLEAR);_Custom_Out(1,1,'Pojarnaya');_Custom_Out(2,1,'signalizaciya');:=0xff;:=portd and not(1 shl 1);:=portd and not(1 shl 2);:=portd and not(1 shl 3);:=portd and not(1 shl 4);:=portd and not(1 shl 5);_Cyc(108000);:=pinc;:=c and not(%11110111);c=%00001000 then break;:=portd or(1 shl 1);:=portd or(1 shl 2);:=portd or(1 shl 3);:=portd or(1 shl 4);:=portd or(1 shl 5);_Cyc(108000);:=pinc;:=c and not(%11110111);c=%00001000 then break;:=portd and not(1 shl 4);:=portd and not(1 shl 5);:=portd and not(1 shl 6);:=portd and not(1 shl 7);:=portd and not(1 shl 0);_Cyc(108000);:=pinc;:=c and not(%11110111);c=%00001000 then break;:=portd or(1 shl 4);:=portd or(1 shl 5);:=portd or(1 shl 6);:=portd or(1 shl 7);:=portd or(1 shl 0);_Cyc(108000);:=pinc;:=c and not(%11110111);c=%00001000 then break;;

end;.


Листинг файла проекта VMLab содержащий описание устройства


.MICRO "ATmega16"

.TOOLCHAIN "GENERIC"

.TARGET "LAB1VAR6.hex"

.CLOCK 4meg

.POWER VDD = 5 VSS = 0;VDD uzel_0uzel_0 PD0 330VDD uzel_1uzel_1 PD1 330VDD uzel_2uzel_2 PD2 330VDD uzel_3uzel_3 PD3 330VDD uzel_4uzel_4 PD4 330VDD uzel_5uzel_5 PD5 330VDD uzel_6uzel_6 PD6 330VDD uzel_7uzel_7 PD7 330PC3 VSS LATCHEDVDD PC3 2KLCD(16 2 250K) PA0 PA1 PA2 PA7 PA6 PA5 PA4 nc3 nc2 nc1 nc0

.PLOT V(PD1)

.PLOT V(PD2)

.PLOT V(PD4)

.PLOT V(PD5)

.PLOT V(PD7)

.PLOT V(PD0)

.PLOT V(PC3)




Вывод


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


Цель работы: изучить основные приемы программирования универсальных портов ввода-вывода микроконтроллеров AVR. Задание: Спроектировать елочную гирлянду с

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ