Електричество | Бележки на електротехник. Експертен съвет

Превключваща верига на 7 сегментни индикатори. Седемсегментно управление на индикатора

При този подход само 2 цифрови изхода на Arduino се използват за извеждане на число с произволен брой цифри.

Например, ще покажем на индикаторите броя секунди, които са изминали от началото на работата.

Изходни компоненти

Принцип на действие

Седемсегментен индикатор е просто набор от обикновени светодиоди в един пакет. Просто са облицовани с осмица и имат формата на клечка-сегмент. Можете да го свържете директно към Arduino, но тогава 7 пина ще бъдат заети и програмата ще трябва да приложи алгоритъм за преобразуване на число от двоично представяне в сигнали, съответстващи на „шрифта на калкулатора“.

За да се опрости тази задача, има 7-сегментен драйвер. Това е обикновен чип с вътрешен брояч. Има 7 изхода за свързване на всички сегменти (a, b, c, d, e, f, g щифтове), щифт за нулиране на брояча на 0 (пин за нулиране) и щифт за увеличаване на стойността с един (пин за часовник) . Стойността на вътрешния брояч се преобразува в сигнали (вкл./изкл.). контакти a-gтака че да видим съответната арабска цифра.

На микросхемата има друг изход, обозначен като "÷10". Стойността му е НИСКА през цялото време, с изключение на момента на препълване, когато стойността на брояча е 9 и се увеличава с едно. В този случай стойността на брояча става отново 0, но изходът "÷10" става HIGH до следващото увеличение. Може да се свърже към часовниковия щифт на друг драйвер и по този начин да се получи брояч за двуцифрени числа. Продължавайки тази верига, можете да отпечатвате произволно дълги числа.

Микросхемата може да работи с честота до 16 MHz, т.е. той ще улови промените на щифта на часовника, дори ако се случват 16 милиона пъти в секунда. Arduino работи на същата честота и това е удобно: за да изведете определено число, достатъчно е да нулирате брояча на 0 и бързо да увеличите стойността с едно до определеното. Не се забелязва за окото.

Връзка

Първо, нека инсталираме индикаторите и драйверите на макетната платка. Всички те имат крака от двете страни, следователно, за да не се скъсят противоположните контакти, е необходимо тези компоненти да се поставят върху централния жлеб на дъската. Жлебът разделя дъската на 2 несвързани половини.

    16 - към захранващата шина: това е мощността за микросхемата

    2 "деактивиране на часовника" - към земната шина: ние не го използваме

    3 "активиране на дисплея" - към захранващата шина: това е мощността за индикатора

    8 "0V" - към земната шина: това е общата маса

    1 "часовник" - през падащ резистор към земята. По-късно ще свържем сигнала от Arduino към този щифт. Наличието на резистор е полезно, за да се избегне фалшиво задействане поради околния шум, докато входът не е свързан към нищо. Подходяща стойност е 10 kOhm. Когато свържем този щифт към изхода на Arduino, резисторът няма да играе роля: сигналът ще издърпа микроконтролера към земята. Следователно, ако знаете, че драйверът винаги ще бъде свързан към Arduino по време на работа, изобщо не можете да използвате резистор.

    Нека оставим 15 "нулиране" и 5 "÷10" несвързани засега, но имайте предвид - ще ни трябват в бъдеще


Щифтове 3 и 8 на индикатора са обозначени като "катод", те са общи за всички сегменти и трябва да бъдат директно свързани към обща маса.


Това е последвано от най-старотата работа: свързване на изходите на микросхемата със съответните аноди на индикатора. Необходимо е да ги свържете чрез токоограничаващи резистори като обикновените светодиоди. В противен случай токът в този участък от веригата ще бъде по-висок от нормалното и това може да доведе до повреда на индикатора или микросхемата. 220 ома е добре.

Необходимо е да се свържете чрез сравняване на изводите на микросхемата (изходи a-g) и изводите на индикатора (входове a-g)



Повторете процедурата за втората цифра


Сега си спомнете за щифта „нулиране“: трябва да ги свържем заедно и да ги издърпаме към земята чрез падащ резистор. По-късно ще им донесем сигнал от Arduino, за да може да нулира цялата стойност и в двата драйвера.

