Arduino та чотирирозрядний семисегментний індикатор. Arduino та чотирирозрядний семисегментний індикатор 7 сегментний arduino


Схема підключення однорозрядного семисегментного індикатора
Схема підключення багаторозрядного семисегментного індикатора

Пристрій відображення цифрової інформації. Це найпростіша реалізація індикатора, який може відображати арабські цифри. Для відображення літер використовуються складніші багатосегментні та матричні індикатори.

Як каже його назва, складається з семи елементів індикації (сегментів), що включаються та вимикаються окремо. Включаючи їх у різних комбінаціях, їх можна скласти спрощені зображення арабських цифр.
Сегменти позначаються літерами від A до G; восьмий сегмент - десяткова точка (Decimal point, DP), призначена для відображення дробових чисел.
Зрідка на семисегментному індикаторі відображають літери.

Бувають різних кольорів, зазвичай це білий, червоний, зелений, жовтий та блакитний кольори. Крім того, вони можуть бути різних розмірів.

Також світлодіодний індикатор може бути однорозрядним (як на малюнку вище) і багаторозрядним. В основному в практиці використовуються одно-, дво-, три- та чотирирозрядні світлодіодні індикатори:

Крім десяти цифр, семисегментні індикатори здатні відображати букви. Але лише деякі з літер мають інтуїтивно зрозуміле семисегментне уявлення.
У латиниці: великі A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, малі a, b, c, d, e, g , h, i, n, o, q, r, t, u.
У кирилиці: А, Б, В, Р, р, Е, і, Н, О, про, П, п, Р, С, с, У, Ч, Ы (два розряди), Ь, Е/З.
Тому семисегментні індикатори використовують лише для відображення найпростіших повідомлень.

Усього семисегментний світлодіодний індикатор може відобразити 128 символів:

У звичайному світлодіодному індикаторі дев'ять висновків: один йде до катодів всіх сегментів, інші вісім - до анода кожного з сегментів. Ця схема називається «схема із загальним катодом», існують також схеми із загальним анодом(Тоді все навпаки). Часто роблять не один, а два загальні висновки на різних кінцях цоколя - це спрощує розведення, не збільшуючи габаритів. Є ще так звані «універсальні», але я особисто з такими не стикався. Крім того існують індикатори з вбудованим регістром зсуву, завдяки чому набагато зменшується кількість задіяних висновків портів мікроконтролера, але вони набагато дорожчі і в практиці застосовуються рідко. А оскільки неосяжне не осягнути, то такі індикатори ми поки розглядати не будемо (адже є ще індикатори з набагато більшою кількістю сегментів, матричні).

Багаторозрядні світлодіодні індикаторичасто працюють за динамічним принципом: висновки однойменних сегментів усіх розрядів з'єднані разом. Щоб виводити інформацію на такий індикатор, мікросхема, що управляє, повинна циклічно подавати струм на загальні висновки всіх розрядів, в той час як на висновки сегментів струм подається в залежності від того, чи запалений даний сегмент в даному розряді.

Підключення однорозрядного семисегментного індикатора до мікроконтролера

На схемі нижче показано як підключається однорозрядний семисегментний індикатордо мікроконтролера.
При цьому слід враховувати, що якщо індикатор з ЗАГАЛЬНИМ КАТОДОМ, то його загальний висновок підключається до «землі»а запалювання сегментів відбувається подачею логічної одиниціна виведення порту.
Якщо індикатор з ЗАГАЛЬНИМ АНОДОМ, то на його загальний провід подають «плюс»напруги, а запалювання сегментів відбувається переведенням виведення порту в стан логічного нуля.

Здійснення індикації в однорозрядному світлодіодному індикаторі здійснюється поданням на висновки порту мікроконтролера двійкового коду відповідної цифри відповідного логічного рівня (для індикаторів з ОК – логічні одиниці, для індикаторів з ОА – логічні нулі).

Струмообмежувальні резисториможуть бути присутніми у схемі, а можуть і не бути присутніми. Все залежить від напруги живлення, яке подається на індикатор та технічних характеристик індикаторів. Якщо, наприклад, напруга подане на сегменти дорівнює 5 вольтам, які розраховані на робоче напруга 2 вольта, то струмообмежувальні резистори ставити необхідно (щоб обмежити струм через них підвищення напругі харчування і спалити як індикатор, а й порт микроконтроллера).
Розрахувати номінал струмообмежувальних резисторів дуже легко, за формулою дідуся Ома.
Наприклад, показники індикатора такі (беремо з даташита):
- Робоча напруга - 2 вольти
- Робочий струм - 10 мА (=0,01 А)
- напруга живлення 5 вольт
Формула для розрахунку:
R= U/I (всі значення у цій формулі повинні бути в Омах, Вольтах та Амперах)
R = (напруга живлення - робоча напруга) / робочий струм
R=(5-2)/0.01=300 Ом

Схема підключення багаторозрядного семисегментного світлодіодного індикаторав основному також, що і при підключенні однорозрядного індикатора. Єдине, додаються керуючі транзистори в катодах (анодах) індикаторів:

На схемі не показано, але між базами транзисторів та висновками порту мікроконтролера необхідно включати резистори, опір яких залежить від типу транзистора (номінали резисторів розраховуються, але можна спробувати застосувати резистори номіналом 5-10 кОм).

Здійснення індикації розрядами здійснюється динамічним шляхом:
— виставляється двійковий код відповідної цифри на виходах порту РВ для 1 розряду, потім подається логічний рівень на транзистор першого розряду, що управляє.
— виставляється двійковий код відповідної цифри на виходах порту РВ для 2 розряду, потім подається логічний рівень на транзистор, що управляє, другого розряду
— виставляється двійковий код відповідної цифри на виходах порту РВ для 3 розряду, потім подається логічний рівень на транзистор, що управляє, третього розряду
- Отже по колу
При цьому треба враховувати:
- для індикаторів з ОКзастосовується керуючий транзистор структури NPN(керується логічною одиницею)
- для індикатора з ОА- Транзистор структури PNP(керується логічним нулем)

