Принципиальная электрическая схема

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

Удобнее всего светодиоды подключать к одному порту, а кнопку - к другому. В этом случае управляющая программа должна настроить порт, к котрому подключены светодиоды на вывод, а порт к которому подключена кнопка на ввод. Других специальных требований к микроконтроллеру не требуется. Для примера выберем микроконтроллер Atmega 128, который имеет широкую периферию и будет нами использован для дальнейших задач. Договоримся, что для управления светодиодами используем разряды порта С ( линии РС0-РС7), а для считывания информации с кнопки управления используем младший разряд порта В ( линия РВ.0). Полная схема устройства, позволяющего решить поставленную выше задачу приведена на Рис.2.1


T X1 X2   PB.0 PB.1 PB.2 PB.3 PB.4 PB.5 PB.6 CPU       PC.0 PC.1 PC.2 PC.3 PC.4 PC.5 PC.6 PC.7  

S1

VD9
R4
R8
VD7
R7
VD6
R6
VD5
R5
VD2
VD4
VD11
VD3
R3
R2
R1
Рис.2.1

Для подключения кнопки S1 используется класическая схема. В исходном состоянии контакт кнопки разомкнут. Через резистор на вход РВ.0 микроконтроллера подается “плюс” напряжения питания, что соответствует сигналу логической единицы. Напомним, что микроконтроллеры серии AVR имеют встроенные нагрузочные резисторы для каждого разряда порта, котрых можно включить програмно к каждому выводу при настройке соответствующего порта и обеспечить наличие указанного напряжения на соответствующем входе.

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

Подключение светодиода также выполняется по класической схеме.Это непосредственное подключение к выходу порта. Каждый выход расчитан на управление светодиодом с током потребления до 20ма. В цепях диодов включены токоограничивающие резисторы R1-R8.

Для того, чтобы зажечь светодиод, микроконтроллер должен подать на выводы РС сигнал логической единицы. В этом случае напряжение , приложенное к цепочке R-VD окажется равным напряжению питания, что вызовет ток через светодиод и он загорится. Если же на вывод РС подать сигнал логического нуля, падение напряжения на светодиоде и резисторе окажется равным нулю, и светодиод погаснет.

Следует сделать некоторые замечания: большинство микроконтроллеров семейства AVR, кроме тактового генератора с внешним кварцевым резонатором, содержат внутренний RC генератор, не требующий никаких внешних цепей. Если не предъявляются никакие высокие требования к точности и стабильности к частоте задающего генератора, можно отказатся от внешних цепей (как это сделано в предлагаемой схеме).

Любой микроконтроллер AVR имеет внутреннюю систему сброса, которая в большинстве случаев обеспечивает стабильный сброс при включении питания. Внешние цепи сброса применяются только при наличии особых требований к длительности импульса сброса.

Все описанные выше настройки выполняются програмно с помщью fuse- переключателей.

Алгоритм

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