Подключение 7-сегментного индикатора к msp430g2553 (launchpad) по SPI


Подсадил меня недавно один хороший товарищ на Launchpad (чему очень рада моя дорогая супруга), мигать светодиодами я научился быстро, в COM-порт плеваться показаниями встроенных датчиков температуры и напряжения научился, захотелось чего-то более приземлённого.
А тут, как нельзя кстати, попалась мне платка от какого-то ДВД-плейера, бесстыдно выкинутая как ненужный котёнок на улицу в мороз. Платка эта содержала в себе светодиодный драйвер tm1628 и индикатор. Курение форумов почти никакой информации не дало, а жажда действий требовала применения. Пара дней изучения даташитов, и я написал простенькую программку для отправки всякой белиберды на этот индикатор. Что интересно, — всё заработало с первого раза, только оказалось, что индикатор тот был подключен нестандартно, по даташиту, а «перевернуто»,- вместо выхода сегментов сегменты были подключены к выходам линий, и наоборот.
Дружеские консультации привели к выводу, что у него есть подобный индикатор от китайцев, только на драйвере tm1638. Руки чесались, и через некоторое время получилась библиотека для работы с драйвером tm1638 по SPI.
В процессе написания кода сильно помогла аналогичная библиотека для ардуины

Схема подключения индикатора:
Схема

Что умеет библиотека:
— показывать отдельные цифры по номеру позиции,
— показывать длинное целое, отрицательное десятичные числа,
— показывать шестнадцатиричные числа,
— показывать строку символов по коду ASCII,
— очищать весь дисплей, или отдельный символ
— зажигать светодиоды, как по одному, так и все сразу,
— управлять яркостью, включать или отключать отображение,
— читать из буфера нажатые кнопки, выдавая результат побитно,
— отобразить сообщение «Error» в случае необходимости или при ошибке в данных.

Видео с показаниями температуры и напряжения
просто пример работы

сайт проекта с последней версией либы
Файлы в топике: msp430g2553-tm1638.zip

Комментарии (55)

RSS свернуть / развернуть
О, у нас прям неделя подключения индикаторов к Launcpad-у.
Надо тоже к нему что-нибудь этакое подключить :)
+1
дерзай ;)
+3
Отличная идея, кстати. У меня где-то была коробка с вакуумными индикаторами, надо поискать :)
+1
через регистры типа 4094 и транзисторы в качестве драйверов сегментов
у меня такой вот www.pollin.de/shop/dt/MTY4OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/Fluoreszenz_Anzeige_Futaba_FV648G.html
там есть схема в пдф и софт с исходниками

скоро напишу свой софт

и еще на коте была статья про ивл
+1
Как такой вакуумник подключить, схема есть? у меня похожий лежит
0
для подобных были контроллеры из 176 серии. если не ошибаюсь. у меня похожий в «Радиотехнике» стоит, там накал запитан от переменки. и на него подан «минус» относительно массы.
0
У меня лежит подобное чудо от крутого музцентра. Чего там только нет! А, да, документации нет :(
0
Я тоже обратил внимание :)
Пытаюсь сейчас подружитсья с DS18B20, да что-то не выходит каменный цветок.
0
Не по радиолюбительски это — лениться даже семисегментники припаять к платке :/

Уж лучше разработать плату под своё устройство, поставить нужное количество индикаторов, кнопок, etc.
Чем самому подстраиваться под какие-то там готовые платы для ардуйни!
+2
Так чтож теперь, плату выкидывать? Не по-хозяйски! =)
+1
Ну уж. Приспособить валяющийся хлам — это одна из основных радостей.
А вот покупать платку с индикаторами и кнопочками втридорога — эмм…
0
Не пинайте пианиста :) Как раз изначально было задумано собрать свой вариант, хотел только написать программу. Как я и говорил, этот модуль достался мне случайно и нахаляву. Вот, с чего всё началось:
tm1628
tm1628

Этот вариант — с общим анодом, и «перевернут». прямо туда данные писать не получится, есть идеи, как реализовать алгоритм?
0
Хм, но на фотках в топике — модуль явно с DX. Хотя можно, для экспериментов можно его заказать. Но в готовые устройства такое ставят только самые последние ардуинщики, не понимающие в чём основной фан от радиолюбительства :3

Если я правильно понимаю в чём проблема — заведи в памяти буфер размером с этот индикатор и отправляй его целиком за один раз, заодно поворачивай данные как нужно (можно даже прерывание настроить для постоянной синхронизации).
0
все верно, модуль оттуда, только мне его друг отдал на эксперименты (со словами «с тебя библиотека!»), поэтому — можно сказать, что халява! :)
0
«в голове»-то я понимаю, как это сделать, но вот как это реализовать в программе, — пока не могу написать.
0
Ох как, у мня такой же модуль лежит. LED-драйв со сканером кнопок в одном корпусе.)
0
Не по хозяйски — это точно. Почти все выброшенные ДВД с дисплеями пустил в дело. Еще нравиться панели с магнитол. Вот несколько моих поделок.
+2
Какие чудесные приборчики!
0
Соль в том, что на этот драйвер можно отправить данные и забыть про это, не тратя понапрасну ресурсы контроллера на всякие динамические индикации. плюс кнопки и плюс управление яркостью.
0
у меня 1640, но из-за китайской документации не могу его осилить.
0
  • avatar
  • 21h
  • 29 июня 2012, 17:49
там такой же принцип и те же команды. Библиотека для ардуины в помощь :)
0
я знаю ее. сам попробуй ее код портировать себе. офигеешь. она не в счет. нужно что-то нормальное.
0
пробовал :) Офигевал, но несколько идей подцепил оттуда.
0
да, вот именно что только несколько идей. а была б либа нормальной, то проблем бы не возникол вообще.
0
а у тебя есть порт этой либы для меги32? только чтоб без ардуино и всяких прочих объектов. я попытался код перенести и нифига не получилось.
0
нееет, нет такой…
0
кажется получилось отправлять данные. пока что выводится бред, но работа идет :)
+1
ооо, чудесно! Следим за успехом!
0
за датащит спасибо :)
0
так, а если у меня нет строба? только SCLK и DIN
0
он похоже нужен только для чтения кнопок. можно смело игнорить.
0
Нет, строб нужен для выбора драйвера. когда там «1», — данные на входе игнорируются, когда «0», — данные принимаются. Перед отправкой команды драйверу нужно «дёрнуть» строб, — тогда происходит инициализация входного буфера драйвера, и он готов принять команду.
0
ну круто. только на 1640 нет строба. только DIN и SCLK.
0
да, действительно… там вместо строба — линия данных используется, мою программу придётся переделать в части функции отправки данных. часть даташита: code.google.com/p/picdev/wiki/TM1640
0
На I2С похоже, кстати. Точнее, на его физический уровень, но без бита подтверждения и шины с монтажным «И».
0
или на 1-wire
0
Нет, вот на него как раз не похоже. А тут из I2C взяты старт-стоп биты. Выпилено только все, что относилось к двухстороннему обмену и наличию нескольких устройств на шине.
0
ну не надо. обычный SPI + прижимаемый DIN в начале и в конце передачи.
0
Последовательные синхронные интерфейсы все похожи. С таким же успехом можно сказать что это USART.
На I2C по сигналам больше всего похоже. Аналогичные ему стартовые и стоповые биты и отсутствие SPI-ного CS. А в остальном I2C от SPI не отличается по форме сигналов.
0
вот на и2ц как раз меньше всего похоже. нужно и2ц обрезать так, чтоб получился спи. т.е. убрать вообще все и оставить только подергивание ноги данных и такт.
0
не будем спорить, друзья, все мы понимаем отличия этих интерфейсов :)
0
Как бы SPI, I2C-ABus, LIN и пр. сейчас считается подможеством USART.
Впрочем, это не оговаривается в виде стандарта, просто классификация по схожести.
0
кстати, гугль может даташит перевести, надо его для этого на гугльдоки загрузить и там открыть.
0
уже пытался. полная фигня получается.
0
совсем забыл отписаться о результатах. получилась библиотечка для AVR blindage.org/?p=4373
0
  • avatar
  • 21h
  • 29 июля 2012, 17:14
Мои поздравления!
0
А это тоже ваши статьи:
www.shelezyakin.ru/?p=103
trandi.wordpress.com/2012/10/11/tm1638-display-driver-for-stellaris-launchpad/

Увидел там ссылку на такой же проект для Стелларис, буду брать :)
0
  • avatar
  • SerjT
  • 25 декабря 2012, 00:21
Да, статьи мои. Мне вот тоже стелларис пришёл, но всё пока недосуг за него взяться.
0
невнимательно прочёл. по второй ссылке проект для стеллариса не мой.
0
Я хочу завтра заказать себе, плюс ещё всяких паков от Техаса — буду изучать :)
А во второй статье ссылка на ваш блог, вот и подумал, что наши уже весь мир захватили ;)
0
Всё верно, я сначала привёл ссылку на забугорного товарища, а он, увидев ссылку на себя, — добавил ссылку и на мой проект. Хотя уже точно и не помню, может быть и не совсем так было. А сначала я разрабатывал либу, проект держал вот здесь. С Git разобраться не удалось, поэтому особенного смысла держать проект там было немного, но описание я там делал на английском, так что таки да — мир давно наш :)
0
Кстати, сколько это удовольствие кушает в сумме? Нужен дополнительный источник, или сразу от Лончпада питать можно?
0
Я прямо к ланчпаду подключал, кушает оно немного, особенно от 3В. Ему даже 5В не понадобилось, и так светится достаточно ярко. А я сначала думал, что не заведётся и придётся городить сопряжение.
0
Вот, прикрутил к индикатору часики на DS1394
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.