Семисегментный индикатор
Любой семисегментный индикатор обязательно состоит из семи сегментов. Отсюда и происходит его название. Каждый сегмент – это обычный отдельный светодиод. Кроме того в корпусе помимо сегментов находится еще и точка или запятая или другой символ. С помощью семи сегментов можно изобразить десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 и некоторые буквы, как латиницы, так и кириллицы.
Светодиоды всех элементов соединяются одноименными выводпми между собой или анодами, или катодами. Поэтому разделяют семисегментные индикаторы с общим анодом и общим катодом.
Вне зависимости от количества разрядов и размеров цифр каждый сегмент имеет название в виде одной из первых букв английского алфавита: a, b, c, d, e, f, g. Точка обозначается dp.
Для того чтобы засветить один из светодиодов семисегментного индикатора с общим анодом следует на общий вывод (анод) подать «+», а на соответствующий отдельный вывод – «-» источника питания. Если применяется общий катод, — то наоборот – минус подается на общий, а плюс на отдельный вывод.
|
|
Чтобы отобразить на индикаторе цифру или букву следует засветить несколько сегментов. Например, для отображения единицы 1 задействуются сегменты b и c. При отображении восьмерки 8 задействуются все символы от a до g. Пятерка получается из таких символов: a, c, d, f, g.
Все светодиоды подключаются к выводам микроконтроллера через отдельные резисторы сопротивлением 220…330 Ом.
Использование портов для индикации цифр
Мы видим, что для индикации различных символов требуется переключение сразу 7 пинов, что делает программу управления семисегментным индикатором довольно сложной. Для упрощения воспользуемся механизмом портов. Обратите внимание, что на рисунке выводы платы ARDUINO от 0 по 7 отмечены так же, как PD0 – PD7
Это соответствует выводам 8-разрядного регистра D микроконтроллера Atmega. Для порта D существуют специальные команды, которые позволяют управлять состоянием выводов порта. Например,
DDRD = 0b11111110;
назначает выводы Arduino 1-7 выходными, вывод 0- входным, а
PORTD = 0b00000001;
устанавливает выводы Arduino 1-7 (PD1-PD7) в низкий уровень (LOW), а вывод 0 (PD0) в высокий уровень (HIGH)