|
Контроллер LED дисплея STDLED316MTR |
|
|
|
Mar 24 2013, 08:39
|

Группа: Участник
Сообщений: 14
Регистрация: 23-03-13
Из: Планета Земля
Пользователь №: 76 167

|
Привет всем. Вопрос такой: кто-нибудь работал с STLED316MTR? Это контроллер дисплея на 6 циферек с возможностью сканирования матрицы кнопок 2х8, управляется по трёхпроводной последовательной шине (STB, CLK и двунаправленная DIO). Подвязал я к нему AVR-ку, пытаюсь посылать на STLED команды, чтоб он хоть что-то на дисплее зажёг, но пока получилось только зажигать одну из восьмёрок (какую - зависит от адреса цифирьки в передаваемой команде) . Даташит по нему скачал, но понял, судя по всему, не всё. Суть вопроса - какова правильная последовательность передачи команд на этот контроллер (команды у него делятся на категории: конфигурация дисплея, запись данных в буфер модуля управления дисплеем, считывание данных из буфера, а ещё отдельные 2 команды на включение/выключение дисплея). В 8-битной команде записи данных в нулевом банке памяти содержится адрес цифры, которую надо зажечь. После команды следуют 8 бит данных (соотв. 8 сегментам). Так вот я сначала даю команду на включение дисплея, потом команду на запись в буфер данных по цифре, потом сами данные. Включаю схему - выбранная на дисплее цифра моргает 1 раз. Тогда я зациклил эти три шага - цифра горит. Но, думаю, это не выход. Что-то я делаю не так. У меня не получается в этом цикле зажечь одновременно хотябы 2 цифры посредством посылки команд на запись соответствующих данных после включения дисплея. Господа!  Если кто-то знает эту микросхему, дайте знать, пожалуйста, я тогда поконкретнее вопрос задам. Заранее спасибо!
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Mar 31 2013, 18:45
|

Группа: Участник
Сообщений: 14
Регистрация: 23-03-13
Из: Планета Земля
Пользователь №: 76 167

|
Так..Угу. Только CHIP_CONFIG_PAGE и CHIP_CONFIG_ADDRESS местами перепутаны. А конфигурацию обязательно в этот камень забивать перед работой, или можно ограничиться дефолтами, если они есть?
|
|
|
|
|
Apr 2 2013, 06:02
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Wolfenstein @ Mar 31 2013, 22:45)  Только CHIP_CONFIG_PAGE и CHIP_CONFIG_ADDRESS местами перепутаны. A+B == B+A A | B == B | A так пойдет? а вообще - есть страница конфигурации, в ней есть адрес. По-моему все логично. Посмотрите даташит, я тоже с первого раза не вкурил, как-то "размазано" описание Цитата(Wolfenstein @ Mar 31 2013, 22:45)  А конфигурацию обязательно в этот камень забивать перед работой, или можно ограничиться дефолтами, если они есть? если все по дефолту устраивает, чего ж не оставить? но, по-моему, включать микросхему все равно нужно
|
|
|
|
|
Apr 2 2013, 18:38
|

Группа: Участник
Сообщений: 14
Регистрация: 23-03-13
Из: Планета Земля
Пользователь №: 76 167

|
Цитата(toweroff @ Apr 2 2013, 09:02)  A+B == B+A A | B == B | A так пойдет? а вообще - есть страница конфигурации, в ней есть адрес. По-моему все логично. Посмотрите даташит, я тоже с первого раза не вкурил, как-то "размазано" описание если все по дефолту устраивает, чего ж не оставить? но, по-моему, включать микросхему все равно нужно A+B == B+A A | B == B | A Возможно мы говорили про разные вещи? CHIP_CONFIG_ADDRESS - как я понял - три бита адреса команды на запись с 0-го по 2-й. А CHIP_CONFIG_PAGE - два бита выбора страницы памяти - 3-й и 4-й в той же команде. Как можно менять местами такие вещи и при чёт тут, пардон, дизъюнкция?  Или я всё не так понял?
|
|
|
|
|
Apr 2 2013, 19:55
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Wolfenstein @ Apr 2 2013, 22:38)  Как можно менять местами такие вещи и при чёт тут, пардон, дизъюнкция?  Или я всё не так понял? конечно  Код #define WRITE_COMMAND 0x00 #define READ_COMMAND 0x40 #define FIXD_ADDRESS 0x20 #define INCREMENT_ADDRESS 0x00 #define CHIP_CONFIG_PAGE (0x02 << 3) #define CHIP_CONFIG_ADDRESS 0x00 #define CHIP_CONFIGURATION 0xFD //6 digits,8segments,constand brightness all #define DIGIT_BRIGHTNESS_PAGE (0x02 << 3) #define DIGIT_BRIGHTNESS_ADDRESS 0x10 //0X1-0X3 #define DIGIT_BRIGHTNESS 0x77
#define LED_BRIGHTNESS_PAGE (0x03 << 3) #define LED_BRIGHTNESS_ADDRESS 0x1 //0X1-0X3 #define SEGMENT_DATA_PAGE (0x00 << 3) #define SEGMENT1_DATA_ADDRESS 0x00 //0X0-0X5 #define SEGMENT2_DATA_ADDRESS 0x01 #define SEGMENT3_DATA_ADDRESS 0x02 #define SEGMENT4_DATA_ADDRESS 0x03 #define SEGMENT5_DATA_ADDRESS 0x04 #define SEGMENT6_DATA_ADDRESS 0x05 #define LED_DATA_PAGE (0x01 << 3) #define LED_DATA_ADDRESS 0x00 и теперь посмотрите, будет ли разница 1. (CHIP_CONFIG_ADDRESS + CHIP_CONFIG_PAGE) и (CHIP_CONFIG_PAGE + CHIP_CONFIG_ADDRESS) 2. (CHIP_CONFIG_ADDRESS | CHIP_CONFIG_PAGE) и (CHIP_CONFIG_PAGE | CHIP_CONFIG_ADDRESS) 3. (CHIP_CONFIG_ADDRESS + CHIP_CONFIG_PAGE) и (CHIP_CONFIG_PAGE | CHIP_CONFIG_ADDRESS)
|
|
|
|
|
Apr 7 2013, 13:20
|

Группа: Участник
Сообщений: 14
Регистрация: 23-03-13
Из: Планета Земля
Пользователь №: 76 167

|
Таг-с. С включением разобрался - не мог зажечь одновременно более одной цифры, пока не поменял в байте конфигурации настройки яркости с постоянной максимальной на переменную минимальную. А теперь такой вопрос: как поменять выводимую на дисплей информацию? По идее структура общения такова: 1 Выключаем дисплей 2 Записываем конфигурацию 3 Записываем дату какие цыфирьки надо зажечь 4 Включаем дисплей Для другой символьной комбинации выполняем те же шаги, просто с другой датой. Так должно быть или не так? У меня пока не получилось...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|