Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Практическая работа №13




Тема: Программирование микроконтроллера.

Цель работы: Выполнить программирование контроллера.

Краткая теория

Систему охранной сигнализации выполним на базе датчика движения, расположенного в модуле исполнительных механизмов и световой сигнализации. На выходе этого датчика наблюдается аналоговое напряжение. Если вокруг датчика обстановка стабильная, то это напряжение изменяется со временем не сильно, колеблется около некоторого среднего значения.

Ход работы

1. Подключите ноутбук к стенду.

2. Войдите в режим программирования.

3. Соберите схему автоматической системы охранной сигнализации с применением звуковой сигнализации:

Рисунок 25

Выход датчика движения (контакт J24) подключите к входу АЦП PA0.

Усилитель мощности (контакт J14) подключите к контакту PD2 порта D.

Подключите выход усилителя мощности (контакт J15) к контакту J21.

Контакт PD5 подключите к зуммеру J4.

Необходимо также предусмотреть механизм остановки сигнала тревоги. Для этого к контакту PD7 порта D подключите кнопку остановки тревоги SW3 (17).

4. Зарисуйте подробную схему автоматической системы охранной сигнализации с применением звуковой сигнализации в отчет.

5. Откройте AVR Studio.

6. Откройте проект Lab13.

7. Внимательно изучите текст программы.

#include "GLOBL.h"

// кнопка подключена к контакту PD7 порта D

#define BUTTON D, 7

// включение световой сигнализации - контакт PD2 порта D

#define LED D, 2

int main()

{ // переменные для предыдущего и следующего измерения int ADC_U, ADC_U_Old; // настройка АЦП;

ADMUX = _BV(REFS0);

ADCSRA = _BV(ADEN) | _BV(ADPS1) | _BV(ADPS2); ADCSRA |= _BV(ADSC); // запуск преобразования

// включили подтягивающий резистор для кнопки

SETPORT(BUTTON);

// настроили на выход контакт световой сигнализации

SETDDR(LED);

// настроили ШИМ

DDRD |= _BV(5); // выход ШИМ

TCCR1A = _BV(WGM10) | _BV(WGM11) | _BV(COM1A1);

OCR1A = 512;

// первое измерение АЦП

ADCSRA |= _BV(ADSC); // запуск преобразования while((ADCSRA & _BV(ADSC))!= 0); ADC_U_Old = ADC;

// Бесконечный цикл for(;;)

{ // следующее измерение

ADCSRA |= _BV(ADSC); // запуск преобразования while((ADCSRA & _BV(ADSC))!= 0); ADC_U = ADC; // измерили

// если разница велика, 50 - это порог if(abs(ADC_U - ADC_U_Old) > 50)

{ // Было движение for(;;) { if(TSTPIN(BUTTON)!= 0)

{ // если ещё не нажали кнопку

// мигаем звуком и светом

// включить звук

TCCR1B = _BV(CS11);

// включить свет

SETPORT(LED);

_delay_ms(500);

// сделать паузу: выключить звук TCCR1B = 0;

// выключить свет

CLRPORT(LED);

_delay_ms(500); } else

{ // нажали на кнопку останова тревоги

// выключаем звук TCCR1B = 0;

// выключаем свет

CLRPORT(LED);

ADCSRA |= _BV(ADSC);

// запуск преобразования while((ADCSRA & _BV(ADSC))!= 0);

ADC_U_Old = ADC;

break; // выход из внутреннего цикла

}

}

}

}

}

8. Выполните компиляцию.

9. Запрограммируйте контроллер.

10. Выйдите из режима программирования.

11. Поднесите любой предмет к датчику движения. Если все выполнено правильно, должна сработать сигнализация.

12. Отключите сигнализацию, нажав на кнопку SW3.

13. Измените код программы так, чтобы увеличить временную паузу между свечением и гашением светодиода и включением звука. Для этого измените число 500 в цикле работы сигнализации на 5000.

{ // если ещё не нажали кнопку

// мигаем звуком и светом

// включить звук

TCCR1B = _BV(CS11);

// включить свет

SETPORT(LED);

_delay_ms(500);

// сделать паузу: выключить звук TCCR1B = 0;

// выключить свет

CLRPORT(LED);

_delay_ms(5000); }

14. Перепрограммируйте контроллер.

15. Проверьте, что пауза между свечением и гашением светодиода при срабатывании сигнализации увеличилась.

16. Продемонстрируйте результат преподавателю.

17. Запишите измененный код программы в отчет.

18. Оформите отчет.

Контрольные вопросы

1. Какой файл необходимо открыть для запуска проекта?

2. Почему светодиод подключается через усилитель?

3. Как изменить паузу между включением и гашением светодиода?






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных