Решил я как-то попробовать данную китайскую продукцию, не задумываясь о програмной части, и ко всему - так как надо было сделать устройство с минимальными трудозатратами, выбрал AVR Bascom. Порывшись в интернетах я так и не смог на то время найти вариант решения вопроса с подключением данного дисплея, и было решено написать свою подпрограммку, которая в итоге переросла в некое подобие библиотеки для выбранной среды.
Дисплеи были куплены в местном магазине, и фирма производитель у них RobotDyn.
То что я не нашел никаких библиотек для подключения дисплея - оказалось меньшей проблемой, сам дисплей таил в себе загадки разводки разрядов, с которыми пришлось бороться, а вот про микросхему контроллер я такого сказать не могу. На данный момент возможно уже есть рабочие библиотеки, но вдруг кому понравится мой вариант.
TM1637 - оказалась достаточно интересной микросхемкой, и имея динамичесскую индикацию - порадовала высокой частотой развертки. Из приятных функций на борту оказалась возможность регулировки яркости дисплея, при этом всём контроллер не должен заниматься лишней работой по отрисовке, и цена за модуль вполне вменяемая.
Я уже не помню точно очередность разрядов (писам код давно), так что просто выложу программу с примером и описанием "внедрения" данного кода.
Входные данные - строковые, до 12 символов (это с учетом знаков децимальных точек).
В самом начале добавляем ссылку на файл, и на всякий случай включаем опцию Submode = New:
Config Submode = New$include "TM1637_core.inc"
В блоке инициализации портов добавляем инициализацию пинов, к которым подключен дисплей:
Config PortC.0 = Output 'for TM1637 clockConfig PortC.1 = Output 'for TM1637 dataTM1637_clk Alias PortC.0TM1637_dout Alias PortC.1TM1637_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.
Комментариев нет:
Отправить комментарий