Семисегментні світлодіодні індикатори дуже популярні серед пристроїв відображення цифрових значень і знаходять застосування в передніх панелях мікрохвильових печей, пральних машин, цифрових годинниках, лічильниках, таймерах та ін. вугілля огляду. Для підключення семисегментного 4-розрядного індикатора до мікроконтролера потрібно принаймні 12 ліній вводу/виводу. Тому використовувати ці індикатори з мікроконтролерами з малою кількістю висновків, наприклад серії від компанії, практично неможливо. Звичайно, можна використовувати різні методи мультиплексування (опис яких можна знайти на сайті в розділі "Схеми"), але і в цьому випадку є певні обмеження для кожного методу, і часто використовуються складні програмні алгоритми.

Ми розглянемо метод підключення індикатора за інтерфейсом SPI, який вимагатиме всього 3 лінії вводу/виводу мікроконтролера. При цьому збережеться керування всіма сегментами індикатора.

Для підключення 4-розрядного індикатора до мікроконтролера SPI шини використовується спеціалізована мікросхема-драйвер виробництва компанії. Мікросхема здатна керувати вісьмома семисегментними індикаторами із загальним катодом і має у своєму складі BCD-декодер, драйвери сегментів, схему мультиплексування та статичну ОЗУ для зберігання значень цифр.

Струм через сегменти індикаторів встановлюється лише за допомогою одного зовнішнього резистора. Додатково мікросхема підтримує керування яскравістю індикаторів (16 рівнів яскравості) у вигляді вбудованого ШІМ.

Схема, що розглядається в статті, - це схема дисплейного модуля з інтерфейсом SPI, який може використовуватися в радіоаматорських конструкціях. І нас більше цікавить не сама схема, а робота з мікросхемою за інтерфейсом SPI. Живлення модуля +5 подається на висновок Vcc, сигнальні лінії MOSI, CLK і CS призначені для комунікації майстер-пристрою (мікроконтролер) з веденим (мікросхема MAX7219).

Мікросхема використовується в стандартному включенні, із зовнішніх компонентів потрібен тільки резистор, який задає струм через сегменти, захисний діод живлення та конденсатор фільтруючий живлення.

Дані передаються в мікросхему 16-бітними пакетами (по два байти), які поміщаються у вбудований 16-бітний регістр зсуву по кожному фронту, що наростає сигналу CLK. 16-бітний пакет ми позначимо D0-D15, де біти D0-D7 містять дані, D8-D11 містять адресу регістра, біти D12-D15 значення не мають. Біт D15 - старший біт і є першим прийнятим бітом. Хоча мікросхема здатна керувати вісьмома індикаторами, ми розглянемо роботу лише з чотирма. Управління ними здійснюється на виходах DIG0 - DIG3, розташованих у послідовності праворуч наліво, 4-бітові адреси (D8-D11), які їм відповідають, це 0×01, 0×02, 0×03 та 0×04 (шістнадцятковий формат). Регістр цифр реалізується на базі вбудованого ОЗП з організацією 8×8 і адресуються безпосередньо, так що кожна окрема цифра на дисплеї може оновлюватись у будь-який час. У наступній таблиці наведені цифри, що адресуються, і регістри управління мікросхеми MAX7219.

Реєстр

Адреса

HEX-значення

Ні операції

Режим декодування

Кількість індикаторів

Вимкнення

Тест індикатора

Реєстри управління

Мікросхема MAX1792 має 5 регістрів управління: режим декодування (Decode-Mode), управління яскравістю індикатора (Intensity), регістр кількості підключених індикаторів (Scan Limit), управління включенням та вимкненням (Shutdown), режим тестування (Display Test).

Увімкнення та вимкнення мікросхеми

При подачі живлення на мікросхему всі регістри скидаються, і вона перетворюється на режим Shutdown (вимикання). У цьому режимі дисплей вимкнено. Для переходу в нормальний режим роботи необхідно встановити біт D0 регістра Shutdown (адреса 0Сh). У будь-який час цей біт може бути скинутий, щоб перевести драйвер у вимкнений стан, при цьому вміст регістрів зберігається незмінним. Цей режим може використовуватися для економії енергії або в режимі сигналізації миготінням індикатора (послідовна активація та деактивація режиму Shutdown).

Переведення мікросхеми в режим Shutdown здійснюється послідовною передачею адреси (0Сh) та даних (00h), а передача 0Ch (адреса) і потім 01h (дані) повертають у нормальний режим роботи.

Режим декодування

За допомогою регістру вибору режиму декодування (адреса 09h) можна використовувати BCD code B декодування (відображувані символи 0-9, E, H, L, P, -) або без декодування для кожної цифри. Кожен біт у регістрі відповідає одній цифрі, установка логічної одиниці відповідає включенню декодера даного розряду, установка 0 - декодер виключається. Якщо використовується BCD декодер, то береться до уваги лише молодший напівбайт даних у регістрах цифр (D3-D0), біти D4-D6 ігноруються, біт D7 не залежить від BCD декодера та відповідає за включення десяткової точки на індикаторі, якщо D7=1. Наприклад, при послідовній посилці байтів 02h і 05h на індикаторі DIG1 (другий розряд праворуч) відображатиметься цифра 5. Подібним чином, при посилці 01h і 89h на індикаторі DIG0 буде відображатися цифра 9 з включеною десятковою точкою. У таблиці нижче наведено повний список символів, які відображаються під час використання BCD декодера мікросхеми.

Символ

Дані в регістрах

Включені сегменти = 1

Пусто

