Гирлянда на МК Tiny 2313 и 4 светодиодах

«Нажата ли ты, наша кнопочка, или отжата?», — именно таким вопросом мы задавались в прошлой статье. И в зависимости от состояния кнопки мы делали эффект из 4 светодиодов. В этой статье мы с вами разберем похожую ситуацию. Итак, погнали!

 

 

Помните китайскую гирлянду за 100 рублей?)

 

Нажимаем кнопочку  и эффект моргания становится абсолютно другой 😉 Именно этим мы с вами и займемся в этой статье 😉

 

Мы не будем делать китайску гирлянду с N-ным количеством лампочек, а сделаем упрощенную схему такой гирлянды на МК AVR Tiny2313 и четырех светодиодах. С помощью кнопки мы будем менять эффект моргания.

 

Итак, наша задача буквально звучит так:

Создать гирлянду на МК AVR Tiny2313 из четырех светодиодов и одной кнопки с самовозвратом (кнопка, которую нажал и сама отжимается). Нажимаем один раз кнопку — появляется первый эффект моргания кнопки, нажал второй раз кнопку — появился второй эффект моргания и тд. Всего у нас будет семь эффектов. Условие такое, что пока светодиоды переливаются морганием, у нас МК не реагирует на кнопку. То есть пока не прошел эффект, нажатие на кнопку никак не отображается на эффекте. Эффект НЕ прерывается. Когда эффект закончится, только тогда МК будет обрабатывать нажатие на кнопку.

 

Задача вроде бы ясна. Для начала составим простенькую схемку в Proteus. Схемка будет выглядеть примерно как-то так (кликните для увеличения, откроется в новом окне):

 

Все? Нет не все! Теперь шьем наш МК HEX-файлом. А где его взять? Из Atmel Studio 6. Но чтобы его создать, нам потребуется для начала написать программу, по которой будет работать наш МК. Как все это сделать, смотрим в этой статье.  Ниже приведен текст программы, справа  — комментарии.  Я пытался подробно расписать каждую строчку кода.

 

 А вот собственно и программка в  AVR Studio 6:

  • #include       //Подключаем библиотеки
  • #define F_CPU 8000000UL //Устанавливаем частоту 8 МегаГерц
  • #include //Подключаем библиотеки
  • int main(void)          //открываем основное тело программы
  • {
  •     PORTB=0b00000000;   //Притягиваем все 8 выводов порта В к 0
  •     DDRB=0b00001111;    // Конфигурируем 0-4 на выход
  •                         //а выход а 5-8 на вход
  •                         //думаю, вы не забыли
  •                         //что счет идет СПРАВА-НАЛЕВО
  •     PORTA=0b00000000;   //Притягиваем все 8 выводов порта А к 0
  •     DDRA=0b00000000;    //Конфигурируем все выводы порта А на вход
  •     unsigned char k=0; //Объявляем переменную «К»
  •                         //и присваиваем ей ноль
  •                         //то есть в данный момент K — это НОЛЬ.
  •  
  •     while(1)            //Открываем бесконечный цикл
  •     {
  •         M5:             //Метка для перехода М5.
  •                         //То есть объявляем метку
  •                         //и ставим двоеточие после нее.
  •  
  •  if (PINA&(1<
    Источник

  • Оставить комментарий

    Вы можете использовать следующие теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>