Можно ли подключить 36-контактный 4-разрядный 7-сегментный дисплей к Arduino Uno R3?

Прежде всего, вот техническое описание 4-разрядного 7-сегментного дисплея, который я использую: http://www.kingbrightusa.com/images/catalog/SPEC/ca56-11ewa.pdf

Как я могу сделать счетчик или часы из этого конкретного светодиодного дисплея, учитывая тот факт, что у меня недостаточно цифровых контактов для управления контактами светодиода?

, 👍0

Обсуждение

https://miguelpynto.github.io/ShiftDisplay/, @Juraj

Недавно я играл с семисегментным светодиодным дисплеем часов https://github.com/jandrassy/lab/blob/master/KitchenTimer/KitchenTimer.ino., @Juraj


3 ответа


Лучший ответ:

2

Требуется только 4 или 5 контактов; SCK (D13), MOSI (D11), выбор ведомого (D10). Возможно ШИМ (D9) для яркости. D12 не используется, но подключен как часть шины SPI.

Подключите аноды к +5.

Подключите катоды с токоограничивающим резистором на каждый катод к выходам 4 TPIC6C595 или TPIC6B595.

Для резистора предположим, что падение напряжения в худшем случае составляет 2 В, а потребляемый ток – 20 мА: (5 – 2 В)/0,02 А = 150 фкм.

Используйте выходной контакт PWM для управления контактом OE/ 595s для управления яркостью.

Затем сдвиньте данные в последовательно соединенные регистры сдвига по мере необходимости обновления.

byte dataMap[] = {
0b00111111, // 0 с битами, представляющими DP,g,f,e,d,c,b,a
0b00000110, // 1
0b01011011, // 2
// и т. д
};

где сегменты располагаются как

 а
фб
г
эк
d DP или двоеточие

затем вызовите массив в цикле(), сделайте из него функцию, если хотите.

   a
f     b
   g
e     c
   d      DP or colon

Интересно, где находятся DP5, DP6, образующие двоеточие? Я не вижу их в распиновке.

,

Сдвиговые регистры 595 не используют SPI. они могут быть обработаны периферийным устройством SPI, но я думаю, что они предшествуют SPI. Я использую функцию shiftOut Arduino. https://www.arduino.cc/en/Tutorial/ShiftOut, @Juraj

Я использую SPI для их загрузки все время, работает намного быстрее, чем shiftout(). Можно даже установить тактовую частоту SPI на 8 МГц (по сравнению со скоростью 4 МГц по умолчанию), чтобы загружать их безумно быстро. Убедитесь, что на контакте VCC каждого устройства установлен колпачок 0,1 мкФ. У меня обычно линия Clear подключена к +5, а OE/ подключена к GND, если только я не использую PWM на выходах., @CrossRoads


0

Как упомянул Юрадж, вы можете использовать регистры сдвига, такие как 74HC595, который использует протокол SPI.

Немного подробнее об этом:

  • Вы можете каскадировать 4 регистра сдвига, всего 32 контакта для вывода
  • Если вам нужно 36, вы можете использовать оставшиеся 4 как обычные контакты (это, вероятно, самое простое решение)
  • Или вы можете использовать функцию выбора чипа/ведомого устройства SPI для управления двумя цепочками сдвиговых регистров. Так, например, одна цепочка использует 4 * 8 = 32 контакта, а другая (один регистр сдвига) использует 8 контактов (откуда используются только 4 контакта).

Чтобы сделать часы, используйте модуль / ИС RTC (часы реального времени), счетчик (если не очень высокая частота) не нуждается во внешней ИС.

,

для 4 цифр достаточно двух 74HC595, @Juraj

Правда… интересно, откуда взялись 36 контактов (возможно, 7 цифр + 1 точка, это 8 * 4 = 32 контакта, один для VCC/GND, а два других?), @Michel Keijzers

@MichelKeijzers под 36 я имею в виду: 4X7 = 28 сегментов, 4X1 = 4 точки, а остальные 4 — это контакты для общего анода для каждой цифры., @Neri-kun

В этом случае 32 контакта должны управляться регистрами сдвига, поэтому будет достаточно 4 регистров сдвига, и нет необходимости в CS/SS, просто каскадируйте их., @Michel Keijzers

1 с половиной регистра сдвига. один для 7 сегментов и точки и один для выбора цифры. два регистра могут обрабатывать 8 цифр. см. учебник., @Juraj

@Juraj, так даже проще, @Michel Keijzers


0

На самом деле для этого дисплея нужно всего 12 контактов.

Дисплей состоит из 4 отдельных светодиодных дисплеев с общим анодом, и вы можете использовать это в своих интересах.

Поскольку 4 кластера анодов являются отдельными, у вас есть возможность включить или выключить всю цифру. И в результате все катоды сегментов могут быть объединены вместе (то есть катоды всех сегментов А могут быть объединены, а катоды всех сегментов Вs и т. д.), что составляет тогда 8 кластеров по 4 катода.

Это означает, что у вас может быть 4 выхода для управления анодами (в идеале через PNP-транзисторы или P-канальные полевые МОП-транзисторы для обработки более высоких токов) и 8 выходов для управления всеми катодами (каждый через резистор и в идеале NPN-транзистор или NPN-транзистор). -channel MOSFET для работы с более высоким током).

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

Вот частичный пример, показывающий 4 цифры, но только сегменты A и B. Вы можете расширить это для сегментов C–G. GPIO_A1–GPIO_A4 активируются, чтобы выбрать отображаемую цифру. От GPIO_CA до GPIO_CG будет выбираться расположение сегментов на этой цифре.

схема

,

Хотя следует отметить, что такое мультиплексирование дисплеев повлияет на яркость., @chrisl

@chrisl Верно, но с уменьшенным рабочим циклом появляется возможность запускать светодиоды с более высоким током, что несколько компенсирует это., @Majenko

@Majenko Являются ли GPIO_A1, GPIO_A2, GPIO_A3 и GPIO_A4, а GPIO_CA, GPIO_CA NPN транзисторами, о которых вы говорите, соответственно? отключив даже один из них. Как мне правильно смоделировать вашу схему? И я спрашиваю об этом, потому что я никогда раньше не работал с таким онлайн-инструментом., @Neri-kun

Не обращайте внимания на «моделирование этой схемы», это бессмысленно. Последовательность следующая: 1. Включите GPIO_A1. 2. Включите комбинацию GPIO_C*. 3. Отключите все GPIO_C*. 4. Отключите GPIO_A1. 5. Включите GPIO_A2. 6. Включите комбинацию GPIO_C*. 7. Отключите все GPIO_C*. 8. Отключите GPIO_A2. И т. д..., @Majenko

Если вы просто хотите попробовать мультиплексирование. Вы можете исключить все транзисторы и использовать резисторы номиналом не менее 1,2 кОм. Таким образом, вы никогда не превысите 20 мА на вывод ввода-вывода на Arduino, даже если все сегменты цифры закрыты. Недостатком будет то, что он будет менее ярким. Подключите все четыре общих анода для четырех цифр (22,23,31,32) к 4 контактам Arduino. Затем соедините все сегменты A (20, 25, 29, 34) вместе и подключите их через резистор 1,2 кОм к выводу Arduino. Повторите для всех сегментов и DP. В итоге вы использовали бы 8 резисторов и 12 контактов Arduino., @Gerben