*Десяткова точка встановлюється бітом D7=1

При виключенні BCD декодера з роботи біт даних D7-D0 відповідають лініям сегментів (A-G і DP) індикатора.

Управління яскравістю індикаторів

Мікросхема дозволяє програмно керувати яскравістю індикаторів за допомогою вбудованого ШІМу. Вихід ШІМ контролюється молодшим напівбайтом (D3-D0) регістру Intensity (адреса 0Ah), який дозволяє встановлювати один із 16 рівнів яскравості. При встановленні всіх бітів напівбайта 1 вибирається максимальна яскравість індикатора.

Кількість підключених індикаторів

У регістрі Scan-Limit (адреса 0Bh) встановлюється значення кількості розрядів, що обслуговуються мікросхемою (1...8). Для нашого варіанту з 4 розрядами регістр має бути записано значення 03h.

Тест індикатора

Регістр, відповідальний цей режим, знаходиться за адресою 0Fh. Встановлюючи біт D0 у регістрі, користувач включає всі сегменти індикаторів, при цьому вміст регістрів керування та даних не змінюється. Для вимкнення режиму Display-Test біт D0 повинен дорівнювати 0.

Інтерфейс із мікроконтролером

Модуль індикатора може бути підключений до будь-якого мікроконтролера, який має три вільні лінії вводу/виводу. Якщо мікроконтролер має вбудований апаратний модуль SPI, модуль індикатора може підключатися як ведений пристрій на шині. У цьому випадку сигнальні лінії SPI інтерфейсу SDO (serial data out), SCLK (serial clock) та SS (slave select) мікроконтролера можуть бути безпосередньо підключені до висновків MOSI, CLK та CS мікросхеми MAX7219 (модуля), сигнал CS має низький активний рівень.

Якщо мікроконтролер не має апаратного SPI, то інтерфейс можна організувати програмно. Спілкування з мікросхемою MAX7219 починається з установки і утримання низького рівня лінії CS, після чого послідовно посилаються 16 біт даних (старший значний біт передається першим) лінією MOSI по наростаючому фронту сигналу CLK. По завершенню передачі лінії CS знову встановлюється високий рівень.

