Четверг, 28.03.2024, 22:20
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052

или пополни нашу SMS копилку
SMS.копилка

Ссылки

 Каталог статей
Главная » Статьи » Учимся работать с AVR

Примитивная сигнализация, или учимся работать с кнопками.
В этой статье я научу Вас  как подключать кнопки к микроконтроллеру  и чтобы он реагировал на ваши действия.
Вот, недолго думая, хочу предложить вам схему элементарной сигнализации.
Алгоритм работы таков: есть кнопка(контакт), в исходном положении он замкнут, если же он размыкается - загорается лампочка, если даже потом контакт замкнут - лампочка будет продолжать мигать.

Схема устройства:

Контакт присоединяем  к порту B.0 а светодиод к D.0
Не забудте подключить питание +5в 7-я ножка, корпус, 8-я.

Кварц и конденсаторы нам не понадобятся, почему? Читайте  статью  о фюзах.
Вот листинг программы

#include <mega8.h> //Включаем библиотеку для работы с микроконтроллером ATMega8
#include <delay.h>
void main(void)

{       

// Port B настройка
  PORTB=0xFF;         //вкл. подтягивающие резисторы
  DDRB=0x00;           // весь порт как вход

// Port D настройка
  PORTD=0x00;        //откл. подтягивающие резисторы
  DDRD=0xFF;          // весь порт как выход
 


  while(PINB.0==0) // проверяем состояние кнопки
  {
  
  }

while(PINB.0==1) // если кнопка разомкнутая выполняется бесконечный цикл
   { 
      while(1)     //уже знакомый нам цикл  мигалки
        {  
          PORTD.0=1;
          delay_ms(100);
          PORTD.0=0;
          delay_ms(100); 
        }
    }                                            

 
}

Желательно поставить ограничительный резистор последовательно светодиоду, чтобы не спалить МК, резистор должен быть не менее 150 Ом

Категория: Учимся работать с AVR | Добавил: my-avr (15.08.2008)
Просмотров: 27982 | Комментарии: 15 | Рейтинг: 4.5/2 |
Всего комментариев: 13
12 maxim  
0
учите Asm...

13 qwe5130  
0
а высокоуровневый язык программирования развлекухи ради придумали?

11 супер  
0
подскажите плз как сделать тоже самое на аттини2313,не получаетя...

10 JDVU  
0
а как сделать что бы при первом нажатии светодиод горел. а при втором нажатии на ту же самую кнопку он перестал мигать?
Пробовал так но не получилось выключать его:
#include <mega8.h>
#include <delay.h>
void main(void) {

PORTB=0xFF;
DDRB=0x00;

PORTD=0x00;
DDRD=0xFF;

while(PINB.3==1) { }

while(PINB.3==0) {
while(1) {
if(PORTD.3==1) {
PORTD.3=0;
}
};
}

}


8 `СЕКРЕТ!  
0
д.0 это не включение светика включение вот PORTD.0=0;вот

9 HiSER  
0
Что? Не понятно что написал...

7 foxit  
0
не получается сделать тоже но с несколькоми кнопками и светодиодами.
Помогите.

5 Вячеслав  
0
Что за язык? Что-то непохоже на язык C.
Что означают следующие строки кода?:
PORTD=0x00; //откл. подтягивающие резисторы
PORTD.0; //выключаем светодиод

6 my-avr  
0
PORTD.0; это была ошибка

А язык С - CodeVisionAVR


4 zhu4ara  
0
Весь цикл статей написан для CVAVR, а для AVRStudio немного переработать надо!

3 Павел  
0
Владимир, программа интересная, но бес коментариев очень плохо читаема. смисл некоторых переменных так и не смог понять. буддте добры немного руских слов. особенно что касается дребезга контактов. Заранее большое спасибо.

2 Владимир В.  
0
вчера пробовал подобное сделать, некоторые ошибки были, а именно AVR Studio не поняло что значит
"PINB.0==0)" а конкретно выражение с точкой!!! Да и вообще, плохой по моему пример. Лучше на нажатие реакцию писать + защиту от дребезга обеспечить! ЧТо-то типа:

int key(int pp)
{
buf = 0;
c = 0;
c = PINC;
if ( c != 63 )
{
c = PINC;
delay(10);
buf = PINC;
if (buf =c )
{
if (c==63-1)pp=pp+2;
if (c==63-2)pp=pp-2;
if (pp==0)pp=2;
}
}
pp=pp;
delay(300);
return pp;
}

63 - в зависимостри от кнопки на которую жмем ну и порт и все такое.


1 Владимир В.  
0
Спасибо ползно оказалось лично для меня. Првда на данный момент я осваивю Тини 2313, попробоую преобразовать код под него, и еще один момент, хочу сделать не на размыкание а на замыкание... плюс защиту от дребезга, что бует немного сожнее данного варианта.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright My-AVR © 2024
Наша кнопка
У нас появилась кнопка, код кнопки:

Лаборатория самоделок на микроконтроллерах AVR

Форма входа
Наш опрос
Какой МК вы используете?
Всего ответов: 3228
Статистика/Друзья
CY-PR.com



Онлайн всего: 1
Гостей: 1
Пользователей: 0

РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум Сайт по радиоэлектронике. У нас все просто и интересно… ARV Reserch: Электроника — просто, полезно, увлекательно. Электронные устройства и программные средства для радиолюбителей и профессионалов, только авторские разработки, плагиата нет! Разработки на заказ. AVR projects Создание электронных роботов своими руками Схемы и программы на AVR http://ur5yfv.ucoz.ua/BANNER.gif Блог начинающего эмбеддера. Дай волю паяльнику! Самоделки на all-make.ru Принципиальные схемы Модулі автозапуску бензогенератора та системи АВР, електромонтажні роботи
Хостинг от uCoz