Ще подадем и сигнал с “÷10” от десния драйвер към входа “часовник” на левия. По този начин получаваме схема, способна да показва числа с две цифри.


Струва си да се отбележи, че „часовникът“ на левия драйвер не трябва да се дърпа с резистор към земята, както беше направено за десния: връзката му с „÷10“ сама по себе си ще направи сигнала стабилен и издърпването му към земята може само да наруши стабилността на предаването на сигнала.

Желязото е готово, остава да се приложи проста програма.

Програмиране

7segment.pde #define CLOCK_PIN 2 #define RESET_PIN 3 /* * Функцията resetNumber нулира текущата стойност * на брояча */ void resetNumber() ( // За да нулирате за момент, поставете контакт // нулиране на HIGH и обратно на LOW digitalWrite(RESET_PIN, HIGH) ; digitalWrite(RESET_PIN, LOW) ; ) /* * Функцията showNumber задава показанията на индикатора * на дадено неотрицателно число `n`, независимо * от предишната стойност */ void showNumber(int n) ( // На първо място, нулирайте текущата стойност resetNumber() ; // След това бързо „щракнете“ върху брояча до желания// стойности докато (n--) ( digitalWrite(CLOCK_PIN, HIGH) ; digitalWrite(CLOCK_PIN, LOW) ; ) ) void setup() ( pinMode(RESET_PIN, OUTPUT) ; pinMode(CLOCK_PIN, OUTPUT) ; // Нулираме брояча при стартиране, за да не се окаже // в произволно състояние resetNumber() ; ) void loop() ( // Получаване на броя на секундите в частична минута // от момента на стартиране и го показва на индикаторитепоказване ((милис() / 1000 ) % 60 ) ; забавяне (1000) ; )

Резултат

Свързваме пин 2 от Arduino към щифта на часовника на младши (десния) драйвер, пин 3 - към общото нулиране на драйверите; отглеждаме храна; включете го - работи!


Изработка на цифрова везна

Малко теория
Вероятно няма нужда да казваме какво представляват 7-сегментните индикатори. Колко трудно е да си представим област на технологиите, където те не се използват. Съответно, много статии са написани за тяхната връзка, но все пак ще се опитам да напиша моя :)
И така: какво е 7-сегментен индикатор?
Нека се обърнем към Уикипедия: „Седемсегментен индикатор е устройство за показване на цифрова информация. Това е най-простата реализация на индикатор, който може да показва арабски цифри.
Седемсегментният индикатор, както подсказва името му, се състои от седем дисплейни елемента (сегмента), които се включват и изключват поотделно. Като ги включите в различни комбинации, можете да направите от тях опростени изображения на арабски цифри. Често седемсегментните индикатори са направени в курсив.


Сегментите се обозначават с букви от A до G; осмият сегмент е десетичната запетая (DP), предназначен да показва дробни числа.

Всъщност този индикатор представлява 8 светодиода, разположени на панела по определен начин.
Съответно, най-простата схема за превключване е да свържете всички 8 крака към изходите на микроконтролера (микросхема - декодер) чрез баластни резистори и да приложите или "+" (за индикатори с общ анод) или "-" (за индикатори с общ катод) към общия проводник.
Пример за свързване на индикатор с общ анод за автоматичната трансмисия Lancer на веригата за индикация на предавките е показан по-долу



Но какво ще стане, ако трябва да покажете не 1 цифра, а 2,3,4 или повече?
И тук на помощ идва човешката психика. Ако на мозъка се покажат няколко бързо променящи се изображения, тогава без да има време да обработи всеки поотделно, той ще ги „слее“ заедно. Този принцип е в основата на анимацията. Тези. за да изведете няколко цифри (няколко цифри), трябва да свържете към микроконтролера не само проводниците на сегментите, но и общите проводници на всяка от цифрите. След това, за да изведете първата цифра (отново за верига с общ анод), трябва да приложите "+" само към общия проводник на първата цифра и "-" към необходимите проводници на сегментите. Задръжте изображението за 2-3 милисекунди, превключете към втория бит и направете същото с него, след което преминете към третото (четвърто и т.н.) поле или се върнете към първото. Правейки всичко това достатъчно бързо, ще получим една-единствена картина в мозъка, където всички разряди горят едновременно. За верига с общ катод, съответно, трябва да обърнете "-".



