Давайте рассмотрим простой пример бегущих огней, напишем программу для него, составим схему. Так как программа у нас простая, контроллер нам тоже пойдет любой, но чем дешевле тем лучше, можно взять например микроконтроллер 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
Подскажите пожалуйста, что необходимо сделать чтоб светодиоды не мигали, а просто загорались, Я так понимаю просто удалить строку: "$crystal = 8000000 ‘ устанавливаем частоту кварца "
Если применить микроконтроллер Atmega 8 - то у него три группы портов, можно на все подцепит светодиоды, а программу продолжить дальше - ничего сложного там нет, просто нужно расписать порты аналогичным образом (например расписать порты PINB.0 = 1 PINB.1 =1 и т.д. - все это пишется между Doo - Loop) и скомпилировать код.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]