Подключение семисегментного дисплея к Arduino Uno


В этой статье мы рассмотрим подключение семисегментного дисплея (индикатора) к плате Arduino Uno. Дисплей может отображать цифры от 0 до 9. Вначале рассмотрим общие принципы работы семисегментного дисплея.

Подключение семисегментного дисплея к Arduino Uno: внешний вид конструкции

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

Внутренние схемы соединений семисегментных дисплеевВ семисегментном дисплее с общим катодом (ОК) отрицательные выводы всех светодиодов соединены вместе и образую общую землю. В схеме с общим анодом (ОА) положительные выводы всех светодиодов соединены вместе и они образуют общий вывод напряжения постоянного тока (VCC).

На нашем сайте есть достаточно подробные статьи про устройство семисегментных дисплеев и их программированию – они написаны для микроконтроллеров семейства AVR, но я думаю провести аналогию с Arduino вам будет не трудно:

Также можно посмотреть статью о подключении семисегментного дисплея к микроконтроллеру AVR ATmega32.

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. Семисегментный дисплей HDSP5503 (2 шт.) – или другой подобный с общим катодом (купить на AliExpress).
  3. Конденсатор 47 пФ, соединенный по питанию (купить на AliExpress).
  4. Напряжение питания 5 В.

Работа схемы

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

Схема подключения семисегментного дисплея к Arduino UnoВ схеме необходимо сделать следующие соединения семисегментного дисплея с платой Arduino:
PIN1 или E к контакту PIN 6 of ARDUINO UNO
PIN2 или D к контакту PIN 5
PIN4 или C к контакту PIN 4
PIN5 или H или DP к контакту PIN 9 /// в этом соединении нет необходимости если мы не будем использовать десятичную точку (decimal point)
PIN6 или B к контакту PIN 3
PIN7 или A к контакту PIN 2
PIN9 или F к контакту PIN 7
PIN10 или G к контакту PIN 8
PIN3 или PIN8 или CC (общий катод) на землю через резистор 100Ω.

Теперь, чтобы лучше понять принцип работы семисегментного дисплея, представим что он как будто подсоединен к порту микроконтроллера, то есть сегмент A соединен с контактом PIN0 микроконтроллера, сегмент B – с контактом PIN1, сегмент А – с контактом PIN3, сегмент А – с контактом PIN4, сегмент А – с контактом PIN5, сегмент А – с контактом PIN6. Общий вывод соединен с землей как показано на следующем рисунке.

Семисегментный дисплей с общим катодом

Семисегментный дисплей легко проверить используя мультиметр в режиме диода. На каждом сегменте дисплея не должно быть напряжения большего 5 В, иначе дисплей будет необратимо поврежден. Чтобы исключить подобное общий резистор должен быть подключен к общему выводу дисплея как показано на выше приведенной схеме нашего устройства.

Теперь, чтобы на семисегментном дисплее отобразить 0, необходимо подать питающие напряжения как показано на рисунке ниже.

Отображение 0 на семисегментном дисплее

То есть чтобы зажечь светодиоды в сегментах “A, B, C, D, E F” (то есть отобразить на дисплее цифру 0) нам необходимо подать питающее напряжение на контакты PIN0, PIN1, PIN2, PIN3, PIN4 and PIN5.

Теперь, если мы хотим отобразить цифру 1 на дисплее, мы должны подать питающее напряжение на сегменты “B, C”, то есть запитать контакты PIN1, PIN2. Эта ситуация показана на следующем рисунке.

Отображение 1 на семисегментном дисплее

То есть, чтобы отобразить какую либо цифру на дисплее, необходимо подать питание на соответствующие контакты дисплея.

Исходный код программы

В представленной программе мы будем последовательно подавать питание на соответствующие контакты семисегментного дисплея, чтобы по очереди отображать на нем цифры от 0 до 9.

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
5 792 просмотров

Комментарии

Подключение семисегментного дисплея к Arduino Uno — 2 комментария

  1. #define segA 2 // подключение сегмента A к PIN2
    #define segB 3 // подключение сегмента B к PIN3
    #define segC 4 // подключение сегмента C к PIN4
    #define segD 5 // подключение сегмента D к PIN5
    #define segE 6 // подключение сегмента E к PIN6
    #define segF 7 // подключение сегмента F к PIN7
    #define segG 8 // подключение сегмента G к PIN8int COUNT=0; //объявляем переменную для счета от 0 до 9

    void setup()
    {
    for (int i=2;i<9;i++)
    {
    pinMode(i, OUTPUT); // конфигурируем все используемые контакты на вывод данных
    }
    }

    void loop()
    {

    {

    // показываем ”0” на дисплее
    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, LOW);

    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, LOW);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, LOW);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, LOW);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, LOW);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, LOW);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, LOW);
    digitalWrite(segE, LOW);
    digitalWrite(segF, LOW);
    digitalWrite(segG, LOW);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, HIGH);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);

    digitalWrite(segA, HIGH);
    digitalWrite(segB, HIGH);
    digitalWrite(segC, HIGH);
    digitalWrite(segD, HIGH);
    digitalWrite(segE, LOW);
    digitalWrite(segF, HIGH);
    digitalWrite(segG, HIGH);

    }

    {

    delay(1000); /// увеличиваем значение счетчика каждую секунду
    }

    {

    delay(1000);
    }
    }

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *