Дисплей на D7225
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Дисплей на D7225
Пытаюсь завести дисплей, контроллер mPD7225, вот таблица соответствия сегментов-выводов.
Сделал вывод, что это Divide-by-4 time division drive, собственно вот инициализация.
1 Mode set 01000000 (div4, 1/3 bias)
2 synchroniset transfer 00110001
3 Blinkin off 00011000
4 without segment decoder 00010100
5 Display on 00010001
6 Clear data memory 00100000
Далее указываю 13-й столбец
spi(0b11101101);
COM0-й общий
spi(0b11010001);
Должен загореться сегмент 5F, но при этом подсвечиваются 4A, 4С, 4H А это не кулл, как быть?
1 Mode set 01000000 (div4, 1/3 bias)
2 synchroniset transfer 00110001
3 Blinkin off 00011000
4 without segment decoder 00010100
5 Display on 00010001
6 Clear data memory 00100000
Далее указываю 13-й столбец
spi(0b11101101);
COM0-й общий
spi(0b11010001);
Должен загореться сегмент 5F, но при этом подсвечиваются 4A, 4С, 4H А это не кулл, как быть?
- Реклама
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Дисплей на D7225
Попробуйте так: spi(0b00011101);
Если ничего не будет подсвечено, то так: spi(0b00011101); spi(0b11010001);.
Если ничего не будет подсвечено, то так: spi(0b00011101); spi(0b11010001);.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Дисплей на D7225
я тоже обратил внимание, что засвет соответствует коду 1101. Но без этого кода не работает вообще, это команда на запись в память.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Дисплей на D7225
А все оказалось банально. Посыл даты это оказывается не дата, это команда.
Дергнул пин конада\дата в команду и все заработало...
Дергнул пин конада\дата в команду и все заработало...
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Дисплей на D7225
Поздравляю! Но, что тогда посыл даты? Можете подробнее описать посылку даты, указав команды и какие уровни на управляющих
пинах ставите?
пинах ставите?
- Реклама
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Дисплей на D7225
На драйвере есть пин C-D. Если он 0, то принятые 8 бит дата, если 1 - команда.
Сейчас работаю через команды, от даты не увидел практической пользы.
дисплей уже инициализирован
C-D = 1;
111ххххх - номер столбца
1101abcd - запись в столбец 4х бит abcd, после этого номер столбца автоматом делает +1
Сейчас работаю через команды, от даты не увидел практической пользы.
дисплей уже инициализирован
C-D = 1;
111ххххх - номер столбца
1101abcd - запись в столбец 4х бит abcd, после этого номер столбца автоматом делает +1
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Дисплей на D7225
Понятно, спасибо 
Re: Дисплей на D7225
Товарищи!
Кто то запустил дисплей на D7225? Если да, то поделитесь рабочим кодом инициализации, выводом циферок. Мой дисплей на двух 7225, я так думаю один управляет верхней строкой 7-сег, другой строкой 14-сег.
Я боролся-боролся, кроме параличного рандомного мигания ничего.
Спасибо!
Кто то запустил дисплей на D7225? Если да, то поделитесь рабочим кодом инициализации, выводом циферок. Мой дисплей на двух 7225, я так думаю один управляет верхней строкой 7-сег, другой строкой 14-сег.
Я боролся-боролся, кроме параличного рандомного мигания ничего.
Спасибо!
Вышел из себя.
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
Re: Дисплей на D7225
Если кому интересно, то вот видео как работать с этим МК: https://www.youtube.com/watch?v=6HcJMtBni_8
Там три части. Так как я только изучал этот МК, который установлен на плате дисплея магнитолы Ауди, то со всеми подробностями. Тем более я не программист. Но понять как можно обуздать такой дисплей более чем достаточно.
Там три части. Так как я только изучал этот МК, который установлен на плате дисплея магнитолы Ауди, то со всеми подробностями. Тем более я не программист. Но понять как можно обуздать такой дисплей более чем достаточно.
Код: Выделить всё
#define _SCK 1 //оранжевый
#define _SI 2 //зеленый
#define _CD 3 //феолетовый
#define _CS 4 //серый
void command(uint8_t cmd){
for(int i=0; i<8; i++)
{
digitalWrite(_SI,(cmd &(1<<(7-i)))); // Вывод байта начиная со старшего бита
digitalWrite(_SCK,LOW);
delay(1);
digitalWrite(_SCK,HIGH);
delay(1);
}
}
void setup(){
pinMode(_SCK,OUTPUT);
pinMode(_SI,OUTPUT);
pinMode(_CD,OUTPUT);
pinMode(_CS,OUTPUT);
//Инициализация дисплея
digitalWrite(_SCK,HIGH);
digitalWrite(_CD,HIGH);
digitalWrite(_CS,HIGH);
delay(1);
//Настройка дисплея
digitalWrite(_CS,LOW);
command(0x5C);//Mode set
command(0x31);//Synchronized transfer
command(0x11);//DISPLAY ON
command(0x20);//CLEAR DISPLAY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
}
void loop(){
//круги
digitalWrite(_CS,LOW);
command(0xE0);//LOAD DATA POINTER
command(0xD1);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//M
digitalWrite(_CS,LOW);
command(0xE0);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
command(0xD3);//WRITE DATA MEMORY
command(0xD2);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//DX
digitalWrite(_CS,LOW);
command(0xE2);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//0
digitalWrite(_CS,LOW);
command(0xE8);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
command(0xD1);//WRITE DATA MEMORY
command(0xD3);//WRITE DATA MEMORY
command(0xD1);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//1
digitalWrite(_CS,LOW);
command(0xEE);//LOAD DATA POINTER
command(0xD2);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//2
digitalWrite(_CS,LOW);
command(0xF0);//LOAD DATA POINTER
command(0xD2);//WRITE DATA MEMORY
command(0xD3);//WRITE DATA MEMORY
command(0xD1);//WRITE DATA MEMORY
command(0xD1);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//3
digitalWrite(_CS,LOW);
command(0xF4);//LOAD DATA POINTER
command(0xD2);//WRITE DATA MEMORY
command(0xD2);//WRITE DATA MEMORY
command(0xD3);//WRITE DATA MEMORY
command(0xD1);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//POINT
digitalWrite(_CS,LOW);
command(0xF7);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//4
digitalWrite(_CS,LOW);
command(0xF8);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
command(0xD2);//WRITE DATA MEMORY
command(0xD2);//WRITE DATA MEMORY
command(0xD0);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//VF
digitalWrite(_CS,LOW);
command(0xFB);//LOAD DATA POINTER
command(0xD2);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//8
digitalWrite(_CS,LOW);
command(0xFC);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
command(0xD3);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//RIGHT
digitalWrite(_CS,LOW);
command(0xFE);//LOAD DATA POINTER
command(0xD1);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(500);
//LEFT
digitalWrite(_CS,LOW);
command(0xFE);//LOAD DATA POINTER
command(0xD3);//WRITE DATA MEMORY
digitalWrite(_CS,HIGH);//Отправка команд
delay(5000);
//CLEAR DISPLAY
digitalWrite(_CS,LOW);
command(0x20);//CLEAR DISPLAY
digitalWrite(_CS,HIGH);//Отправка команд
delay(1000);
}


