Для чего этот дисплей может использоваться — решать вам. Кроме того — никто не заставляет это делать в форм-факторе дисплея — это может быть пучок светодиодов, светодиодная лента, несколько релюшек — все, что угодно.
Железяки
«Железо» тут очень простое. Поскольку обвязка USB уже имеется, нужно просто подключить индикатор к контроллеру. Выводы сегментов, ровно как и выводы разрядов, желательно сажать целиком на один порт (чтобы вывод символа был не сложнее записи в этот самый порт).
Программатор
Для программирования сей чудной макетной платы есть два способа. Первый — классический — SPI/JTAG. Второй — бутлоадер, который работает через HID интерфейс, и активируется при замыкании MOSI и земли.
Софт
В качестве шаблона я взял проект по ссылкам из статьи на microsin.
Теория
Сейчас практически все устройства подключаются к компьютеру через USB-интерфейс. Более того, во многих новых ПК COM и LPT порты отсутствуют (хотя под них есть контакты на мат. плате). Многие считают, что HID предназначен исключительно для мышек, клавиатур и прочих устройств ввода. Это не так. HID устройством может быть все, что угодно. Хотя HID и обеспечивает низкоскоростной обмен данными (<64 кб/с), но он может значительно сократить время разработки устройства за счет отсутствия необходимости написания драйверов. На выходе получится простое устройство, которое опознается в большинстве современных ОС.
Для организации USB-обмена со стороны контроллера используется библиотека V-USB, которая и берет на себя всю грязную работу. Следует заметить, что сигнал D+ обязательно должен приходить пин, который имеет прерывание (в данном случае — INT0). Кроме того, контроллер должен иметь строго определенную тактовую частоту (на плате виден 16-мегагерцовый кварц), иначе ничего не заработает.
Все HID-устройства имеют свои дескрипторы. В этих дескрипторах устройство описывает, что оно будет делать — принимать, отправлять данные, или все сразу, что это за устройство — клавиатура, мышь, джойстик, или просто какое-то свое устройство, а так же некоторые другие параметры. Для типовых устройств уже есть типовые драйвера, но даже тот факт, что USB-дисплеи встречаются в продаже нечасто, не заставляет нас писать свой драйвер! Нам необходимо написать только реализацию своего высокоуровнего протокола — HID предоставляет хороший уровень абстракции.
Практика
Сперва объявим дескриптор, отличие тут в этой строчке:
0x95, 0x05, // REPORT_COUNT (5)
В этой строке указывается длина FEATURE-репорта — пять байт, исключая ReportID. Первый байт — статус (состояние встроенного светодиода), еще четыре — информация, выводимая на диспей
Для работы дисплея нужно направить порты на выход (A и C, я направлял все пины — другой периферии все равно нету).
Для сохранения информации о текущем состоянии дисплея нужны две переменные (еще одна — для упрощения кода). Дабы не перегружать статью, весь код вынесен на pastebin.
Большой брат
Для компьютера была написана программа на Дельфи с использованием компонента JvHidDevice.
Исходники все там же — на pastebin.
Все эти исходники делают очень простую вещь — на стороне хоста — преобразование символов в их картинки и отправка по USB, на контроллере — прием и отображение. Следует отметить, что знакогенератор реализован на хосте, дабы исключить ненужные перепрошивки контроллера.
Фотографии почти готового изделия (кликабельны)
ссылка на оригинал статьи http://habrahabr.ru/post/169585/
Добавить комментарий