Skip to content

Модули MicroPython для управления сегментными дисплеями на основе MAX7219, VK16K33, TM1652, 74HC595.

License

Notifications You must be signed in to change notification settings

octaprog7/seg_displays

Repository files navigation

Модули MicroPython для управления сегментными дисплеями на основе MAX7219, VK16K33, WeActStudio.DigitalTubeModule 0.8 inch на основе TM1652.

Дисплей на основе MAX7219

Это модуль, состоящий из 8 отдельных 7-сегментных индикаторов с десятичной точкой (DP), управляемых микросхемой MAX7219 по шине SPI.

Питание

Напряжений питания этого дисплея +5 Вольт, которое нужно подать на вывод VCC. Предусмотрите электролитический конденсатор емкостью 10 мкФ и параллельно ему керамический конденсатор емкостью 1 нФ, подключенные близко к выводам VCC и GND платы дисплея.

Подключение

Подключается к микроконтроллеру тремя проводами: ~SS, DIN, CLK. Для работы с 3.3 Вольт логикой обязательно требует модуль преобразования уровней!

Достоинства:

* низкая цена
* 8 символов
* встроенный режим проверки сегментов (тест)
* регулируется яркость

Недостатки:

* необходимость использования дополнительного модуля преобразования уровней
* малый размер символа, 0.36"
* малое количество сегментов (узнаваемо отображает цифры и некоторые буквы)

Фото

alt text alt text

Соединения

ESP32C3 Raspberry PI Pico RP2040 Преобразователь уровня MAX7219 8 bit Digital LED Display Module
+5V +5V HV VCC
+3.3 V +3.3 V LV
GND GND GND GND
MOSI (GPIO6) MOSI (GPIO19) LV1(MCU)<->HV1(Display) DIN
SS (выбор пользователя) (выбор пользователя) LV2(MCU)<->HV2(Display) CS
SCLK (GPIO4) SCLK (GPIO18) LV3(MCU)<->HV3(Display) CLK

Дисплей на основе VK16K33

Это модуль, состоящий из 4 отдельных 14-сегментных индикаторов с десятичной точкой (DP), управляемых микросхемой VK16K33 по шине I2C.

Питание

Напряжений питания у этого дисплея два. На вывод Vi2c нужно подать напряжение питания интерфейса, в нашем случае это +3.3 Вольта! На вывод VСС нужно подать напряжение +5 Вольт для других узлов дисплея. Предусмотрите электролитический конденсатор емкостью 10 мкФ и параллельно ему керамический конденсатор емкостью 1 нФ, подключенные близко к выводам VCC(+5 V) и GND платы дисплея.

Подключение

Подключается к микроконтроллеру двумя проводами: SCL, SDA. Не требует для работы отдельный модуль преобразования уровней! Диапазон адресов на шине: 0x70..0x77.

Достоинства:

* Относительно большой размер символа, 0.54"
* Хорошая яркость
* Совместим с 3.3 В. логикой (если вы правильно его подключите)
* до восьми адресов на шине I2C (8x4=32 символа, лучше на отдельной шине I2C)
* Для отображения доступны все прописные буквы английского алфавита
* яркость регулируется

Недостатки:

* сравнительно дорог
* только 4 символа на модуль дисплея
* встроенный тест отсутствует

Фото

alt text alt text alt text

Загрузка ПО в плату

Загрузите прошивку micropython на плату PyBoard (ESP и т. д.), а затем файлы: 7seg_demo.py, 14seg_demo.py, tm1652_demo.py, seg_displ_utils.py, папки sensor_pack_2, lib_displays полностью! Затем откройте tm1652_demo.py, 7seg_demo.py или 14seg_demo.py, в зависимости какой дисплей вы используете, в своей IDE и запустите/выполните его.

Имя дисплея Файл демонстрации работы
WeActStudio.DigitalTubeModule 8.8.8.8 tm1652_demo.py
HT16K33 0.54" 4 Bit Meter Digital Tube Module 14seg_demo.py
MAX7219 8 bit Digital LED Display Module seven_seg_demo.py
74HC595 4 bit Digital LED Display Module a74hc595_demo.py

Шина I2C

Если у вас несколько устройств подключено к шине, желательно чтобы для них была только одна пара подтягивающих (линии SCL и SDA к VCC) резисторов, сопротивлением 3.3-4.3 КОм. Для более подробной информации читайте Texas Instruments "I2C Bus Pull-Up Resistor Calculation" (SLVA689).

Сигнальные линии интерфейса SPI

SS (Slave Select), MISO (Master In Slave Out), MOSI (Master Out Slave In) - это сигнальные линии интерфейса SPI (Serial Peripheral Interface), который используется для синхронной последовательной передачи данных между ведущим (master) и ведомым (slave) устройствами.

Описание сигналов:

* SS (Slave Select) - линия используется для выбора конкретного ведомого устройства, с которым будет производиться обмен данными.
Ведущее устройство активирует(0) или деактивирует(1) эту линию для управления сеансами обмена.
* MISO (Master In Slave Out) - линия предназначена для передачи данных от ведомого устройства к ведущему.
В терминологии SPI "Master In" означает, что ведущее устройство "принимает" данные по этой линии,
а "Slave Out" означает, что ведомое устройство "передает" данные по этой линии.
* MOSI (Master Out Slave In) - линия используется для передачи данных от ведущего устройства к ведомому.
"Master Out" означает, что ведущее устройство "передает" данные, а "Slave In" означает,
что ведомое устройство "принимает" данные.

