02.01.2021

Китайский дисплей на TM1637 на 6 символов и библиотека на AVR Bascom, и пример его применения в частотомере.

    Решил я как-то попробовать данную китайскую продукцию, не задумываясь о програмной части, и ко всему - так как надо было сделать устройство с минимальными трудозатратами, выбрал AVR Bascom. Порывшись в интернетах я так и не смог на то время найти вариант решения вопроса с подключением данного дисплея, и было решено написать свою подпрограммку, которая в итоге переросла в некое подобие библиотеки для выбранной среды.
    Дисплеи были куплены в местном магазине, и фирма производитель у них RobotDyn.


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


    TM1637 - оказалась достаточно интересной микросхемкой, и имея динамичесскую индикацию - порадовала высокой частотой развертки. Из приятных функций на борту оказалась возможность регулировки яркости дисплея, при этом всём контроллер не должен заниматься лишней работой по отрисовке, и цена за модуль вполне вменяемая.

    Я уже не помню точно очередность разрядов (писам код давно), так что просто выложу программу с примером и описанием "внедрения" данного кода.

    Входные данные - строковые, до 12 символов (это с учетом знаков децимальных точек).

    В самом начале добавляем ссылку на файл, и на всякий случай включаем опцию Submode = New:
Config Submode = New
$include "TM1637_core.inc"
    В блоке инициализации портов добавляем инициализацию пинов, к которым подключен дисплей:
Config PortC.0 = Output                                     'for TM1637 clock
Config PortC.1 = Output                                     'for TM1637 data

TM1637_clk Alias PortC.0
TM1637_dout Alias PortC.1
TM1637_din Alias PinC.1
    Для вывода информации на дисплей рекомендуется использовать буфер длинной 13 байт:
Dim DataTM As String * 13                                   'Регистры данных дисплея
    Перед началом программы инициализируем дисплей, заодно установив яркость (регулируется от 0 до 8):
Tm1637_clear                                                 'Очистка дисплея
Tm1637_on 5                                                  
'Настройка яркости (0-8)
TM1637 "     0"                                               'Вывод нуля
    В самом конце программы необходимо добавить секцию данных, с таблицей символов. Заморачиваться с оптимизацией таблицы я не стал. Все возможные варианты выводимых символов есть в таблице, при необходимости её можно корректировать:
Digit:
Data &B01011000                                      '/( 0x28
Data &B01001100                                      '/)
Data &B01100011                                      '*
............
    Все дополнительные части кода есть в файле библиотеки, или в программе примере - частотомере.

    Которко о программе частотомера. Он был сделан для определенных целей, а не как универсальный измерительный прибор, и на дисплей выводятся значения частоты от 0 до 999999Гц, без запятых и изменения диапазонов (а это можно организовать без проблем), так-же в данной программе из-за не точного времени зимерения - может быть погрешность, так что - как есть. Если кому-то необходимо от этого частотомера что-то еще - исходник в вашем распоряжении. Я обычно пишу программы на ассемблере, но когда речь заходит о минимальных затратах времени, и что-бы хоть как-то работало - Bascom.

    И еще немножко по частотомеру. Схему не прикладываю потому что вся схема это 3 провода:
A0 - Clock TM1637
A1 - Data TM1637
D5 - Вход частоты
    Основа - Arduino Nano V3.0.

    Исходники программы примера, а так-же файл библиотеки: FreqCount_TM1637.zipTM1637_Core.zip

Комментариев нет:

Отправить комментарий