Подключаем светодиодный экран от Siemens SDA 5708
В предисловие, давным давно.. в общем, Nokia как то сделала первый цифровой тюнер или что то подобное, ну так для этих сателитов нужны были недорогие экраны, ибо сэкономить немного на проекте это уже хорошая прибыль для компании. И как оказалось что экран Simens SDA 5708 был весьма недорогой 8ми символьный, каждый символ которого представлялся матрицей светодиодов 5 на 7 точек. Кое как и где то на англицких сайтах говорится что сей экранчик использовался повсеместно в любительских проектах разнородных техно-извращуг, но то ли тогда не было интернета то ли создатели китайцы, в любом случае документация которая бы легко и доступно и на русском поясняла как сие тех-искусство работает либо не существует либо в сейфе. И тут набрел я на один псевдо-ретро сайтик где один хороший человек объяснил как этот экран работает, хотя информация была достаточно лаконична как в чертежах, т.е ничего лишнего, и что б ее переварить, то приходилось немного посидеть, подумать, психовать. Но результат стоял затраченных усилий, Так что решил для этого забавного экранчика сделать данный пост.
Светодиодный экран от Siemens - SDA 5708
Сам экран состоит из двух контроллеров каждый из которых заполняет 4ре матрицы.
Вот так на этом экране расположены контакты.
А теперь поясним что из контактов какую роль исполняют.
Для начала нужно сказать что протокол обмена шибко напоминает всем известный I2C, но, это не он.
1 Vcc - думаю всем известно что сей контакт питания (+ где то 5 вольт. Хотя сам экран настолько крут что хорошо работает от 3 вольтовой батарейки CR2032 которая питает и его и контроллер на отдельной печатке)
2 ---Load - Фишка контакта ---Load в том что он заставляет экран принять и пережевать 1 байт. То есть, данные передаются по Data, контроллер принимает биты, но он их принимает только когда на линии ---Load логическая 0, а вот когда уже отослано 8 бит (1 байт/пакет) на эту линию просто шлем единицу ---Load = 1, и байт переваривается контроллером экрана, самое главное что когда линия ---Load поднята, экран напрочь все игнорирует кроме линии ---Reset
3 Data - по этой линии отсылаются биты данных как по линии SDA интерфейса I2C.
4 SDCLK - по этой линии идет прямоугольный тактирующий сигнал как по линии SCL интерфейса I2C, для тех кто в танке: на линии Data выставляется лог уровень, будь то 1 или 0, и когда линия SDCLK подымается, в регистр контроллера экрана закидывается бит который был выставлен на линии Data.
5 ---Reset делает скидывание экрана, когда этот пин опустить на ноль, так то на этом пине всегда должна быть лог. единица для нормальной работы. При том что если скидывать экран посреди его работы, то все данные аннулируются и экран запустится на стандартных настройках при 100%-й яркости.
6 GND - "святая" земля :)
Собственно график передачи одного пакета на экран. (Передача производится начиная от младшего бита к старшему)
А теперь переходим к регистрам которыми обладает сей экран.
Их у нас аж три:
Control Register - Регистр настроек экрана
Adress Register - регистр адреса (он указывает на матрицу/блок на которую будет идти запись выводимой информации)
Column Data Register - регистр строк (В этот регистры производится запись этой самой выводимой информации), и что бы заполнить матричный блок, то нужно отправить 7мь таких регистров (8ми битных пакетов)
Регистр настроек экрана выглядит следующим образом.
https://vk.com/photo18116734_301016372
Старшие биты D7,6 должны быть "1" потому что по двух старших битах контроллер распознает инструкции как "служебные" или "специальные".
Обнулять(очистить) дисплей программно можно, посредством записи в бит D5 лог. "0" после чего нужно снова туда записать "1" что б дисплей начал работать.
Тут еще есть такой интересный нюанс на счет D4, этот бит если он установлен в "1", уменьшает частоту мерцания экрана, не знаю зачем эта функция, может что то типа энергосберегающего режима, но когда я ее попробовал, я "прослезился", частота была близка к 20 Герцам, от чего у меня глаза просто начали меня просить помилования.
Регистр адреса
https://vk.com/photo18116734_301016373
В этом случае D7,6,5 определяют его как "служебный" или "специальный".
А биты D2,1,0 задают адрес на который должен перепрыгнуть указатель.
То есть если мы впишем туда 10100100, то указатель перепрыгнет на 5й блок экрана.
А теперь самое интересное: Регистр строк (Фото большое)
https://vk.com/photo18116734_301016374
На фото показано как производится запись информации в регистр.
В этом экране нету вмонтированной таблицы ASCII тут вообще ничего такого нет, потому любой символ нужно рисовать вручную, что есть и плюсом и минусом, почему плюсом? Потому что можно нарисовать любой шрифт на любом языке... ну кроме корейских типов знаков :)
Алгоритм записи прост, сначала нужно записать бит настройки, потом бит указателя адреса, что бы экран понял на какую из восьми светодиодных матриц мы будем делать вывод и после этого, нужно посылать пакеты строчек, которых аж 7 штук, указатель строк сам будет смещаться после принятия каждого из 7ми байт.
НО: Важно, указатель матриц, в отличии от указателя строк, сам не смещается, а по сему если полностью заполнить один символ, указатель на другую матрицу не перейдет, его каждый раз нужно указывать вручную.
НО: Важно, Когда записываем в строки биты, то три старших обязательно должны быть "0" иначе он их не распознает (для строк, в которых по 5 диодов, полезную информацию несут биты D0-D4, они то и засвечивают пиксели в строках).
Но тут есть и забавный момент, если послать не 7 байт, а скажем 30 байт. то они будут все время смещаться, а именно, если после 7го байта мы пошлем 8й, то первый что уже был выведен на матрицу, затирается, а все последующие смещаются к младшему на один. соответственно 2й становится первым, 3й вторым, а 8й, седьмым и так далее, в таком случае, можно делать бегущее смещение изображение по вертикали. Ну вот собственно все что нужно знать о нем.
Собственно вот видео его работы https://vk.com/video18116734_164741960
Когда я в нем разбирался хотел сделать девушке приятное посему вывел ее имя :)
Потому не даю никакого кода ибо он выводил только ее имя, в общем надеюсь вам понадобится эта информация, от себя могу сказать что экран стоит внимания ибо мне он обошелся всего в 80 рублей на радио-рынке где их было где то 8 шт, к прочему он работает от особо низкого напряжения и очень мало требует для своей работы.
Спасибо за внимание.