Пятница, 19.04.2024, 08:17 Приветствую Вас Гость

Автозапуск за 1500р. на ЛЮБОЙ сигнализации?! -> at13.ru

Главная | Регистрация | Вход | RSS

Каталог статей


Пишем программу для AVR – делаем бегущие огни.
.

Давайте рассмотрим простой пример бегущих огней, напишем программу для него, составим схему. Так как программа у нас простая, контроллер нам тоже пойдет любой, но чем дешевле тем лучше, можно взять например микроконтроллер Attiny13, у него доступно 5 портов, можно подключить и на 6 вывод светодиод, но для этого придется отключить вывод RESET а это нам не нужно т.к. потом не сможем перепрошить МК. Давайте составим схему, подключим светодиоды ко всем портам контроллера, а именно начиная с PB0 по PB4, светодиоды не желательно подключать напрямую, лучше через резисторы, например 200-270 Ом.

Схема мигалки:



Как видите схема простая, вместо резисторов я применил резисторную сборку, в программе протеус вывода питания микроконтроллера скрыты и контроллер работает автоматически, по этому питания подводить к нему не надо. Что касается программной части, то она очень простая, исходный код можете посмотреть ниже, программа написана в BASCOM AVR

$regfile = "attiny13.dat" ‘данной строкой мы инициализируем библиотеку или по другому микроконтроллер
$crystal = 8000000 ‘ устанавливаем частоту кварца

Config Pinb.0 = Output ‘ Устанавливаем порты в качестве выхода и подключаем к ним светодиоды, по этому пишется Output, если вход то пишут Input – ко входу можно подключить кнопку.
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Do ‘ начинаем цикл
Pinb.0 = 1 ‘ включаем порт PB0 – после чего загорается светодиод
Waitms 30 ‘ время мигания
Pinb.1 = 1
Waitms 30
Pinb.2 = 1
Waitms 30
Pinb.3 = 1
Waitms 30
Pinb.4 = 1
Waitms 30
Loop ‘ завершаем цикл
End


Как видите, ничего сложного. Как думаете? Что нужно сделать, чтобы программу переписать для другого контроллера? (естественно AVR)/ Для начало, нужно сменить attiny13.dat на другое, для атмега 8 например пишется так: m8def.dat подробнее можно почитать к даташиту контроллера. Порты спокойно можно переназначать, вместо PINB.0 можно написать PORTB.0 .

Do...Loop пишется в том случае, если требуется повторение набора инструкций неограниченное число раз, пока условие выполняется.

Исходный код программы ниже в архиве, открывать нужно программой BASCOM AVR

Скачать файлы проекта.

Категория: BASCOM AVR | Добавил: Advanced (06.06.2012)
Просмотров: 11372 | Комментарии: 7 | Теги: AVR, ATtiny13, мигалка | Рейтинг: 3.7/3
Всего комментариев: 7
6 salimow_alfa  
Еще один вопрос как сделать, чтоб светодиод D1 загорелся, потух потом D2 загорелся, потух и т.д Заранее спасибо за ответ

7 Artur  
Включаем выключаем каждый порт по отдельности, поочередно... один из вариантов

3 salimow_alfa  
Подскажите пожалуйста, что необходимо сделать чтоб светодиоды не мигали, а просто загорались,
Я так понимаю просто удалить строку: "$crystal = 8000000 ‘ устанавливаем частоту кварца "

4 Mitos1  
Частота кварца для другого
Впиши вместо pinb.0 ports.0 и тд

5 Mitos1  
Прости писал с пада portb.0

2 Artur  
Тоже недавно начал копаться в исходниках, но пока мало чего понятно, в каждой среде пишется по разному, не могу выбрать подходящее

1 Advanced  
Если применить микроконтроллер Atmega 8 - то у него три группы портов, можно на все подцепит светодиоды, а программу продолжить дальше - ничего сложного там нет, просто нужно расписать порты аналогичным образом (например расписать порты PINB.0 = 1 PINB.1 =1 и т.д. - все это пишется между Doo - Loop) и скомпилировать код.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Источники питания и приборы
Охрана и контроль доступа
Измерительные устройства
Часы, таймеры, счетчики
Световые эффекты
Защита и контроль
Для начинающих
Разное
BASCOM AVR
Информация по МК, FAQ
Поиск
Вход на сайт
Наш опрос
Ваш популярный микроконтроллер AVR
Всего ответов: 121
Статистика

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