Припустимо ви пишете програму, яка повинна виводити числа. Наприклад: годинник, секундомір, термометр і т.п. Для виведення інформації можна скористатися жк дисплеєм, але з певних причин, це може бути не завжди зручно, красиво або дорого. Тому застосовують семисегментний індикатор, який є набором з 7 світлодіодів.
Для прикладу розглянемо індикатор SA56, кожна рисочка це світлодіод. Крім того їх можна по різному об'єднати. В даному випадку зверніть увагу загальний анод, тобто «+» Якщо на ніжки 7, 6, 4 ... подавати землю, то відповідно будуть запалюватися відповідні сегменти a, b, c ...

Тепер розберемося, як все це справа прикрутити до мікроконтролеру.

Для власної зручності, відзначимо кожен світлодіод по порядку від 0 до 6. І подсоединим їх відповідно до їх номерами, до порту В наприклад.

Так як ми розглядаємо далі варіант із загальним анодом, то і прошивка буде орієнтована на цей варіант, тобто щоб запалити сегмент ми повинні подати логічний нуль в порт, щоб вимкнути потрібно подати логічну одиницю. Щоб переробити прошивку під загальний катод, потрібно інвертувати стан виходу порту.
Отже, вихідні дані: 7сегментнік із загальним анодом (загальний «+»), потрібно вивести всі цифри підряд від 0 до 9, такий лічильник
Почнемо з 0. Дивимося на картинку з позначеними номерами світлодіодів, виходить щоб висвітити 0 потрібно запалити все світлодіоди, крім 6.

Так як у нас номери світлодіодів відповідають номерам порту, то нам потрібно включити ніжки з 0 по 5 включно. Щоб їх включити досить вивести в порт значення PORTB = 0b00111111;
Начебто все правильно, але не забуваємо що у нас загальний «+», тому, щоб світлодіод спалахнув, нам потрібно в порт виводити 0 (землю). Тому інвертуємо дане число і отримаємо PORTB = 0b11000000;
Аналогічно 1: світлодіоди 1 і 2, тобто остаточно в порт потрібно вивести PORTB = 0b11111001;
Думаю далі розберетеся самостійно. Для тих хто не зрозумів що означає запис PORTB = 0b00111111; рекомендую ознайомитися зі статтею про конфігурацію портів
Тепер спробуємо зібрати отриману інформацію в одну купу і написати прошивку, яка вважає від 0 до 9 і виводить отриману інформацію на індикатор.
У прошивці складного нічого немає, використовується оператор switch який в залежності від того, яке число у змінній number запалює потрібні світлодіоди.
Для симуляції на схемі не показані резистори, в реальній схемі необхідно обмежувати струм світлодіода, тому на кожну ніжку потрібно повісити резистор.
Статичну індикацію зручніше було розглядати з зсувними регістрами. Бо на практиці така схема не застосовується до ладу ...