В дополнение к этим линиям, SPI также использует сигнал SCK (Serial Clock), который генерируется ведущим устройством для синхронизации передачи данных. SPI является полнодуплексным интерфейсом, что означает, что данные могут передаваться одновременно в обоих(!) направлениях.

Цвета проводов линий SPI

Общепринятой стандартизированной раскраски проводов линий SPI не существует, однако на практике для удобства и единообразия часто используют следующие цветовые соглашения:

SCLK (Serial Clock) — обычно жёлтый или оранжевый
MOSI (Master Out Slave In) — зелёный
MISO (Master In Slave Out) — синий
SS (Slave Select) или CS (Chip Select) — красный

Эти цвета широко встречаются в наборах проводов, учебных схемах и платах Arduino и совместимых контроллерах. Однако это скорее сделано для удобства, так как у разных производителей цвета могут отличаться.

Отображение десятичной точки и других символов

Не все символы могут быть отображены 14-ти сегментным дисплеем, не говоря о 7-ми сегментном. Для отображения таких символов в классе char_display_mod.BaseCharDisplay и его потомках есть пара методов (set_non_printable, get_non_printable).

Для отображения десятичной точки на дисплее, просто добавьте ее после символа, правее и ниже которого она должна гореть, например, для числа Пи этим символом будет тройка - 3.1415.

Алфавит

Алфавит (RU или EN) дисплея, на основе VK16K33, можно переключить изменив значение переменной lang в файле 14seg_demo.py с 'ru' на 'en' или наоборот.

Поддерживаемые символы

Для дисплея на основе MAX7219 смотрите код метода CharDisplay.get_segments_of_symbol(...) в файле char_display_mod.py. Для дисплея на основе VK16K33 смотрите код метода VK16K33Display.get_segments_of_symbol(...) в файле vk16k33display.py.


Дисплей на основе TM1652 (WeActStudio.DigitalTubeModule)

Это модуль, состоящий из 4 7-сегментных индикаторов с десятичной точкой (DP) и классическим символов хода секунд в середине, управляемых микросхемой TM1652 по RS-232 (UART порт). https://github.com/WeActStudio/WeActStudio.DigitalTubeModule

Питание

Напряжений питания этого дисплея +5 Вольт, которое нужно подать на вывод VCC. Предусмотрите электролитический конденсатор емкостью 10 мкФ и параллельно ему керамический конденсатор емкостью 1 нФ, подключенные близко к выводам VCC и GND платы дисплея.

Подключение

Подключается к микроконтроллеру одним проводом SDA(со стороны дисплея). К контакту SDA вы должны подключить выход TX, UART порта вашей платы. Преобразователь уровня не нужен!!

Достоинства:

* одна линия управления
* самые большой размер символов 0.8"
* удобен для отображения времени

Недостатки:

* цена
* один производитель
* малое количество сегментов (узнаваемо отображает цифры и некоторые буквы)
* нет регулировки яркости

Фото

alt text alt text alt text

Дисплей на основе 74HC595

Это модуль, состоящий из 4 7-сегментных индикаторов с десятичной точкой (DP) каждый, управляемых микросхемой 74HC595 по SPI-образному интерфейсу.

Питание

Напряжений питания этого дисплея +5 Вольт, которое нужно подать на вывод VCC. Предусмотрите электролитический конденсатор емкостью 10 мкФ и параллельно ему керамический конденсатор емкостью 1 нФ, подключенные близко к выводам VCC и GND платы дисплея.

Подключение

Управляющая плата: https://www.waveshare.com/wiki/RP2040-Zero

Вывод модуля дисплея RP2040-Zero
VCC (+5 V) +5V
GND GND
SDI (данные последовательные от SPI, зеленый) GP7 (SPI1 TX/MOSI)
SCLK (тактирование от SPI, желтый) GP8 (SPI1 SCK)
LOAD (выгрузка на выход, цифровой выход, синий) GP6

Нумерация по изображению с официальной страницы!

Почему нумерация выводов на официальной странице платы не совпадает с MicroPython нумерацией, спросишь ты!? Возможно, потому что моя RP2040-Zero не оригинал.

Достоинства:

* Самый дешевый
* Статичное изображение не мучает ваши глаза (динамическая индикация отсутствует)
* Преобразователь уровня не нужен!!
* Можно сделать в домашних условиях
* Можно каскадировать

Недостатки:

* Не хватает сигналов ~OE и ~MR 
* нет регулировки яркости

Фото

alt text

Видео

Дисплей на основе MAX7219: https://rutube.ru/video/private/c39765b5ce80ed672d8cccee684aeb68/?p=pLJFA6RPWNpP_sEJxQqijA

Дисплей на основе VK16K33: https://rutube.ru/video/private/4e737ac08f4bf688abb5ccf0d974171f/?p=VN9UxtkRwHMe8T0dQDiNEQ

Дисплей от WeAct: https://rutube.ru/video/private/beff4f547bcf0e9ba98ac70453018699/?p=z-bdspx0EQVujMN2ptn24g

Дисплей на основе 74HC595: https://rutube.ru/video/private/fd5a4cfd000cc02b3a60238e633a904e/?p=78Y942upqucuklc3LFPvJg

About

Модули MicroPython для управления сегментными дисплеями на основе MAX7219, VK16K33, TM1652, 74HC595.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages