Можно ли подключить 36-контактный 4-разрядный 7-сегментный дисплей к Arduino Uno R3?
Прежде всего, вот техническое описание 4-разрядного 7-сегментного дисплея, который я использую: http://www.kingbrightusa.com/images/catalog/SPEC/ca56-11ewa.pdf
Как я могу сделать счетчик или часы из этого конкретного светодиодного дисплея, учитывая тот факт, что у меня недостаточно цифровых контактов для управления контактами светодиода?
@Neri-kun, 👍0
Обсуждение3 ответа
Лучший ответ:
Требуется только 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
Как упомянул Юрадж, вы можете использовать регистры сдвига, такие как 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
На самом деле для этого дисплея нужно всего 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
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
- Не удается снова загрузиться после смены платы
- Генерация стабильной частоты
- В чем разница между ATMEGA32 и ATMEGA328?
- Arduino UNO для получения подписи чипа ATmega328P-PU
- Последовательная связь ESP8266 с ATMega328P
- Каково время нарастания выходного вывода atmega328, изменяющего свое состояние?
- Нужна помощь в программировании ардуино на ассемблере
https://miguelpynto.github.io/ShiftDisplay/, @Juraj
Недавно я играл с семисегментным светодиодным дисплеем часов https://github.com/jandrassy/lab/blob/master/KitchenTimer/KitchenTimer.ino., @Juraj