У секції завантажень користувачі можуть завантажити вихідний текст тестової програми та HEX-файл прошивки, в якій реалізується звичайний 4-розрядний лічильник із відображенням значень на модулі індикатора з інтерфейсом SPI. Використовуваний мікроконтролер - інтерфейс реалізований програмно, сигнальні лінії CS, MOSI і CLK модуля індикатора підключені до портів GP0, GP1 і GP2, відповідно. Використовується компілятор mikroC для мікроконтролерів PIC (mikroElektronika

Для коментування матеріалів із сайту та отримання повного доступу до нашого форуму Вам необхідно зареєструватися .

З часів появи радіотехніки та електроніки зворотний зв'язок електронного пристрою та людини супроводжувався різними сигнальними лампочками, кнопками, тумблерами, дзвінками (сигнал готовності мікрохвильової печі - дзинь!). Деякі електронні девайси видають мінімум інформації, тому що більше було б зайвим. Наприклад, світлодіод, що світиться, у вашої китайської зарядки для телефону говорить про те, що зарядка включена в мережу і в неї надходить напруга. Але є й такі параметри, котрим було б зручніше видавати об'єктивну інформацію. Наприклад, температура повітря на вулиці чи час на будильнику. Так, все це можна було б зробити також на лампочках або світлодіодах, що світяться. Один градус - один діод, що горить, або лампочка. Скільки градусів - стільки індикаторів, що горять. Вважати ці світлячки - це справа може бути і звична, але скільки знову ж таки треба буде таких світиків, щоб показати температуру з точністю до десятої частки градуса? Та й взагалі, яку площу займатимуть ці світлодіоди та лампочки на електронному девайсі?

Практичні семисегментні пристрої відображення повинні мати не менше восьми зовнішніх сполучних клем; сім із них дають доступ до окремих фотоелектричних сегментів, а восьма забезпечує спільне з'єднання з усіма сегментами. У першому випадку пристрій відомий як семисегментний дисплей загального анода; в останньому випадку пристрій відомий як семисегментний дисплей із загальним катодом.

Щоб керувати дисплеєм із загальним анодом, драйвер повинен мати активний-низький вихід, в якому кожен сегментний привід зазвичай високий, але йде низько, щоб увімкнути сегмент. Щоб керувати дисплеєм із загальним катодом, драйвер повинен мати активний активний вихід.

І ось на початку ХХ століття, з появою електронних ламп з'явилися перші газорозрядні індикатори.

За допомогою таких індикаторів можна вивести цифрову інформацію в арабських цифрах. Раніше на цих лампах робили різну індикацію для приладів та інших електронних пристроїв. Нині газорозрядні елементи майже ніде не застосовуються. Але ретро - це завжди модно, тому багато радіоаматорів збирають для себе і своїх близьких прекрасні годинники на газорозрядниках.

Повне пояснення цього трохи складніше, в такий спосіб. Коли напруга дорівнює нулю, сегмент практично невидимий. Однак, коли напруга на вході має значне позитивне або негативне значення, сегмент стає ефективно видимим, але якщо напруга приводу підтримується протягом декількох сотень мілісекунд, сегмент може стати постійно видимим і не мати ніякого подальшого значення.

У умовах сегмент відключається. Таким чином, сегмент включений у цих умовах. Ця форма приводу зазвичай відома як система "мостового приводу" з подвоєнням напруги. Послідовність процесів схеми наступна. Проста каскадна система, описана раніше, страждає від серйозного дефекту, оскільки дисплей стає розмитим під час фактичного періоду підрахунку, стаючи стабільним та читаним тільки тоді, коли кожен лічильник завершено та вхідний затвор закритий. Цей "розмитий і читаний" тип дисплея дуже дратує, щоб дивитися.

Мінуси газорозрядних ламп – їдять багато. Про довговічність можна й посперечатися. У нас в універі досі у лаборантських кабінетах експлуатують частотоміри на газорозрядниках.

З появою світлодіодів ситуація кардинально змінилася. Світлодіоди самі по собі жеруть маленький струм. Якщо розставити їх у потрібне положення, то можна висвічувати будь-яку інформацію. Для того, щоб висвітлити всі арабські цифри було достатньо всього. сім (звідси і назва семисегментного індикатора) світлодіодних смужок, що світяться, виставлених певним чином:

На малюнку 13 показана вдосконалена схема лічильника частоти, яка використовує блокування дисплея для подолання вищезгаданого дефекту. Ця схема працює в такий спосіб. Одночасно відкривається вхідний затвор і лічильники починають підсумовувати імпульси вхідного сигналу. Цей лічильник триває рівно через одну секунду, і протягом цього періоду чотирибітові клямки не дозволяють вихідним сигналам лічильника надходити на драйвери дисплея; дисплей залишається стабільним протягом цього періоду.

Через кілька секунд послідовність повторюється знову, при цьому лічильники перезавантажуються, а потім підраховують імпульси вхідної частоти протягом однієї секунди протягом яких дисплей дає постійне зчитування результатів попереднього рахунку і т.д.

майже до всіх таких семисегментних індикаторів додають також і восьмий сегмент - точку, для того щоб можна було показати ціле і дробове значення якого-небудь параметра

Таким чином, схема малюнку 13 створює стабільний дисплей, який оновлюється один раз в секунду; на практиці фактичний період відліку цього та схеми на малюнку 12 може бути зроблений у будь-яке десятиліття з множинним або неповним числом секунд, за умови, що вихідний дисплей відповідним чином масштабується.

Зауважте, що тризначний частотомір може вказувати максимальні частоти 999 Гц при використанні односекундної бази, 99 кГц при використанні 100 мс тимчасової бази, 9 кГц при використанні тимчасової бази 10 мс і 999 кГц при використанні 1 мс тимчасової бази.

за ідеєю виходить восьми сегментний індикатор, але по-старому його також називають семисегментним, і помилки в цьому немає.

Коротше, семисегментний індикатор - це світлодіоди, які розташовані один щодо одного в певному порядку і запендюровані в один корпус.

Цей метод можна зрозуміти за допомогою малюнків 14 і 15. Ці перемикачі з'єднані разом і забезпечують дійсну дію мультиплексора і повинні розглядатися як швидкодіючі електронні перемикачі, які переключаються багаторазово через позиції 1, 2, і послідовність операцій схеми наступна. Припустимо спочатку, що перемикач знаходиться у положенні.

Через кілька хвилин перемикач переходить у положення 3, змушуючи дисплей 3 відображати число через кілька хвилин, весь цикл починає повторюватися знову і так далі, додаючи нескінченність. На практиці близько 50 з цих циклів відбуваються кожну секунду, тому око не бачить, що дисплеї вмикаються і вимикаються окремо, але сприймають їх як явно стійкий дисплей, який показує номер 327, або якийсь інший номер продиктований сегментом дані.

Якщо розглянути схему одиночного семисегментного індикатора, вона виглядає ось так:

Як бачимо, семисегментний індикатор може бути як з загальним анодом (ОА), так і з загальним катодом (ОК). Грубо кажучи, якщо семисегментник у нас із загальним анодом (ОА), то у схемі ми повинні на цей висновок вішати "плюс", а якщо із загальним катодом (ОК) - то "мінус" чи землю. На який висновок ми подамо напругу, такий світлодіод у нас і загориться. Давайте все це продемонструємо на практиці.

У практичних мультиплексорах піковий струм дисплея виходить досить високий, щоб забезпечити достатню яскравість дисплея. На фіг. 15 показаний приклад удосконаленого методу мультиплексування, що застосовується до тризначного частотоміру. Цей метод має дві основні переваги.

Якщо ці термінали активні високо, вони матимуть такі характеристики. Фіг. 18 і 19. На малюнку 18 показано техніку гасіння пульсацій, яка використовується для забезпечення придушення початкового нуля на чотиризначному дисплеї, який зчитує кількість.

У нас є ось такі світлодіодні індикатори:

Як бачимо, семисегментники можуть бути одиночні і багаторозрядні, тобто дві, три, чотири семисегментники в одному корпусі. Для того щоб перевірити сучасний семисегментник, нам достатньо мультиметра з функцією продзвонювання діодів. Шукаємо загальний висновок - це може бути ОА або ОК - методом тику і потім вже дивимося працездатність всіх сегментів індикатора. Перевіряємо трирозрядний семисегментник:

Таким чином, екран відображає. По суті, вони прості у використанні, приводять їх у дію, і вони спалахують. Вони можуть бути дратівливими, тому що у них є якась полярність, а це означає, що вони працюватимуть лише тоді, коли ви їх правильно підключите. Якщо ви відміните позитивну та негативну напругу, вони не загоряться взагалі.

Дратує, так воно і є, це теж дуже корисно. Інший провід – катод. Катод з'єднується із землею. В принципі це дійде до цього. Для спільного катода ви подаєте струм на контакти, які потрібно включити. Мультиплексування. Для цього навіть існують контролери дисплея, якщо ви не хочете подбати про перемикання у програмному забезпеченні.

Опаньки, у нас спалахнув один сегмент, таким же чином перевіряємо й інші сегменти.

Іноді напруги на мультику не вистачає, щоб перевірити сегменти індикатора. Тому беремо Блок живлення, виставляємо на ньому 5 Вольт, чіпляємо до однієї клеми блока живлення резистор 1-2 кілоОми і починаємо перевіряти семисегментник.

Управління 7-сегментним дисплеєм

Тому, коли у вас є 4-значний мультиплексований 7 сегмент, загальний анод. По-перше, ми повинні знати, який тип дисплея у нас є, оскільки є дві можливі форми: загальний катод та загальний анод. Речі, які вам знадобляться для цього уроку. Зліва: графічний вигляд 7-сегментного дисплея, що показує одне загальне розташування для внутрішньої проводки та розташування контактів.

На цьому етапі зверніть увагу на вихідний висновок, оскільки він знадобиться вам пізніше при завантаженні програми. Якби дисплей був звичайним катодом, ми б скасували його. У нижній частині статті знаходиться фотокартка схеми, що йде на моїй платі прототипу. Ми також надаємо бібліотеку для керування більш ніж одним дисплеєм.

Навіщо ж нам резистор? При подачі на світлодіод напруги він починає різко їсти струм при включенні. Тому в цей момент він може перегоріти. Щоб обмежити струм, послідовно зі світлодіодом вмикається в ланцюг резистор. Докладніше можна прочитати у цій статті.

Підрахунок у шістнадцятковому вигляді на одному 7-сегментному дисплеї

Недоліком є ​​те, що вони є ресурсомісткими. Цей конкретний дисплей має чотири цифри та два дисплеї двокрапки. Однак пристрій також забезпечує цифрове керування яскравістю дисплея через внутрішній широкосмуговий модулятор. У таких випадках вихід може бути виконаний на кількох 7-сегментних дисплеях.

Це заощаджує контакти на корпусі, а потім на контролі. Відповідно, згадуються дисплеї із загальним анодом або загальним катодом. Висновок, який відповідає сегменту або десятковій точці, найкраще витягувати з аркуша даних для відображення. 7-сегментний дисплей, який розрахований на звичайні 10-20 мА, як і раніше, горітиме, хоча й слабкий. Але для цього не потрібне призначення контактів. Далі розподіл цього сегмента ґрунтується на.

Так само перевіряємо чотирирозрядний семисегментник з китайського радіоприймача

Думаю, особливих труднощів із цим виникати не повинно. У схемах семисегментники чіпляються із резисторами на кожному висновку. Це теж пов'язано з тим, що світлодіоди при подачі напруги на них шалено жеруть струм і вигоряють.

Якщо використовується інше призначення, це можливо в принципі, але це слід враховувати під час програмування. Перетворення окремих цифр на конкретний шаблон виведення може виконуватися за допомогою так званого. Всі інші сегменти мають бути темними. Якщо цей прапорець встановлений для всіх цифр, наведено таку таблицю.

У тестовій програмі послідовно відображаються цифри від 0 до 9 на 7-сегментному дисплеї. Вихідний номер зберігається в реєстровому лічильнику і збільшується на 1 у межах циклу. Якщо регістр досяг 10, він знову скидається на 0. Після підвищення виникає цикл очікування, який гарантує, що певний час пройде в наступному випуску. Зазвичай ви не робите таких довгих циклів очікування, але це не про очікування, а контроль 7-сегментного дисплея. Використовувати таймер для цього – це надто багато зусиль.

У нашому сучасному світі семисегментники вже замінюються на ЖК-індикатори, які можуть висвічувати абсолютно різну інформацію.

але для того, щоб їх використовувати, потрібні певні навички у схемотехніці таких пристроїв. Поки що простіше і дешевше за світлодіодні семисегментні індикатори нічого немає.

p align="justify"> Фактична проблема і, отже, цікава в цій статті частина, проте, відбувається безпосередньо після циклу мітки. Зверніть увагу, що значення лічильника має бути подвоєним. Це безпосередньо з тим, що флеш-пам'ять носить словесний характер, а чи не байт-мудрий. У другому прикладі на цій сторінці це робиться інакше. Там показано, як за допомогою іншого запису таблиці генерація байтів заповнення може запобігти асемблером. Цікаво також, що для розрахунку потрібний регістр, що містить значення 0.

Отже, ця константа повинна бути спочатку завантажена в регістр і тільки після цього може бути додавання з використанням цього регістра. Цікаво те, що цей факт зустрічається в багатьох програмах, а константи в переважній більшості випадків - це константа 0. Тому багато програмістів резервують регістр із самого початку для цього і називають його нульовим регістром.

У цій статті ми поговоримо про цифрову індикацію.
Семисегментні світлодіодні індикатори призначені для відображення арабських цифр від 0 до 9 (рис.1).

Такі індикатори бувають однорозрядні, які відображають лише одне число, але семисегментних груп, об'єднаних в один корпус, може бути і більше (багаторозрядні). І тут цифри поділяються децимальною точкою (рис.2)

На жаль, є проблема, тому що для відображення необхідно вісім портів - чотири оголошення вимагатимуть 32 порти. Але є кілька шляхів. Зсувні регістри вже описані в іншому підручнику. Це спростило б створення необхідних 32 вихідних ліній лише з трьома висновками. Принцип керування не відрізняється від керування одним 7-сегментним дисплеєм, тільки те, як «вихідні висновки» наближаються до їх значень, відрізняється та визначається використанням зсувних регістрів. На даний момент, однак, має бути показаний інший варіант управління.



Рис.2.

Індикатор називається семисегментним через те, що символ, що відображається, будується з окремих семи сегментів. Усередині корпусу такого індикатора знаходяться світлодіоди, кожен із яких засвічує свій сегмент.
Літери та інші символи на таких індикаторах відображаються проблематично, тому для цих цілей використовуються 16-сегментні індикатори.

Нижче розглянемо мультиплексування ще раз. Мультиплексування означає, що не всі чотири дисплеї включаються одночасно, але тільки на короткий час. Якщо зміна між дисплеями відбувається швидше, ніж ми, люди можемо сприймати, всі чотири індикатори, схоже, працюють одночасно, хоча на один короткий проміжок часу світиться лише один. Таким чином, чотири дисплеї можуть розділяти окремі сегменти сегмента, і все, що потрібно - це 4 додаткові лінії управління для 4 дисплеїв, з якими включений дисплей.

Одним з аспектів цього управління є частота мультиплексування, тобто повний цикл переходу з одного дисплея на інший. Він повинен бути досить високим, щоб уникнути мерехтіння дисплея. Людське око мляве, в кінотеатрі 24 кадри в секунду, з телевізором, щоб бути на безпечній стороні, що також нерухомі зображення спокійні, кожен сегмент повинен контролюватись не менше 100 Гц, тому він підключається принаймні кожні 10 мс. У виняткових випадках, однак, навіть 100 Гц все ще можуть мерехтіти, наприклад, коли дисплей рухається швидко або коли виникають перешкоди зі штучними джерелами світла, які працюють зі змінним струмом.

Світлодіодні індикатори бувають двох типів.
У першому їх усі катоди, тобто. негативні висновки всіх світлодіодів, об'єднані разом і виділено відповідний висновок на корпусі.
Інші висновки індикатора з'єднані до анода кожного світлодіодів (рис.3, а). Така схема називається "схема із загальним катодом".
Також є індикатори, у яких світлодіоди кожного з сегментів підключені за схемою із загальним анодом (рис.3, б).



Рис.3.

Кожен сегмент позначений відповідною літерою. На малюнку 4 представлено їхнє розташування.

Рис.4.

Як приклад розглянемо дворозрядний семисегментний індикатор GND-5622As-21 червоного свічення. До речі, існують і інші кольори, залежно від моделі.
За допомогою тривольтної батарейки можна включати сегменти, а якщо об'єднати групу висновків у купку і подати на них живлення, можна навіть відображати цифри. Але такий метод є незручним, тому для управління семисегментними індикаторами використовують регістри зсуву та дешифратори. Також, нерідко, висновки індикатора підключаються безпосередньо до виходів мікроконтролера, але в тому випадку, коли використовуються індикатори з низьким споживанням струму. На малюнку 5 наведено фрагмент схеми з використанням PIC16F876A.



Рис.5.

Для управління семисегментним індикатором часто використовується дешифратор К176ІД2.
Ця мікросхема здатна перетворити двійковий код, що складається з нулів та одиниць у десяткові цифри від 0 до 9.

Щоб зрозуміти, як це працює, потрібно зібрати просту схему (рис.6). Дешифратор К176ІД2 виконаний у корпусі DIP16. Він має 7 вихідних висновків (висновки 9 - 15), кожен з яких призначений для певного сегмента. Управління точкою тут не передбачено. Також мікросхема має 4 входи (висновки 2 – 5) для подачі двійкового коду. На 16-й та 8-й висновок подається плюс та мінус харчування відповідно. Інші три висновки є допоміжними, про них я розповім трохи згодом.



Рис.6.

DD1 - К176ІД2
R1 - R4 (10 - 100 кОм)
HG1 - GND-5622As-21

У схемі присутні 4 тумблери (можна будь-які кнопки), при натисканні на них на входи дешифратора подається логічна одиниця від плюсу живлення. До речі, живиться сама мікросхема напругою від 3 до 15 Вольт. У цьому прикладі вся схема живиться від 9-вольтової "крони".

Також у схемі присутні 4 резистори. Це так звані резистори, що підтягують. Вони потрібні, щоб гарантувати на логічному вході низький рівень за відсутності сигналу. Без них показання на індикаторі можуть відображатися некоректно. Рекомендується використовувати однаковіопору від 10 кОм до 100 кОм.

На схемі висновки 2 та 7 індикатора HG1 не підключені. Якщо підключити до мінусу живлення висновок DP, світиться децимальна точка. А якщо подати мінус на висновок Dig.2, то світитиметься і друга група сегментів (показуватиме той самий символ).

Входи дешифратора влаштовані так, що для відображення на індикаторі чисел 1, 2, 4 і 8 потрібно натиснути лише одну кнопку (на макеті встановлені тумблери, що відповідають входам D0, D1, D2 і D3). У разі відсутності сигналу відображається цифра нуль. Під час подачі сигналу на вхід D0 відображається цифра 1. І так далі. Для відображення інших цифр потрібне натискання комбінації тумблерів. А які саме слід натискати нам підкаже таблиця 1.


Таблиця 1.

Щоб відобразити цифру "3" необхідно подати логічну одиницю на вхід D0 і D1. Якщо подати сигнал на D0 та D2, то відобразиться цифра "5"(Рис.6).



Рис.6.

Тут представлена ​​розширена таблиця, у якій бачимо як очікувану цифру, а й ті сегменти (a - g), які складуть цю цифру.



Таблиця 2.

Допоміжними є 1, 6 і 7 висновки мікросхеми (S, M, К відповідно).

На схемі (рис.6) 6-ий висновок "М" заземлений (на мінус живлення) і на виході мікросхеми є позитивна напруга для роботи з індикатором із загальним катодом. Якщо використовується індикатор із загальним анодом, то на 6-й висновок слід подати одиницю.

Якщо на 7-й висновок "До" подати логічну одиницю, то символ індикатора гаситься, нуль дозволяє індикацію. У схемі цей висновок заземлений (на мінус живлення).

Перший висновок дешифратора подана логічна одиниця (плюс живлення), що дозволяє відображати перетворений код на індикатор. Але якщо подати на даний висновок (S) логічний нуль, то входи перестануть приймати сигнал, а на індикаторі застигне поточний знак.

Варто зауважити одну цікаву річ: ми знаємо, що тумблер D0 містить цифру "1", а тублер D1 - цифру "2". Якщо натиснути обидва тумблери, то висвітиться цифра 3 (1+2=3). І в інших випадках на індикатор виводиться сума цифр, що становлять цю комбінацію. Приходимо висновку, що входи дешифратора розташовані продумано і мають дуже логічні комбінації.

Також ви можете переглянути відео до цієї статті.

Існують такі параметри, для яких було б зручніше видавати об'єктивну інформацію, ніж індикацію. Наприклад, температура повітря на вулиці чи час на будильнику. Так, все це можна було б зробити на лампочках або світлодіодах, що світяться. Один градус - один світлодіод, що горить, або лампочка і тд. Але рахувати ці світлячки – ну вже ні! Але, як кажуть, найпростіші рішення – найнадійніші. Тому, довго не думаючи, розробники взяли прості світлодіодні смуги та розставили їх у потрібному порядку.

На початку ХХ століття з появою електронних ламп з'явилися перші газорозрядні індикатори.

За допомогою таких індикаторів можна вивести цифрову інформацію в арабських цифрах. Раніше на таких лампах робили різну індикацію для приладів та інших електронних пристроїв. Нині газорозрядні елементи майже ніде не застосовуються. Але ретро – це завжди модно, тому багато радіоаматорів збирають для себе і своїх близьких прекрасний годинник на газорозрядних індикаторах.


Мінус газорозрядних ламп – є багато електроенергії. Про довговічність можна й посперечатися. У нас в університеті досі у лабораторних кабінетах експлуатуються частотоміри на газорозрядних індикаторах.

Семисегментні індикатори

З появою світлодіодів ситуація кардинально змінилася на краще. Світлодіоди власними силами споживають невеликий струм. Якщо розставити їх у потрібному положенні, то можна висвічувати будь-яку інформацію. Для того, щоб висвітлити всі арабські цифри, достатньо всього сім світлодіодних смуг, що світяться, - сегментів, виставлених певним чином:

Майже всім таким семисегментним індикаторам додають також і восьмий сегмент - точку, для того, щоб можна було показати ціле і дробове значення будь-якого параметра

За ідеєю у нас виходить восьми сегментний індикатор, але по-старому його також називають семисегментним.

Що виходить у результаті? Кожна смужка на семисегментному індикаторі засвічується світлодіодом або групою світлодіодів. В результаті, засвітивши певні сегменти, ми можемо вивести цифру від 0 до 9, а також літери та символи.

Види та позначення на схемі

Існують однорозрядні, дворозрядні, трирозрядні та чотирирозрядні семисегментні індикатори. Понад чотири розряди я не зустрічав.

На схемах семисегментний індикатор виглядає приблизно так:

Насправді, крім основних висновків, кожен семисегментний індикатор також має загальний висновок із загальним анодом (ОА) або загальним катодом (ОК)

Внутрішня схема семисегментного індикатора із загальним анодом виглядатиме ось так:


а із загальним катодом ось так:


Якщо семисегментний індикатор у нас із загальним анодом (ОА), то у схемі ми маємо на цей висновок подавати "плюс" харчування, а якщо із загальним катодом (ОК) - то "мінус" або землю.

Як перевірити семисегментний індикатор

У нас є ось такі індикатори:


Для того щоб перевірити сучасний семисегментний індикатор, нам достатньо мультиметра з функцією продзвонювання діодів. Для початку шукаємо загальний висновок – це може бути ОА або ОК. Тут лише методом тику. А далі перевіряємо працездатність інших сегментів індикатора за схемами вище.

Як ви бачите нижче на фото, у нас загорівся сегмент, що перевіряється. Так само перевіряємо й інші сегменти. Якщо всі сегменти горять, такий індикатор цілий і його можна використовувати у своїх розробках.


Іноді напруги на мультиметрі бракує перевірки сегмента. Тому беремо блок живлення і виставляємо на ньому 5 Вольт. Щоб обмежити струм через сегмент, перевіряємо через резистор на 1-2 кілометри.


Так само перевіряємо індикатор від китайського приймача


У схемах семисегментні індикатори поєднуються з резисторами на кожному висновку

У нашому сучасному світі семисегментні індикатори замінюються рідкокристалічними індикаторами, які можуть висвічувати будь-яку інформацію.

але для того, щоб їх використовувати, потрібні певні навички у схемотехніці таких пристроїв. Тому семисегментні індикатори досі знаходять застосування завдяки дешевизні та простоті використання.

На прохання трудящих вирішив я розповісти про чудову річ під назвою 7-ми сегментний світлодіодний індикатор. Для початку, що це таке. Ось така штука. Це один розряд, так само бувають два розрядні, три і чотири розрядні. Бачив ще шість розрядних. Після кожного розряду стоїть десяткова точка. Якщо розрядів чотири, то найчастіше після другого розряду можна зустріти двокрапку для індикації секунд при виведенні часу. Розібравшись із залізцями давайте перейдемо до вивчення схеми. Що взагалі таке динамічна індикація і для чого вона потрібна. Так як індикатор 7 сегментний, то для відображення цифри використовується всього 7 сегментів. Позначаються вони завжди латинськими літерами A, B, C, D, E, F, G та DPДивимося картинку. Під кожним сегментом розташований світлодіод. Усі світлодіоди одним кінцем об'єднані. Або анодами чи катодами, а протилежні кінці виведені назовні. Легко помітити, що для відображення цифри необхідно використовувати 8 висновків. Один загальний та сім для сегментів. Якщо це стосується одного розряду, то тут думати нема про що, просто вішаємо все на один порт. А якщо розрядів чотири? Вісім помножимо на чотири тридцять два. О... Та над таким індикатором 32 мега одна корпітиме. Так річ не піде. Є два рішення. Наша з вами динамічна індикація чи статична. Щоб далі розбиратися, давайте подивимося схему включення індикатора.

Ця схема передбачає динамічну індикацію. Та що я все динамічна та статична. В чому різниця?. Статична індикація - це коли ми задали кожному розряду за своєю цифрою і вона постійно горить, а динамічна - це коли ми виводимо цифру в перший розряд, потім його гасимо і виводимо в другий розряд, потім його гасимо і виводимо в третій розряд і так далі не закінчаться розряди. Після останнього розряду переходимо знову до першого і по колу. Якщо це робити повільно то можна буде бачити цифрову рядок, що біжить, а якщо збільшити швидкість наприклад до 50 Гц, то вже мерехтіння очей не побачить. Ось таким чином працює динамічна індикація. Давайте розберемо схему. Ліворуч МК ATmega8 за нею на порту D висить мікросхема 74ALS373. Навіщо вона потрібна? Справа в тому, що індикатор це просто 8 світлодіодів зібраних в якусь матрицю. Тобто індикатор можна подати у вигляді лінійки з 8 світлодіодів. А як відомо світлодіоди їдять по відношенню до МК го го скільки. Звичайно не можна підключатися безпосередньо, але краще поставити між МК і індикатором який-небудь ретранслятор. Ось для цих цілей я і вирішив використовувати 8-розрядний буфер з клямкою. Чому саме його? З урахуванням того, що індикатор я використовую із загальним анодом, тобто для завдання цифри активний рівень 0, то можна було б сміливо використовувати мікросхему ULN2003A(7 транзисторних збірок за схемою Дарлінгтона) і не паритися з буфером, але... Але в тому що ULN2003A має на борту тільки NPN транзистори і я можу використовувати індикатор тільки із загальним анодом, а якщо потрібно поставити із загальним катодом? Отут і допоможе буфер, тому що я туди напишу, то й буде на виході. Хочеш 0, хочеш 1. Керуючі ніжки підключені в режимі транслятора. Тобто буфер виводить на вихід те саме, що і на вході. Аля псевдо-гальванічна розв'язка. За буфером йдуть струмообмежуючі резистори. Пам'ятаємо, це світлодіоди і без резисторів згорять. Номінал резисторів потрібно підбирати трохи менше, ніж допустимо. Справа в тому, що динамічна індикація виводить символи з якоюсь частотою і вона з рідні ШИМу, тобто чим вище частота, тим вище контрастність. І при максимально комфортній контрастності цифри світитимуть трохи тьмяніше. Тому резистори потрібно брати трохи меншого номіналу. Я використовував 360Ом тільки тому, що у мене такі були в наявності. Далі після резистори наш індикатор. З іншого боку, де аноди, я підключив перші чотири розряди порту С. Так, зі схемою начебто розібралися. Тепер обговоримо алгоритм програми. Для того щоб по черзі включати розряди індикатора, напишемо окрему функцію і будемо нескінченно викликати її в основному тілі програми. Конкретніше, функція отримуватиме число від 0 до 9999, розбиратиме його на розряди і потім виводити кожен розряд на своєму місці. Якщо число має кількість розрядів менше 4, то пустушки зліва заповнюватимемо нулями. Рівняємося по правому краю. Бігати по розрядах зліва направо. Щоб було видно якісь дії, то ми використовуючи переривання від лічильника, раз на секунду збільшуватимемо число на одиницю. Так завдання поставлене до бою. #define F_CPU 7372800UL // Частота кварцу #include #include #include volatile unsigned int test = 9980; // Змінна для виведення на індикатор ISR(TIMER1_COMPA_vect) // Обробник переривання зі збігом таймера 1 (test++; // Збільшити число, що виводиться if(test > 9999) test = 0; // Якщо вийшов за межі чотирьох розрядів, обнулити TCNT1H = 0x00; // Скидання регістру TCNT1L=0x00; // Рахунки ) void dig_out (int num); // Оголошення функції виведення на індикатор int main (void) (DDRC = 0x0F; // Налаштування портів DDRD = 0xFF; // для роботи з індикатором Порт C для розрядів, Порт D для цифр TCCR1A = 0x00; // Налаштування таймера TCCR1B = 0x04; TCNT1H = 0x00; TCNT1L=0x00; OCR1AH=0x70; OCR1AL = 0x80; TIMSK = 0x10; sei(); // Дозвіл переривань while(1) (dig_out(test); //Постійно викликаємо функцію виведення поточного числа ) ) void dig_out(int num) // Функція виведення на індикатор 4-х розрядів (unsigned char i = 0; // Змінна лічильника unsigned char raz = 1; // Номер розряду unsigned char dig_num = (0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10); // Коди цифр для індикатора із загальним анодом unsigned char dig = (0, 0, 0, 0); // Масив для значення розряду if(num ( dig = 0; dig = 0; dig = 0; ) if (num // Для заповнення нулями лівих розрядів ( dig = 0; dig = 0; ) if (num // Для заповнення нулями лівих розрядів (dig = 0;) while (num> 999) // Отримання кількості тисяч ( dig++; num -= 1000; ) while(num > 99) // Отримання кількості сотень ( dig++; num -= 100; ) while(num > 9) // Отримання числа десятків ( dig++; num -= 10; ) dig = num; // Отримання кількості одиниць while(raz // Крутимося поки не заповнимо всі 4 розряди (PORTC = raz; // Вибираємо розряд PORTD = dig_num]; // Виводимо цифру raz = raz// Зрушуємо на наступний розряд i++; // Збільшуємо індекс наступної цифри _delay_ms(1); // Затримка 1 мс } } Ось і весь код. Розписувати його не буду, оскільки він має коментарі до кожного рядка. Нижче можна завантажити архів з проектом під AtmelStudio6.2 Якщо все ж таки виникнуть питання, то ласкаво просимо на форум. Ну і для найвибагливіших нижче відео всієї цієї балалайки))).