Между другото, транзисторите в тази схема са по избор - можете да свържете изходите на индикатора директно към изходите на микроконтролера и след това да не прилагате напрежение към тях (пинове 8-10 на тази схема), а по-скоро "привличате към земята", като извеждате "ниско" напрежение към тях или, просто казано, 0 "високо" напрежение (или 1) се прилага към общите клеми на разрядите, което не трябва да се този моментгоря.
Повече подробности за този метод на свързване са написани тук - arduino-kit.com.ua/instru…-indikator-i-arduino.html

Каква е "бяка" на тази схема? И фактът е, че за да изведете, например, трицифрено число, трябва да използвате 11 пина на микроконтролера, а 7 от тях, за да не раздуват програмата, трябва да се отнасят към един порт.
Всичко това е добре, но например Attiny2313 има само порт B, на който "висят" и двата входа на аналоговия компаратор.
И тук на помощ идват специални шофьори.
Най-често използваните драйвери са MAX7219 и MAX7221, управлявани от SPI. Материал за работа с тези драйвери, публикуван наскоро serdgosтук - . Затова няма да повтарям – желаещите могат да четат. Тези драйвери ви позволяват да намалите броя на участващите изходи, но отново изискват използването на допълнителна библиотека и са "вързани" към строго определени изводи на микроконтролера. Има ли още "хардкор" решения? Оказва се, че има драйвер за CD4026.

Описание на драйвера
Чипът CD4026 е предназначен за управление на 7-сегментни индикатори и представлява брояч до десет с вграден регистър за смяна.

Броячът се увеличава всеки път, когато щифтът "часовник" стане ВИСОКО (на нарастващия ръб). Изходите a-g стават ВИСОКИ според стойността на брояча и показват стойността му като арабска цифра, когато е свързан 7-сегментен дисплей с общ катод.


Изводът "нулиране" трябва да бъде издърпан към земята като цяло. Когато стане ВИСОКО, броячът се нулира.
Изводът "деактивиране на часовника" също трябва да бъде изтеглен към земята като цяло. Докато е ВИСОКО, сигналите към щифта "часовник" се игнорират.
Контактът за активиране на дисплея трябва да бъде захранен. В противен случай изходите a-g ще бъдат настроени на LOW. Контактът за активиране на изход връща стойността си с леко закъснение.
Контактът "÷10" (означен като h в таблицата) приема HIGH за стойности 0-4 и LOW за 5-9. Неговият изход може да бъде изпратен на входа "часовник" на следващия 7-сегментен драйвер за организиране на многоцифрен брояч.
Пинът "не 2" е НИСК, ако и само ако стойността на брояча е 2. В противен случай е ВИСОКА.
Работно захранващо напрежение: 3-15 V.

Източникът на сигнала беше Arduino Pro Micro с включени щифтове
Pin2 Изход на брояча
Pin3 Нулиране на брояча
Pin4 Разряд 1 връзка
Pin6 Разряд 2 връзка
Пин9 Изпускателна връзка 3
Не свързах точката, защото сега е излишна, но принципът на свързване е същият.

Програма
Тъй като Arduino участва. тогава съответният език се променя от C.
Програмата за хронометър, която брои секунди от момента на включването й, беше "набързо хвърлена", за да се провери изпълнението, така че е малко тромава - извинете.

#define CLOCK_PIN 2
#define RESET_PIN 3
#define DIGIT_1ПИН 4
#define DIGIT_2ПИН 6
#define DIGIT_3ПИН 9

невалидна нулиранеНомер()
{
// За да нулирате за момент, поставете контакт
// нулиране на HIGH и обратно на LOW
digitalWrite(RESET_PIN, HIGH);
digitalWrite(RESET_PIN, LOW);
digitalWrite(DIGIT_1PIN, HIGH);
digitalWrite(DIGIT_2PIN, HIGH);
digitalWrite(DIGIT_3PIN, HIGH);
}
void showNumber(float t)
(int n;
// На първо място, нулирайте текущата стойност
resetNumber();
// Извеждане на първата цифра
digitalWrite(DIGIT_1PIN, LOW);
n=int(t-int(t/10)*10);

// стойности
докато (n--) (

digitalWrite(CLOCK_PIN, LOW);
}
забавяне (2);
// Нулиране на брояча
resetNumber();
// Извеждане на втория бит
digitalWrite(DIGIT_2PIN, LOW);
n=int(t/10-int(t/100)*10);
// След това бързо „щракнете“ върху брояча до желания
// стойности
докато (n--) (
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
забавяне (2);
// Нулиране на брояча
resetNumber();
// Извеждане на третия бит
digitalWrite(DIGIT_3PIN, LOW);
n=int(t/100);
// След това бързо „щракнете“ върху брояча до желания
// стойности
докато (n--) (
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
забавяне (2);

}
void setup()(
pinMode(RESET_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(DIGIT_1PIN, OUTPUT);
pinMode(DIGIT_2PIN, OUTPUT);
pinMode(DIGIT_3PIN, OUTPUT);

// Нулираме брояча при стартиране, за да не се окаже
// в произволно състояние
resetNumber();
}

// Основен цикъл
празен цикъл ()
{
показва число((мили() / 1000));
}

Е, резултатът

Все още можете да намалите броя на щифтовете, като използвате регистри за смяна, но ще говорим за това отделно :)

Една година

LED (или светлинен диод) е оптичен диод, който излъчва светлинна енергия под формата на "фотони", когато е насочен напред. В електрониката този процес наричаме електролуминесценция. Цветът на видимата светлина, излъчвана от светодиодите, варира от синьо до червено и се определя от спектралното излъчване на светлината, което от своя страна зависи от различните примеси, които се добавят към полупроводниковите материали по време на тяхното производство.

Светодиодите имат много предимства пред традиционните лампи и тела и може би най-важното от тях е техният малък размер, издръжливост, различни цветове, ниска цена и лесна наличност, възможността за лесно взаимодействие с различни други електронни компоненти в цифровите схеми.

Но основното предимство на светодиодите е, че поради малкия им размер някои от тях могат да бъдат концентрирани в един компактен пакет, образувайки така наречения седемсегментен индикатор.

Седемсегментният дисплей се състои от седем светодиода (оттук и името му), подредени в правоъгълник, както е показано на фигурата. Всеки от седемте светодиода се нарича сегмент, тъй като, когато е осветен, сегментът е част от цифра (десетична или шестнадесетична). Понякога в един и същи пакет се използва 8-ми допълнителен светодиод или повече 7-сегментни дисплеи са свързани заедно, за да представят числа по-големи от десет.

Всеки от седемте LED сегмента на дисплея е свързан към съответната подложка от контактния ред, разположена директно върху правоъгълния пластмасов корпус на индикатора. LED щифтовете са маркирани с етикети от a до g, представляващи всеки отделен сегмент. Останалите контакти на LED сегментите са свързани помежду си и образуват общ изход.

Така че, отклонение напред, приложено към съответните щифтове на LED сегментите в определен ред, ще накара някои сегменти да светнат, а останалите да останат затъмнени, което ви позволява да подчертаете желания символ на числовия шаблон, който ще бъде показан на дисплей. Това ни позволява да представим всяка от десетте десетични цифри от 0 до 9 на 7-сегментен дисплей.

Общият щифт обикновено се използва за определяне на типа на 7-сегментния дисплей. Всеки светодиод на дисплея има два свързващи проводника, единият от които се нарича "анод", а другият, съответно, се нарича "катод". Следователно, седемсегментен светодиоден индикатор може да има два вида схема на дизайн - с общ катод (OK) и с общ анод (OA).

Разликата между тези два типа дисплеи е, че при ОК дизайна катодите на всичките 7 сегмента са директно свързани помежду си, докато при общия анод (OA) дизайн, анодите на всичките 7 сегмента са свързани един с друг. И двете схеми работят по следния начин.

  • Общ катод (OK) - взаимосвързаните катоди на всички LED сегменти имат логическо ниво "0" или са свързани към общ проводник. Отделните сегменти се осветяват чрез прилагане на "високо" логическо ниво или логически сигнал "1" към техния аноден изход през ограничаващ резистор, за да се създаде преднапрежение на отделни светодиоди.
  • Общ анод (OA) - анодите на всички LED сегменти са комбинирани и имат логическо ниво "1". Отделни сегменти на индикатора светят, когато всеки конкретен катод е свързан към земя, логическа "0" или сигнал с нисък потенциал през съответния ограничаващ резистор.

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

Въпреки че 7-сегментният индикатор може да се разглежда като един дисплей, той все още се състои от седем отделни светодиода в един пакет и като такива тези светодиоди трябва да бъдат защитени от свръхток. Светодиодите излъчват светлина само когато са насочени напред и количеството светлина, което излъчват, е пропорционално на тока напред. Това означава само, че интензитетът на светодиода нараства приблизително линейно с увеличаване на тока. Така че, за да се избегне повреда на светодиода, този преден ток трябва да бъде контролиран и ограничен до безопасна стойност от външен ограничаващ резистор.

Такива седемсегментни индикатори се наричат ​​статични. Техният съществен недостатък е големият брой изходи в пакета. За отстраняване на този недостатък се използват динамични схеми за управление на седемсегментни индикатори.

Седемсегментният индикатор стана много популярен сред радиолюбителите, защото е лесен за използване и разбираем.

От появата на радиотехниката и електрониката обратната връзка на електронно устройство и човек е придружена от различни сигнални светлини, бутони, превключватели и звънци (сигнал за готовност за микровълнова печка - звън!). Някои електронни устройства дават минимум информация, защото повече биха били излишни. Например, светещ светодиод на зарядното устройство за китайски телефон показва, че зарядното устройство е свързано към мрежата и към него се подава напрежение. Но има и параметри, за които би било по-удобно да се предостави обективна информация. Например температурата на въздуха навън или времето на будилника. Да, всичко това може да се направи и със светещи крушки или светодиоди. Един градус - един горящ диод или крушка. Колко градуса - толкова горящи индикатори. Преброяването на тези светулки е нещо обичайно, но отново, колко такива светлини ще са необходими, за да покажат температурата с точност до десетата от градуса? И изобщо каква площ ще заемат тези светодиоди и крушки на електронно устройство?

И в началото на двадесети век, с появата на електронни тръби, се появяват първите индикатори за газоразряд.

С помощта на такива индикатори беше възможно да се показва цифрова информация с арабски цифри. Преди това на тези лампи бяха направени различни индикации за инструменти и други електронни устройства. Понастоящем газоразрядните елементи почти не се използват никъде. Но ретрото винаги е модерно, така че много радиолюбители събират за себе си и своите близки прекрасни часовници на газоразрядни устройства.



Недостатъци на газоразрядните лампи - те ядат много. Издръжливостта е спорна. В нашия университет честотомери на газоразрядни устройства все още се използват в лабораторни помещения.

С появата на светодиодите ситуацията се промени драстично. Светодиодите теглят малко ток сами. Ако ги поставите в правилната позиция, можете да покажете абсолютно всякаква информация. За да се подчертаят всички арабски цифри, беше достатъчно само нещо седем (оттук и името седемсегментен индикатор) светещи LED ленти, изложени по определен начин:

към почти всички такива седемсегментни индикатори се добавя и осми сегмент - точка, за да може да се покаже цялата и дробна стойност на всеки параметър

на теория се получава осемсегментен индикатор, но по старомоден се нарича още седемсегментен индикатор и в това няма грешка.

Накратко, седемсегментният индикатор е светодиоди, разположени един спрямо друг в определен ред и затворени в един корпус.

Ако разгледаме схемата на единичен седемсегментен индикатор, тогава тя изглежда така:



Както виждаме, индикатор от седем сегмента може да бъде или с общ анод (OA), така че с общ катод (ОК). Грубо казано, ако имаме седемсегмент с общ анод (OA), тогава във веригата трябва да окачим "плюс" на този изход, а ако с общ катод (OK), тогава "минус" или маса . На който изход подаваме напрежение, такъв светодиод ще светне с нас. Нека демонстрираме всичко това на практика.

Разполагаме със следните LED индикатори:



Както виждаме, седемсегментаторите могат да бъдат едноцифрени и многоцифрени, тоест два, три, четири седемсегментиращи в един пакет. За да проверим модерен седемсегментен, за нас е достатъчен мултицет с функция за непрекъснатост на диода. Търсим общо заключение - може да бъде или ОА, или ОК - като напишете и тогава вече разглеждаме представянето на всички сегменти на индикатора. Проверяваме трицифрения седем сегмент:



Opanki, един сегмент ни гори, по същия начин проверяваме и други сегменти.

Понякога напрежението на карикатурата не е достатъчно, за да провери сегментите на индикатора. Затова вземаме захранването, настройваме го на 5 волта, закачаме 1-2 килоома резистор към един извод на захранването и започваме да проверяваме седемсегментния.



Защо имаме нужда от резистор? Когато към светодиода се приложи напрежение, той започва рязко да яде ток при включване. Следователно в този момент може да изгори. За да ограничите тока, резисторът е свързан последователно със светодиода. Повече подробности можете да намерите в тази статия.

По същия начин проверяваме четирицифрен седемсегмент от китайско радио



Не мисля, че трябва да има голям проблем с това. Във веригите седемсегментът се придържа към резистори на всеки изход. Това се дължи и на факта, че светодиодите, когато към тях се приложи напрежение, неистово консумират ток и изгарят.

В нашата съвременен святседемсегментаторите вече се заменят с LCD индикатори, които могат да показват напълно различна информация

но за да ги използвате, се нуждаете от определени умения в схемата на такива устройства. Досега няма нищо по-просто и по-евтино от LED седемсегментни индикатори.


Схема на свързване на едноцифрен седемсегментен индикатор
Схема на свързване на многоцифрен седемсегментен индикатор

Устройство за показване на цифрова информация. Това е най-простата реализация на индикатор, който може да показва арабски цифри. За показване на букви се използват по-сложни многосегментни и матрични индикатори.

Както казва името му, той се състои от седем дисплейни елемента (сегменти), които се включват и изключват поотделно. Като ги включите в различни комбинации, можете да направите от тях опростени изображения на арабски цифри.
Сегментите се обозначават с букви от A до G; осми сегмент - десетична запетая (десетична запетая, DP), предназначена за показване на дробни числа.
Понякога на седемсегментния дисплей се показват букви.

Те се предлагат в различни цветове, обикновено бели, червени, зелени, жълти и сини. Освен това те могат да бъдат с различни размери.

Също така LED индикаторът може да бъде едноцифрен (както на фигурата по-горе) и многоцифрен. По принцип на практика се използват едно-, дву-, три- и четирицифрени LED индикатори:

В допълнение към десет цифри, седемсегментните дисплеи могат да показват букви. Но само няколко от буквите имат интуитивно представяне от седем сегмента.
Латиница: главни 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.
На кирилица: A, B, C, G, g, E, i, N, O, o, P, p, R, C, s, U, H, Y (две цифри), b, e / Z.
Следователно седемсегментните индикатори се използват само за показване на най-простите съобщения.

Общо седемсегментният LED индикатор може да показва 128 знака:

В конвенционалния LED индикатор има девет извода: един отива към катодите на всички сегменти, а останалите осем към анода на всеки от сегментите. Тази схема се нарича "обща катодна верига", има и схеми с общ анод(тогава е вярно обратното). Често те правят не едно, а две общи заключения в различни краища на основата - това опростява окабеляването, без да увеличава размерите. Има и така наречени "универсални", но аз лично не съм попадал на такива. Освен това има индикатори с вграден регистър за смяна, което значително намалява броя на участващите изводи на порта на микроконтролера, но те са много по-скъпи и рядко се използват на практика. И тъй като необятността не може да бъде схваната, засега няма да разглеждаме такива показатели (а все още има индикатори с много голяма сумасегменти, матрица).

Многоцифрени LED индикаторичесто работят според динамичния принцип: изходите на едноименните сегменти на всички битове са свързани заедно. За да изведе информация за такъв индикатор, управляващата микросхема трябва циклично да подава ток към общите клеми на всички битове, докато токът се подава към изходите на сегмента в зависимост от това дали даденият сегмент свети в дадения бит.


Свързване на едноцифрен седемсегментен индикатор към микроконтролера

Диаграмата по-долу показва как е свързан едноцифрен седемсегментен индикаторкъм микроконтролера.
В същото време трябва да се има предвид, че ако индикаторът с ОБЩ КАТОД, тогава общият му изход е свързан към "земя", а сегментите се запалват чрез захранване логическа единицакъм изход на порта.
Ако индикаторът е ОБЩ АНОД, тогава общият му проводник се захранва "плюс"напрежение и сегментите се запалват чрез прехвърляне на изхода на порта в състоянието логическа нула.


Реализацията на индикацията в едноцифрен LED индикатор се осъществява чрез прилагане на двоичен код към изводите на порта на микроконтролера на съответната цифра на съответното логическо ниво (за индикатори с ОК - логически, за индикатори с OA - логически нули ).

Токоограничаващи резисториможе или не може да присъства в схемата. Всичко зависи от захранващото напрежение, което се подава на индикатора и спецификациииндикатори. Ако например напрежението, подавано към сегментите, е 5 волта и те са проектирани за работно напрежение от 2 волта, тогава е необходимо да се зададат токоограничаващи резистори (за да се ограничи токът през тях за повишено захранващо напрежение, а не изгаря не само индикатора, но и порта на микроконтролера).
Много е лесно да се изчисли стойността на токоограничаващите резистори, като се използва формулата на дядо Ома.
Например, характеристиките на индикатора са както следва (вземаме от листа с данни):
- работно напрежение - 2 волта
- работен ток - 10 mA (= 0,01 A)
- захранващо напрежение 5 волта
Формула за изчисление:
R= U/I (всички стойности в тази формула трябва да са в омове, волтове и ампери)
R= (захранващо напрежение - работно напрежение) / работен ток
R= (5-2)/0,01 = 300 ома

Схема на свързване на многоцифрен седемсегментен LED индикаторпо същество същото като при свързване на едноцифрен индикатор. Единственото нещо е, че контролните транзистори се добавят в катодите (анодите) на индикаторите:


Не е показано на диаграмата, но между базите на транзисторите и щифтовете на порта на микроконтролера е необходимо да се включат резистори, чието съпротивление зависи от вида на транзистора (стойностите на резисторите се изчисляват, но можете също се опитайте да използвате резистори с номинална стойност 5-10 kOhm).

Изпълнението на индикацията чрез цифри се извършва динамично:
- двоичният код на съответната цифра се задава на изходите на PB порта за 1 цифра, след което се прилага логическо ниво към управляващия транзистор от първата цифра
- двоичният код на съответната цифра се задава на изходите на PB порта за 2 цифри, след което се прилага логическо ниво към управляващия транзистор на втората цифра
- двоичният код на съответната цифра се задава на изходите на PB порта за 3-та цифра, след което логическото ниво се прилага към управляващия транзистор на 3-та цифра
- така в кръг
В този случай е необходимо да се вземе предвид:
— за индикатори с Добреприложена структура на управляващия транзистор NPN(управлява се от логическа единица)
— за индикатор с ОА- структурен транзистор PNP(контролирано от логическа нула)

При захранване с ниско напрежение на микроконтролера и LED индикатори с ниска мощност по принцип е възможно да откажете да използвате както токоограничаващи резистори, така и управляващи транзистори във веригата - свържете изходите на индикатора директно към изходите на микроконтролера портове, тъй като текущата консумация от сегментите намалява по време на динамична индикация. Трябва да се има предвид, че битовете при използване на индикатори с ОК се управляват от логическа нула, а индикаторите с ОА - от логическа единица.

Следните статии:
Част 2: Преобразуване на двоичния код на десетично число в кода на седемсегментен индикатор.