И вновь азы программирования МК – для новичков в радиоделе

April 20, 2014 by admin Комментировать »

Итак, простейший вид программы для микроконтроллера – это последовательное выполнение инструкций (или операторов), как правило, в теле бесконечного цикла

Цикл в программе Flowcode перенастраиваемый, он имеет  в своих свойствах настройки, превращающие его в любой из общеупотребительных видов цикла Например, мы можем использовать счётный цикл, который выполняется заданное количество раз:

Рис 3511 Настройка элемента Цикл для выполнения счётного цикла

Обратите внимание, что мы снимаем галочку с цикла while, что элементы Начало и Конец для счётного цикла уже не нужны Если бы мы поставили галочку рядом с разновидностью цикла Loop until, то цикл выполнялся бы до тех пор, пока не было бы выполнено условие Для цикла for (счётного цикла) условие задаётся количеством проходов блока программы, заключённого в цикл

Простое последовательное выполнение инструкций внутри бесконечного цикла позволяет нам создать достаточно полезное устройство В самом простом виде оно выглядит, вернее программа, как изображено на рисунке 356 Подключив к выводу А0 реле (лучше через транзистор), его контактами мы можем включать и выключать ёлочную гирлянду Согласитесь, пусть и простое, но устройство

Однако уже использование кнопок, а тем более датчиков, потребует от нас разветвить программу Ранее я приводил примеры разных датчиков Есть «пожарные датчики», которые размыкают свои контакты при возникновении пожара Если такой датчик подключить к входу микроконтроллера, то программа будет постоянно  отслеживать состояние датчика А когда датчик сработает, мы должны хотя бы включить сигнал Нам понадобится ветвление программы

Мы позаботились о задании начального значения переменной fire Переменная обслуживает все выводы порта В, подразумевая, что включено восемь датчиков (или восемь цепочек датчиков) Микроконтроллер имеет встроенные подтягивающие резисторы,  а датчики включены между землёй и входом микроконтроллера

Условие говорит о том, что если переменная fire НЕ равна нулю, то есть, хотя бы один из датчиков разомкнут, то пора подавать сигнал, установив вывод А0 в состояние логической единицы

И, конечно, программа работает в бесконечном цикле (и хорошо, если там и останется навсегда)

Рис3512 Ветвление программы по условию

Если пожарный датчик (правильнее, наверное, противопожарный) предназначен для домашнего использования, то можно обойтись и без микроконтроллера Но если датчиков много, если они используются, скажем, на предприятии, то сигналы приходят в подразделение охраны Можно сделать пульт, на котором будут установлены светодиоды, зажигающиеся при срабатывании датчика, и звуковой сигнализатор, который привлечёт внимание к пульту

Достаточно часто сигналы тревоги возникают по иным причинам, это и неисправность датчика, и обрывы проводов, и неисправности пультов Поэтому охрана должна проверить, действительно ли возникла опасность пожара

Для таких более сложных операций удобнее использовать микроконтроллер Так, добавив к сигналу на выводе А0 паузу (определяемую условиями проверки), можно дать время на отключение тревоги, а если тревога не отменяется, то включить сирену или иное оповещение для сотрудников, призывающих их покинуть пожароопасное помещение

Рис 3513 Расширение возможностей устройства Теперь программа ветвится уже несколько раз

Кроме отмены пожарной тревоги можно позаботиться и ещё об одном – иногда сеть 220 В может кратковременно отключаться Такое бывает А пожарные датчики могут сработать при таком кратковременном отключении Это ложное срабатывание Чтобы избежать его, можно добавить небольшой фрагмент:

Рис 3514 Фрагмент защиты от сбоев по питанию

После первого сигнала от датчика мы ожидаем ещё 5 секунд и повторно проверяем датчик При условии, что датчик восстанавливается за 5 секунд после сбоя по питанию, мы избежим ложного срабатывания

Иногда многочисленных ветвлений программы по условию (if… then…) можно  избежать, используя элемент Switch (переключатель) Удобно рассмотреть использование этого элемента на примере с флагами, о котором говорилось выше

Рис 3515 Использование программного элемента Switch

В данном случае определяется значение переменной flags и выполняется операция, которая соответствует этому значению Вы можете проверить работу программы, добавив линейку светодиодов, подключённых к порту А

Можно ли эту программу выполнить без элемента Switch Можно

Рис 3516 Программа без элемента Switch

Можно проверить, что работает она так же, но, согласитесь, использовать переключатель удобнее

И во многих случаях удобнее использовать микроконтроллер В следующей главе мы рассмотрим задачу, которая обратна к тем, которые были в предыдущих главах Мы рассмотрим, как в простой задаче обойтись без микроконтроллера

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

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

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты