Семисегментные дисплеи являются важными единицами отображения в электронике и широко используются для отображения чисел от 0 до 9. Он также может отображать некоторые буквенные символы, такие как A, B, C, H, F, E и т. Д. В этом уроке мы собираемся изучить как связать 7-сегментный дисплей с микроконтроллером 8051. Мы используем микроконтроллер AT89S52 из серии 8051.
Перед подключением мы должны узнать о 7-сегментном дисплее. Это самый простой блок для отображения цифр и символов. Он просто состоит из 8 светодиодов, каждый из которых используется для освещения одного сегмента устройства, а 8- й светодиод используется для освещения точки на 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 сегментов, потому что нам нужно подключить светодиоды в обратном порядке. Как мы знаем, микроконтроллер не обеспечивает достаточной мощности для свечения светодиода, поэтому нам нужно подключить катод светодиода к выводу микроконтроллера, а анод светодиода - к источнику питания. Вы можете понять эту концепцию отрицательной логики в этой статье «Взаимодействие светодиодов с микроконтроллером 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), а шестнадцатеричный код для двоичного 11000000 - «C0». Аналогичным образом мы можем рассчитать для всех цифр. Здесь следует отметить, что мы всегда отключаем «точка / ч»,поэтому нам нужно каждый раз давать ему ЛОГИКУ «1». Ниже дана таблица для всех чисел при использовании сегмента Common Anode 7.
Цифра для отображения |
hgfedcba |
Шестнадцатеричный код |
0 |
11000000 |
C0 |
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-сегментного дисплея с микроконтроллером AVR.