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

Особенности применения светодиодной индикации в микроконтроллерных системах. Характеристика основных приемов программирования универсальных портов ввода-вывода микроконтроллеров AVR. Этапы проектирования елочной гирлянды с микроконтроллерным управлением.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 17.11.2012
Размер файла 291,7 K

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

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

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

2

Цель работы: изучить основные приемы программирования универсальных портов ввода-вывода микроконтроллеров 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 МГц. Тогда время одного такта

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

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

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

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

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

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

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

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

program Lab1Var6;

var c:byte;

s:integer;

begin

Lcd4_Custom_Init(PORTA,7,6,5,4,PORTA,0,1,2);

ddrD:=0xff;

portd:=0xff;

ddrC:=%11110111;

s:=0;

while (true) do

begin

Lcd4_Custom_Cmd(LCD_CLEAR);

Lcd4_Custom_Out(1,1,'Prygauyshiy');

Lcd4_Custom_Out(2,1,'ogonek');

c:=pinc;

c:=c and not(%11110111);

if c=%00001000 then

while s<>1 do begin

portD:=0xff;

portd:=portd and not(1 shl 1);

delay_Cyc(160000);

portd:=portd or (1 shl 1);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 4);

delay_Cyc(160000);

portd:=portd or (1 shl 4);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 7);

delay_Cyc(160000);

portd:=portd or (1 shl 7);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 0);

delay_Cyc(160000);

portd:=portd or (1 shl 0);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 5);

delay_Cyc(160000);

portd:=portd or (1 shl 5);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 2);

delay_Cyc(160000);

portd:=portd or (1 shl 2);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

portd:=portd and not(1 shl 1);

delay_Cyc(160000);

portd:=portd or (1 shl 1);

delay_Cyc(160000);

c:=pinc;

c:=c and not(%11110111);

if c=0 then break;

end else

while s<>1 do

begin

Lcd4_Custom_Cmd(LCD_CLEAR);

Lcd4_Custom_Out(1,1,'Pojarnaya');

Lcd4_Custom_Out(2,1,'signalizaciya');

portd:=0xff;

portd:=portd and not(1 shl 1);

portd:=portd and not(1 shl 2);

portd:=portd and not(1 shl 3);

portd:=portd and not(1 shl 4);

portd:=portd and not(1 shl 5);

delay_Cyc(108000);

c:=pinc;

c:=c and not(%11110111);

if c=%00001000 then break;

portd:=portd or(1 shl 1);

portd:=portd or(1 shl 2);

portd:=portd or(1 shl 3);

portd:=portd or(1 shl 4);

portd:=portd or(1 shl 5);

delay_Cyc(108000);

c:=pinc;

c:=c and not(%11110111);

if c=%00001000 then break;

portd:=portd and not(1 shl 4);

portd:=portd and not(1 shl 5);

portd:=portd and not(1 shl 6);

portd:=portd and not(1 shl 7);

portd:=portd and not(1 shl 0);

delay_Cyc(108000);

c:=pinc;

c:=c and not(%11110111);

if c=%00001000 then break;

portd:=portd or(1 shl 4);

portd:=portd or(1 shl 5);

portd:=portd or(1 shl 6);

portd:=portd or(1 shl 7);

portd:=portd or(1 shl 0);

delay_Cyc(108000);

c:=pinc;

c:=c and not(%11110111);

if c=%00001000 then break;

end;

end;

end.

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

.MICRO "ATmega16"

.TOOLCHAIN "GENERIC"

.TARGET "LAB1VAR6.hex"

.CLOCK 4meg

.POWER VDD = 5 VSS = 0;

D8 VDD uzel_0

R8 uzel_0 PD0 330

D1 VDD uzel_1

R1 uzel_1 PD1 330

D2 VDD uzel_2

R2 uzel_2 PD2 330

D3 VDD uzel_3

R3 uzel_3 PD3 330

D4 VDD uzel_4

R4 uzel_4 PD4 330

D5 VDD uzel_5

R5 uzel_5 PD5 330

D6 VDD uzel_6

R6 uzel_6 PD6 330

D7 VDD uzel_7

R7 uzel_7 PD7 330

K0 PC3 VSS LATCHED

R9 VDD PC3 2K

Xdisp LCD(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. В результате чего по заданию была спроектирована елочная гирлянда с микроконтроллерным управлением, реализующим два режима работы: «Прыгающий огонек» и «Пожарная сигнализация». Переключение между режимами осуществляется при нажатии кнопки на панели управления. Результат работы представлен в виде диаграмм сигналов с заданной задержкой на виртуальном осциллографе.

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


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

  • Архитектура микроконтроллеров AVR и PIC. Описание и структура регистров из области ввода/вывода. Внутренняя и внешняя память SRAM микроконтроллеров AVR. Особенности аналого-цифрового преобразования. Переключение в режим параллельного программирования.

    лекция [755,2 K], добавлен 28.05.2010

  • Использование стандартных библиотек Windows. Установка и настройка дополнительных устройств ввода/вывода. Использование камеры, динамиков, сканера, дисков и портов ввода/вывода. Драйверы внешних устройств. Безопасность данных в операционных системах.

    контрольная работа [1,8 M], добавлен 13.10.2022

  • Отличительные особенности микроконтроллеров AVR семейства Mega. Характеристики процессора, подсистемы ввода-вывода. Архитектура ядра и организация памяти. Регистры общего назначения. Алгоритмы моделирования команд. Реализация модели внешнего устройства.

    курсовая работа [3,7 M], добавлен 24.06.2013

  • Назначение, особенности, структура и функционирование различных моделей микроконтроллеров. Средства их отладки и программирования. Способы адресации и система команд. Набор периферийных устройств. Порты ввода/вывода. Модуль формирования ШИМ-сигналов.

    курсовая работа [201,9 K], добавлен 25.12.2014

  • Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.

    лабораторная работа [40,4 K], добавлен 06.07.2009

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

    курсовая работа [171,2 K], добавлен 22.08.2010

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

    курсовая работа [71,8 K], добавлен 18.04.2015

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

    курсовая работа [400,6 K], добавлен 10.11.2016

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

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Изучение подсистемы ввода-вывода и файловой системы ОС семейства Windows NT. Анализ особенностей работы приложения TotalCommander и его взаимодействия с файловой системой и подсистемой ввода-вывода. Взаимодействие TotalCommander с сетевыми адаптерами.

    лабораторная работа [1,1 M], добавлен 12.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.