Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Дисплей на D7225

Пт янв 08, 2016 18:30:37

Пытаюсь завести дисплей, контроллер mPD7225, вот таблица соответствия сегментов-выводов.
7225.JPG
Таблица соответствия сегментов
(106.38 KiB) Скачиваний: 668

Сделал вывод, что это 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
20160108192604.jpg
5F
(203.31 KiB) Скачиваний: 701

А это не кулл, как быть?

Re: Дисплей на D7225

Вс янв 10, 2016 10:04:29

Попробуйте так: spi(0b00011101);
Если ничего не будет подсвечено, то так: spi(0b00011101); spi(0b11010001);.

Re: Дисплей на D7225

Вс янв 10, 2016 21:08:22

я тоже обратил внимание, что засвет соответствует коду 1101. Но без этого кода не работает вообще, это команда на запись в память.

Re: Дисплей на D7225

Пн янв 11, 2016 13:41:10

А все оказалось банально. Посыл даты это оказывается не дата, это команда. :shock:
Дергнул пин конада\дата в команду и все заработало...

Re: Дисплей на D7225

Ср янв 20, 2016 08:22:15

Поздравляю! Но, что тогда посыл даты? Можете подробнее описать посылку даты, указав команды и какие уровни на управляющих
пинах ставите?

Re: Дисплей на D7225

Пт янв 22, 2016 20:34:48

На драйвере есть пин C-D. Если он 0, то принятые 8 бит дата, если 1 - команда.
Сейчас работаю через команды, от даты не увидел практической пользы.

дисплей уже инициализирован
C-D = 1;
111ххххх - номер столбца
1101abcd - запись в столбец 4х бит abcd, после этого номер столбца автоматом делает +1

Re: Дисплей на D7225

Вс янв 24, 2016 10:57:45

Понятно, спасибо :)

Re: Дисплей на D7225

Ср июн 15, 2022 12:21:54

Товарищи!
Кто то запустил дисплей на D7225? Если да, то поделитесь рабочим кодом инициализации, выводом циферок. Мой дисплей на двух 7225, я так думаю один управляет верхней строкой 7-сег, другой строкой 14-сег.
Я боролся-боролся, кроме параличного рандомного мигания ничего.
Спасибо!

Re: Дисплей на D7225

Пн янв 09, 2023 18:50:22

Если кому интересно, то вот видео как работать с этим МК: 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);

}
Ответить