Седем сегментните дисплеи са важни дисплейни единици в електрониката и се използват широко за показване на числа от 0 до 9. Може също така да показва някои азбучни букви като A, B, C, H, F, E и т.н. В този урок ще научим как да свържа 7-сегментен дисплей с 8051 микроконтролер. Използваме микроконтролер AT89S52 от серия 8051.
Преди взаимодействие трябва да научим за 7-сегментен дисплей. Това е най-простата единица за показване на цифри и символи. Той просто се състои от 8 светодиода, всеки светодиод, използван за осветяване на един сегмент от модула, и 8 -ми светодиод, използван за осветяване на DOT в 7 сегментен дисплей. Можем да отнесем всеки сегмент като ЛИНИЯ, тъй като виждаме, че в единицата има 7 реда, които се използват за показване на число / символ. Можем да препращаме всеки ред / сегмент "a, b, c, d, e, f, g", а за точков знак ще използваме "h". Има 10 щифта, в които 8 пина се използват за обозначаване на a, b, c, d, e, f, g и h / dp, двата средни щифта са общ анод / катод на всички той светодиоди. Тези общи анод / катод са вътрешно къси, така че трябва да свържем само един COM щифт.
Има два типа 7-сегментни дисплеи: Общ анод и Общ катод:
Общ анод: При това всички отрицателни клеми (катод) на всичките 8 светодиода са свързани заедно (вижте диаграмата по-долу), наречени COM. И всички положителни терминали остават сами.
Общ катод: При това всички положителни клеми (аноди) на всичките 8 светодиода са свързани заедно, наречени COM. И всички отрицателни термики остават сами.
Електрическа схема и работно разширение
Тук използваме общ аноден тип от 7 сегмента, защото трябва да свържем светодиоди в обратна посока. Тъй като знаем, че микроконтролерът не осигурява достатъчно мощност за светене на светодиода, така че трябва да свържем катода на светодиода към щифта на микроконтролера и анода на светодиода към захранването. Можете да разберете тази негативна логическа концепция в тази статия „LED взаимодействие с микроконтролер 8051“. Трябва също да прочетете тази статия, за да разберете основната връзка на микроконтролера като кристал и схема за нулиране.
Както е показано по-горе, схемата за свързване на 7 сегментен дисплей с 8051 микроконтролер, ние свързахме a, b, c, d, e, f, g, h към щифтове 2.0 до 2.7 означава, че свързваме 7 сегмента към порт 2 на микроконтролера. Сега да предположим, че искаме да покажем 0, тогава трябва да светим всички светодиоди, с изключение на светодиода, който принадлежи на линия "g" (вижте диаграмата по-горе), така че щифтовете от 2.0 до 2.6 трябва да са на 0 (трябва да са 0, за да включите светодиода като за отрицателна логика) и пин 2.7 и 2.8 трябва да са на 1 (трябва да е 1, за да ИЗКЛЮЧИТЕ светодиода според отрицателната логика). Така светодиодите, свързани към щифтове 2.0 до 2.6 (a, b, c, d, e, f), ще бъдат включени, а светодиодите, свързани към 2.7 и 2.8 (g и h), ще бъдат изключени, което ще създаде „0“ в 7 сегмент. Така че се нуждаем от битов шаблон 11000000 (Пин 8 е най-високият бит, така че започвайки от P2.7 до P2.0), а HEX кодът за двоичен 11000000 е „C0“. По същия начин можем да изчислим за всички цифри. Тук трябва да отбележим, че поддържаме „точка / час“ винаги изключена,така че всеки път трябва да му даваме LOGIC „1“. По-долу е дадена таблица за всички числа, докато се използва сегмент Common Anode 7.
Цифра за показване |
hgfedcba |
Шестнадесетичен код |
0 |
11000000 |
С0 |
1 |
11111001 |
F9 |
2 |
10100100 |
A4 |
3 |
10110000 |
B0 |
4 |
10011001 |
99 |
5 |
10010010 |
92 |
6 |
10000010 |
82 |
7 |
11111000 |
F8 |
8 |
10000000 |
80 |
9 |
10010000 |
90 |
Обяснение на кода
Създадохме функция ms_delay, за да осигури закъснението в милисекунди, като това закъснение обикновено се предоставя във всяка програма за микроконтролер, така че микроконтролерът да може да завърши вътрешната си работа.
След това създадохме масив от шестнадесетичните кодове за 0 до 9 (вижте таблицата по-горе) и накрая изпратихме шестнадесетичните кодове до порт 2, който е свързан с общ аноден 7 сегмент. Така по този начин цифрите се показват на 7-сегментния дисплей.
Сега имаме само 4 порта в микроконтролера и какво, ако искаме да покажем данните в повече от четири 7 сегмента ?? За да се реши този проблем, се появява техниката на мултиплексиране. Трябва да мултиплексираме множество 7 сегментни единици. Прочетете също интерфейс 7-сегментен дисплей с AVR микроконтролер.