реклама на сайте
подробности

 
 
> Контроллер LED дисплея STDLED316MTR
Wolfenstein
сообщение Mar 24 2013, 08:39
Сообщение #1





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



Привет всем. Вопрос такой: кто-нибудь работал с STLED316MTR? Это контроллер дисплея на 6 циферек с возможностью сканирования матрицы кнопок 2х8, управляется по трёхпроводной последовательной шине (STB, CLK и двунаправленная DIO). Подвязал я к нему AVR-ку, пытаюсь посылать на STLED команды, чтоб он хоть что-то на дисплее зажёг, но пока получилось только зажигать одну из восьмёрок (какую - зависит от адреса цифирьки в передаваемой команде) . Даташит по нему скачал, но понял, судя по всему, не всё.
Суть вопроса - какова правильная последовательность передачи команд на этот контроллер (команды у него делятся на категории: конфигурация дисплея, запись данных в буфер модуля управления дисплеем, считывание данных из буфера, а ещё отдельные 2 команды на включение/выключение дисплея). В 8-битной команде записи данных в нулевом банке памяти содержится адрес цифры, которую надо зажечь. После команды следуют 8 бит данных (соотв. 8 сегментам). Так вот я сначала даю команду на включение дисплея, потом команду на запись в буфер данных по цифре, потом сами данные. Включаю схему - выбранная на дисплее цифра моргает 1 раз. Тогда я зациклил эти три шага - цифра горит. Но, думаю, это не выход. Что-то я делаю не так. У меня не получается в этом цикле зажечь одновременно хотябы 2 цифры посредством посылки команд на запись соответствующих данных после включения дисплея.
Господа! 1111493779.gif Если кто-то знает эту микросхему, дайте знать, пожалуйста, я тогда поконкретнее вопрос задам. Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
toweroff
сообщение Mar 29 2013, 16:09
Сообщение #2


Гуру
******

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



Сначала команда 0x0E - отключаем микросхему

Далее конфигурация 4 байта, перед которыми байт команды в виде (CHIP_CONFIG_PAGE + CHIP_CONFIG_ADDRESS + INCREMENT_ADDRESS + WRITE_COMMAND)

Далее команда конфигурации яркости (LED_BRIGHTNESS_PAGE + LED_BRIGHTNESS_ADDRESS + INCREMENT_ADDRESS + WRITE_COMMAND) и 4 байта яркости

И напоследок - включаем микросхему командой 0x0D

У меня любое изменение конфигурации обрамляется выключением/включением

Чтение ИЗ микросхемы вообще не использую, клавиатуры нет, да и данные из микросхемы не нужны
Go to the top of the page
 
+Quote Post
Wolfenstein
сообщение Mar 31 2013, 18:45
Сообщение #3





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



Так..Угу. Только CHIP_CONFIG_PAGE и CHIP_CONFIG_ADDRESS местами перепутаны. А конфигурацию обязательно в этот камень забивать перед работой, или можно ограничиться дефолтами, если они есть?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 2 2013, 06:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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) *
А конфигурацию обязательно в этот камень забивать перед работой, или можно ограничиться дефолтами, если они есть?

если все по дефолту устраивает, чего ж не оставить? laughing.gif
но, по-моему, включать микросхему все равно нужно
Go to the top of the page
 
+Quote Post
Wolfenstein
сообщение Apr 2 2013, 18:38
Сообщение #5





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



Цитата(toweroff @ Apr 2 2013, 09:02) *
A+B == B+A
A | B == B | A

так пойдет?

а вообще - есть страница конфигурации, в ней есть адрес. По-моему все логично. Посмотрите даташит, я тоже с первого раза не вкурил, как-то "размазано" описание


если все по дефолту устраивает, чего ж не оставить? laughing.gif
но, по-моему, включать микросхему все равно нужно



A+B == B+A
A | B == B | A

Возможно мы говорили про разные вещи? CHIP_CONFIG_ADDRESS - как я понял - три бита адреса команды на запись с 0-го по 2-й. А CHIP_CONFIG_PAGE - два бита выбора страницы памяти - 3-й и 4-й в той же команде. Как можно менять местами такие вещи и при чёт тут, пардон, дизъюнкция? wink.gif Или я всё не так понял?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 2 2013, 19:55
Сообщение #6


Гуру
******

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



Цитата(Wolfenstein @ Apr 2 2013, 22:38) *
Как можно менять местами такие вещи и при чёт тут, пардон, дизъюнкция? wink.gif Или я всё не так понял?

конечно sm.gif
Код
#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)
Go to the top of the page
 
+Quote Post
Wolfenstein
сообщение Apr 3 2013, 04:46
Сообщение #7





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



А, ну так это совсем другое дело)) Теперь понял beer.gif
Go to the top of the page
 
+Quote Post
Wolfenstein
сообщение Apr 7 2013, 13:20
Сообщение #8





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



Таг-с. С включением разобрался - не мог зажечь одновременно более одной цифры, пока не поменял в байте конфигурации настройки яркости с постоянной максимальной на переменную минимальную. А теперь такой вопрос: как поменять выводимую на дисплей информацию? По идее структура общения такова:

1 Выключаем дисплей
2 Записываем конфигурацию
3 Записываем дату какие цыфирьки надо зажечь
4 Включаем дисплей

Для другой символьной комбинации выполняем те же шаги, просто с другой датой.

Так должно быть или не так? У меня пока не получилось... wacko.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 7 2013, 15:13
Сообщение #9


Гуру
******

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



Я сначала инициализирую драйвер, то есть прописываю ему конфигурацию (количество цифр, режим яркости)

Другая функция отправляет данные, которые нужно отображать на индикаторах

Все отправки данных обрамляются выключением/включением

Нет, при отправке данных драйвер не отключается. Данные просто "вгоняются" без всяких 0x0E/0x0D команд

Код
void STLED316S_disp_init()
{
char datas[8];
    
    datas[0] = 0x0E;
    STLED316S_send(datas, 1); // Switch OFF
    
    // Set 4 digits mode
    datas[0] = CHIP_CONFIG_PAGE + CHIP_CONFIG_ADDRESS + INCREMENT_ADDRESS + WRITE_COMMAND;
    datas[1] = 0xE4;
    datas[2] = 0x77;
    datas[3] = 0x77;
    datas[4] = 0x77;
    STLED316S_send(datas, 5);
    
    
    
      datas[0] = LED_BRIGHTNESS_PAGE + LED_BRIGHTNESS_ADDRESS + INCREMENT_ADDRESS + WRITE_COMMAND;
      datas[1] = 0x77;
      datas[2] = 0x77;
      datas[3] = 0x77;
      datas[4] = 0x77;
      STLED316S_send(datas, 5);


    datas[0] = 0x0D;
    STLED316S_send(datas, 1); // Switch ON
    
}
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016