Arduino и дисплеи от сотиков мобильных телефонов

slider
Offline
Зарегистрирован: 17.06.2014

Сподвигнули меня на подборки дисплея разбитый шилд 3,5" для ардуино уно, и интерес запуска почти дармовых дисплеев. // странно, на шилде стабилизатор 3,3v использовался напрямую для подсветки. (тогда уж можно было запитать подсветку через резистор от 5v). Сам дисплей и микросхемы преобразователи уровней питались от 3,3v что шли с ардуины! , тогда по идее нафиг не нужен был стабилизатор на шилде.

В магазе по запчастям от сотиков http://www.la-bora.ru/categories/15  нашёл похожие дислеи 3,2" по смешной цене  39руб :) ,  называется "Дисплей для china iphone  тип 2 " (как удалось потом запустить , забрал ещё парочку) , дисплеи поменьше, идут уже с тачем . //(потом там же куплены для опытов 3,0" 320x240 и 400x240, есть ещё много подобных дешёвых магазов  www.megaopt.ru , ... )   .   На шлейфе ничего не написано, неизвесто название и распиновка. Попрозванивал, примерно прикинул что где может быт, распиновка 37пин - одна из стандартных,. зелёный шилд пришлось закинуть, ибо там через микросхемы согласователи иногда лупят в дисплей 4,5v , как-то не надёжно. Подключал через резисторы 10к, в итоге питание дисплея свыше 4v ибо пересиливается через входа . В итоге пришёл к резистивным делителям 10к-22к, просто и безопасно для дисплея и ардуины. 

Подключил к меге , UTFT v2.77 (в v2.79 убрана поддержка ili9320 , в связи с тем что производители шилдов не захотели башлять бабосы за использование UTFT ) . и тупо перебирал все виды дисплеев от 0 до 32 (потом пришлось DB0-DB15 перевернуть, потому как в разных распиновках поразному) , пока экран качественно не запустился на UTFT myGLCD(22,38,39,40,41);   ( это CTE28)  . 

потом уже потратил ещё несколько дней на написание проги по считыванию ID дисплея 

Подключение дисплея 1602

// программа для определения ID контроллера дисплея, подключать все 16бит
// (эт чтоб найти старшие биты , ибо в большинстве случаев именно они используются для 8ми битного режима)
//
// в верхней строчке покажет 16 бит ответа с дисплея , начиная со старшего бита
// в нижней строчке в HEX коде старший и младший байты. (для ILI контроллеров это будет 9325, 9320, 9327,...)
// при угадывании правильного подключения шины данных дисплея должно получиться к примеру:
// 1я строчка: 1001 0011 0010 0101
// 2я строчка: 9 3 2 5 ,т.е. это контроллер ILI9325
// подсветку дисплея через ом~20-30 к +5v, питание дисплея от ардуиновских 3.3v (если надо то занизить стабилитроном
// или стабилизатором до 2.8v - т.к. иногда инициализации дисплеев приводятся для 2.8v - там константы напряжений
// для правильной работы ЖК матрицы)
//
// выводы дисплея желательно подключать через резист. делители к примеру 10к+22к , на крайняк тупо через 10к,
// но тогда на питание диспл. посадить стабилитрон 3,0-3,1v и запитывать через резист. ом~20-30 от +3,3v,
// иначе дисплей запитается через выводы и ~4-5v пересилят ардуиновские +3,3v
//
// выводы подключать стандартно UTFT на arduino mega RS(CD),WR, CS, RST
// Standard Arduino Mega/Due shield : <display model>,38, 39, 40, 41
// CTE TFT LCD/SD Shield for Arduino Mega : <display model>,38, 39, 40, 41
//
//выводы ардуино меги 22-29 к предполагаемым выводам дисплея DB8-DB15
//выводы ардуино меги 30-37 к предполагаемым выводам дисплея DB8-DB0
// и дополнительно, для получения ответа от дисплея, необходимо
// к выв. ардуино меги 42 подключить вывод RD дисплея. (по умолчанию на шилдах он кинут на +3.3v)
// Дисплей 1602, выводы VSS, VDD, RS, E, D4, D5, D6, D7
// к выводам ардуино меги GND, +5v, 13, 12, 11, 10, 9, 8
// помним на дисплее поставить резистор 3,3к между VO и VSS(+) , RW замкнуть на VSS(+), подключить A и K к VSS(+) и VDD
#include <LiquidCrystal.h>

#define CD_Pin 38 // (RS)
#define WR_Pin 39
#define CS_Pin 40
#define RST_Pin 41
#define RD_Pin 42

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int i;
byte byteH;
byte byteL;
void setup()
{
lcd.begin(16, 2);

digitalWrite(CS_Pin, 1); // деактивация диспл. (отключение его шины данных DB0..DB15)
digitalWrite(RST_Pin, 0); // сброс дисплея
//for (i=22; i<=42;i++) { digitalWrite(i, 0); } // всё лог.0
for (i=22; i<=42;i++) { pinMode(i, OUTPUT); } // конфиг всех пинов на выход + управляющие пины
digitalWrite(RST_Pin, 1); // вывод дисплея из сброса

// запишем команду
digitalWrite(RD_Pin, 1); // уст. порта дисплея на приём (ввод данных в дисплей)
digitalWrite(CD_Pin, 0); // будем работать 0-команда 1-данные
digitalWrite(CS_Pin, 0); // выбор дисплея (активация)
PORTA=0x00; PORTC=0x00; // это команда для считывания ID дисплея =0x00
digitalWrite(WR_Pin, 1); // дёргаем WR
digitalWrite(WR_Pin, 0);
digitalWrite(CS_Pin, 1); // деактивация диспл. (отключение его шины данных DB0..DB15)

//чтение данных
DDRA=0x00; DDRC=0x00; // или for (i=22; i<=37;i++) { pinMode(i, INPUT); } // конфиг всех пинов на вход
digitalWrite(RD_Pin, 0); // уст. порта дисплея на передачу (вывод данных с дисплея)
digitalWrite(CD_Pin, 1); // будем работать с 0-команда 1-данные
digitalWrite(CS_Pin, 0); // выбор дисплея (активация )
digitalWrite(WR_Pin, 1); // дёргаем WR
digitalWrite(WR_Pin, 0);

lcd.setCursor(0, 0);
byteH=0;
if ( digitalRead(29) ) { byteH=byteH+128; lcd.print(1); } else lcd.print(0);
if ( digitalRead(28) ) { byteH=byteH+64; lcd.print(1); } else lcd.print(0);
if ( digitalRead(27) ) { byteH=byteH+32; lcd.print(1); } else lcd.print(0);
if ( digitalRead(26) ) { byteH=byteH+16; lcd.print(1); } else lcd.print(0);
if ( digitalRead(25) ) { byteH=byteH+8; lcd.print(1); } else lcd.print(0);
if ( digitalRead(24) ) { byteH=byteH+4; lcd.print(1); } else lcd.print(0);
if ( digitalRead(23) ) { byteH=byteH+2; lcd.print(1); } else lcd.print(0);
if ( digitalRead(22) ) { byteH=byteH+1; lcd.print(1); } else lcd.print(0);
byteL=0;
if ( digitalRead(30) ) { byteL=byteL+128; lcd.print(1); } else lcd.print(0);
if ( digitalRead(31) ) { byteL=byteL+64; lcd.print(1); } else lcd.print(0);
if ( digitalRead(32) ) { byteL=byteL+32; lcd.print(1); } else lcd.print(0);
if ( digitalRead(33) ) { byteL=byteL+16; lcd.print(1); } else lcd.print(0);
if ( digitalRead(34) ) { byteL=byteL+8; lcd.print(1); } else lcd.print(0);
if ( digitalRead(35) ) { byteL=byteL+4; lcd.print(1); } else lcd.print(0);
if ( digitalRead(36) ) { byteL=byteL+2; lcd.print(1); } else lcd.print(0);
if ( digitalRead(37) ) { byteL=byteL+1; lcd.print(1); } else lcd.print(0);

lcd.setCursor(0, 1);
lcd.print("ID display: ");
lcd.print(byteH, HEX);lcd.print(byteL, HEX);

digitalWrite(CS_Pin, 1); // деактивация диспл. (отключение шины данных DB0..DB15)
DDRA=0xFF; DDRC=0xFF; // или for (i=22; i<=37;i++) { pinMode(i, OUTPUT); } // конф. шины данных ARDUINO на выход
digitalWrite(RD_Pin, 1); // уст. порта дисплея на приём (ввод данных в дисплей)
//digitalWrite(RST_Pin, 1);

// вставка для UTFT
// pinMode(42, OUTPUT); // конф.ардуино для RD на выход
// digitalWrite(42, 1); // уст. RD=1 - чтобы порт дисплея был на приём (ввод данных в дисплей)

//delay(100);
}

void loop() {
// put your main code here, to run repeatedly:

}

Именно на этом шлейфе дисплея не оказалось перемычек R1 R2....(для SPI или 8 бит режима) , шлейфом железно он на 16 бит. Разве что дорожки резать, ну нафиг, буду эти дисплеи использовать на mini pro или UNO c A6 и A7, для построения графиков по входному АЦП, ног хватит. , А т.к. шина данных дисплея отключается по CS , то можно и все цифровые пины использовать.

Приобрёл также по  39-79руб 2,8"-3,0" TFT8K1465 и TFT8K1465  400x240 вроде там ili9326 и R61509V (на их шлейфах есть R1-R4 для перевода в 8 бит и SPI) , после долгих поисков нашёл много разной инициализации на них, но незнаю как их вкорячить в UTFT хотябы взамен похожих,    henningkarlsen.com ответил что работает только с изготовителями шилдов или консультация за деньги.  

 Также можно дисплеи поискать у от FLY , там много китайчины TFT8K... . Не советую  увлекатьсям долгим поиском названий, в китае много фирмочек делают дисплеи, ставят какие угодно контроллеры,  разнообразные шлейфы придумывая свои названия что по ним нереально найти что либо. Можно ещё прикидывать по самим контроллерам, что примерно в шлейф от них куда идёт. 

Распиновки, если надо, кину позже , как соберу их до кучи со всех компов. 

slider
Offline
Зарегистрирован: 17.06.2014

!!!!!!! remark   к началу темы

на август 2017 последняя верия читалки v5.3  comment-290976

 

 

добавлю по первому подключенному дисплейчику, 
дисплей 3,2"    228H-A0 (активные" примерно, вес дисплейчик около 3,7")  320x240    ILI9325 
228H-A0 на шлейфе надпись, инет находит ряд аналогов 
VS3206A-FPC-B0, 
XT032-011FPC-A1, 
CTM320QVNW-011, 
K32G037-020A, 
515-A0,
BW3202MHA-B-C,
ХТ032-004FPC-B1, 
BW3202MHA-B-C,
TFT8K1711FPC-A1-E,
8K1711,
F320029VC,
XT032-002FPC-A1,
FPC-CZ0032-A,
XT032-006FPC-A1,...
Распиновка
DB08 
DB09 
DB10 
DB11 
GND 
VDD 
CS 
RS 
WR 
RD 
      X- 
      X+ 
      Y- 
      Y+ 
 LED_A 
 LED_K1 
 LED_K2 
 LED_K3 
 LED_K4 
 LED_K5 
 NC 
DB12 
DB00
DB01
DB02
DB03
DB04
DB05
DB06
DB07 
 RESET 
 VDD 
 VDD 
 GND 
DB13 
DB14 
DB15 

Подсветка дисплея 15-20 Ом от 5v. Питание дисплея 5v через 100 Ом, стабилитрон 3.0v,  кондёр 10мкф (хотя думаю на свой страх и риск можно и параллельно светодиодам подсветки запитаться, они как раз 3.0-3.3v стабилизируют , в надежде надёжных светодиодов) . Вот такая вот платка получилась не заграждающая многочисленные пины меги.

 
PhOSTU
Offline
Зарегистрирован: 20.06.2014

slider пишет:

после долгих поисков нашёл много разной инициализации на них, но незнаю как их вкорячить в UTFT хотябы взамен похожих

Свяжитесь со мной по почте ers-oleg ГАВ yandex.ru Попробую помочь с UTFT, а Вы мне)

UPD: куда-то Вы пропали. skype не пользуюсь. Потому для связи почта

slider
Offline
Зарегистрирован: 17.06.2014

3.0"  400x240   8K1465    TFT8K1465FPC-A1-E   TRULY-C   ( nokia china 5800 , X6 ) и arduino

- следующий осиленный дисплейчик.

идёт вместе с тачем, по нулевому адресу вычитывается контроллер SPFD5420A

Распиновка 37pin :

      NC
   XL
   YU
   XR
   YD
GND
Vdd
Vdd
      NC / Frame marker
  CS
  RS(CD) 
  WR
  RD
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
  Reset
GND
LED_A
LED_K1
LED_K2
LED_K3
LED_K4
       NC

 

Места для резисторов R1, R2, R3 выполняет какую-то непонятную функцию (R1 паралелен кондёру, R2 и R3 образуют среднюю точку), т.е. это не похоже на IM0-3 для перевода в 8бит, и SPI режим. Можно посмотреть даташит на контроллер, кому надо,  где примерно должны выйти эти пины в шлейф. (похоже на 1,2,3 или 5,6 тонкие дорожки)

Лепил на базе последних IDE 1.5.8 и UTFT v.2.79

чтобы запустить этот дисплейчик на UTFT пришлось долго повозиться с его файлами для упрощенного и быстрого использования инициализаций, без их переделки с 16ти на 8H+8L.  Во первых адресация к регистрам 16ти битная. В других дисплеях к примеру посылали 8ми битный адрес регистра, а затем м.б. несколько последовательно 8 (16) битные параметров для его конфигурации. В данном дисплее (и последующем) надо посылать 16ти битный адрес регистра, затем 16ти битный параметр.  (и не важно как используется шина 16,8бит ,SPI 4p или SPI 5p). Во вторых другая адресация X и Y.

делал добавление 16ти битных фукций в UTFT.h , UTFT.cpp и подменой  драйвера ILI9327 на разные драйвера добытые в просторах инета.

Добавка в UTFT.cpp :

 void UTFT::LCD_Write_COM(char VH,char VL)   // *********** добавил ****************
 {      if (display_transfer_mode!=1)  { cbi(P_RS, B_RS); 	LCD_Writ_Bus(VH,VL,display_transfer_mode); 	}
 	                                           else { LCD_Writ_Bus(0x00,VH,display_transfer_mode); LCD_Writ_Bus(0x00,VL,display_transfer_mode); }
 }

void UTFT::LCD_Write_COM16(int com16)        // *********** добавил ****************
{      if (display_transfer_mode!=1)  { cbi(P_RS, B_RS); 	LCD_Writ_Bus(com16>>8,com16,display_transfer_mode); 	}
	                                           else {  cbi(P_RS, B_RS); LCD_Writ_Bus(0x00,com16>>8,display_transfer_mode); LCD_Writ_Bus(0x00,com16,display_transfer_mode); }
}

void UTFT::LCD_Write_DATA16(int dat16)        // *********** добавил ****************
{      if (display_transfer_mode!=1)  { sbi(P_RS, B_RS); 	LCD_Writ_Bus(dat16>>8,dat16,display_transfer_mode); 	}
	                                           else {  sbi(P_RS, B_RS); LCD_Writ_Bus(0x00,dat16>>8,display_transfer_mode); LCD_Writ_Bus(0x00,dat16,display_transfer_mode); }
}

void UTFT::LCD_Write_COM16_DATA16(int com16,int dat16)  // *********** добавил  ************
{  //   LCD_Write_COM(com16>>8,com16);     LCD_Write_DATA(dat16>>8,dat16); // на 1 сек. медленнее рисует тест
   LCD_Write_COM16(com16);     LCD_Write_DATA16(dat16);  // идентично верхней строчке
}

ну и соответсвенно их надо объявить в UTFT.h :

void LCD_Write_COM(char VH,char VL);
void LCD_Write_COM16(int com16); 
void LCD_Write_DATA16(int dat16);
void LCD_Write_COM16_DATA16(int com16,int dat16);

Возможно что-то переборщил, ну да ладно, главное - заработало.

Одна из нескольких рабочих инициализаций  initlcd.h :

  LCD_Write_COM16_DATA16(0x0606, 0x0000);    // Pin Control (R606h)
  delay(50);
  LCD_Write_COM16_DATA16(0x0007, 0x0001);    // Display Control 1 (R007h)
  delay(50);
  LCD_Write_COM16_DATA16(0x0110, 0x0001);    // Power Control 6(R110h)
  delay(50);
  LCD_Write_COM16_DATA16(0x0100, 0x17B0);    // Power Control 1 (R100h)
  LCD_Write_COM16_DATA16(0x0101, 0x0147);    // Power Control 2 (R101h)
  LCD_Write_COM16_DATA16(0x0102, 0x019D);    // Power Control 3 (R102h)
  LCD_Write_COM16_DATA16(0x0103, 0x3600);    // Power Control 4 (R103h)
  LCD_Write_COM16_DATA16(0x0281, 0x0010);    // NVM read data 2 (R281h)  
  delay(50);
  LCD_Write_COM16_DATA16(0x0102, 0x01BD);    // Power Control 3 (R102h)
  delay(50);

  //--------------- Power control 1~6 ---------------//
  LCD_Write_COM16_DATA16(0x0100, 0x16B0);    // Power Control 1 (R100h)
  LCD_Write_COM16_DATA16(0x0101, 0x0147);    // Power Control 2 (R101h)
  LCD_Write_COM16_DATA16(0x0102, 0x01BD);    // Power Control 3 (R102h)
  LCD_Write_COM16_DATA16(0x0103, 0x2d00);    // Power Control 4 (R103h)
  LCD_Write_COM16_DATA16(0x0107, 0x0000);    // Power Control 5 (R107h)
  LCD_Write_COM16_DATA16(0x0110, 0x0001);    // Power Control 6(R110h)
  LCD_Write_COM16_DATA16(0x0280, 0x0000);    // NVM read data 1 (R280h)
  LCD_Write_COM16_DATA16(0x0281, 0x0006);    // NVM read data 2 (R281h)
  LCD_Write_COM16_DATA16(0x0282, 0x0000);    // NVM read data 3 (R282h)

  //------- Gamma 2.2 control (R300h to R30Fh) ------//
  LCD_Write_COM16_DATA16(0x0300, 0X0101); 
  LCD_Write_COM16_DATA16(0x0301, 0x0bB7);   
  LCD_Write_COM16_DATA16(0x0302, 0x132A); 
  LCD_Write_COM16_DATA16(0x0303, 0x2A13); 
  LCD_Write_COM16_DATA16(0x0304, 0x270B); 
  LCD_Write_COM16_DATA16(0x0305, 0x0101); 
  LCD_Write_COM16_DATA16(0x0306, 0x1205); 
  LCD_Write_COM16_DATA16(0x0307, 0x0512); 
  LCD_Write_COM16_DATA16(0x0308, 0X0005); 
  LCD_Write_COM16_DATA16(0x0309, 0x0003); 
  LCD_Write_COM16_DATA16(0x030A, 0X0F04); 
  LCD_Write_COM16_DATA16(0x030B, 0x0F00); 
  LCD_Write_COM16_DATA16(0x030C, 0x000F); 
  LCD_Write_COM16_DATA16(0x030D, 0x040F);    
  LCD_Write_COM16_DATA16(0x030E, 0x0300);    
  LCD_Write_COM16_DATA16(0x030F, 0x0500);    
   /*** secorrect gamma2 ***/
  LCD_Write_COM16_DATA16(0x0400, 0x3500);    // Base Image Number of Line (R400h)
  LCD_Write_COM16_DATA16(0x0401, 0x0001);    // Base Image Display Control (R401h)
  LCD_Write_COM16_DATA16(0x0404, 0x0000);    // Based Image Vertical Scroll Control (R404h)

  //--------------- Normal set ---------------//
  LCD_Write_COM16_DATA16(0x0000, 0x0000);    // ID Read Register (R000h)
  LCD_Write_COM16_DATA16(0x0001, 0x0100);    // Driver Output Control Register (R001h)
  LCD_Write_COM16_DATA16(0x0002, 0x0100);    // LCD Driving Waveform Control (R002h)
  LCD_Write_COM16_DATA16(0x0003, 0x1030);    // Entry Mode (R003h)            //  ,0x1288); /*up:0x1288 down:0x12B8 left:0x1290 right:0x12A0*/
  LCD_Write_COM16_DATA16(0x0006, 0x0000);    // Display Control 1 (R007h)
  LCD_Write_COM16_DATA16(0x0008, 0x0808);    // Display Control 2 (R008h)
  LCD_Write_COM16_DATA16(0x0009, 0x0001);    // Display Control 3 (R009h)
  LCD_Write_COM16_DATA16(0x000B, 0x0010);    // Low Power Control (R00Bh)
  LCD_Write_COM16_DATA16(0x000C, 0X0000);    // External Display Interface Control 1 (R00Ch)
  LCD_Write_COM16_DATA16(0x000F, 0X0000);    // External Display Interface Control 2 (R00Fh)
  
  LCD_Write_COM16_DATA16(0x0007, 0X0001);    // Display Control 1 (R007h)

  //--------------- Panel interface control 1~6 ---------------//
  LCD_Write_COM16_DATA16(0x0010, 0x0012);    // Panel Interface Control 1 (R010h)
  LCD_Write_COM16_DATA16(0x0011, 0x0202);    // Panel Interface Control 2 (R011h)
  LCD_Write_COM16_DATA16(0x0012, 0x0300);    // Panel Interface control 3 (R012h)
  LCD_Write_COM16_DATA16(0x0020, 0x021E);    // Panel Interface control 4 (R020h)
  LCD_Write_COM16_DATA16(0x0021, 0x0202);    // Panel Interface Control 5 (021Rh)
  LCD_Write_COM16_DATA16(0x0022, 0x0100);    // Panel Interface Control 6 (R022h)
  LCD_Write_COM16_DATA16(0x0090, 0x8000);    // Frame Marker Control (R090h)
  LCD_Write_COM16_DATA16(0x0092, 0x0000);    /*MDDI Sub-display Control  */   // add from  init  i-hardware

  //--------------- Partial display ---------------//
  LCD_Write_COM16_DATA16(0x0210, 0x0000);    // Window Horizontal RAM Address Start (R210h)
  LCD_Write_COM16_DATA16(0x0211, 0x00EF);    // Window Horziontal RAM Address End (R211h)
  LCD_Write_COM16_DATA16(0x0212, 0x0000);    // Window Vertical RAM Address Start (R212h)
  LCD_Write_COM16_DATA16(0x0213, 0x018F);    // Window Vertical RAM Address End (R213h)
  LCD_Write_COM16_DATA16(0x0500, 0X0000);    // Display Position - Partial Display 1 (R500h)
  LCD_Write_COM16_DATA16(0x0501, 0X0000);    // RAM Address Start - Partial Display 1 (R501h)
  LCD_Write_COM16_DATA16(0x0502, 0X0000);    // RAM Address End - Partail Display 1 (R502h)
  LCD_Write_COM16_DATA16(0x0503, 0x0000);    // Display Position - Partial Display 2 (R503h)
  LCD_Write_COM16_DATA16(0x0504, 0x0000);    // RAM Address Start ? Partial Display 2 (R504h)
  LCD_Write_COM16_DATA16(0x0505, 0x0000);    // RAM Address End ? Partial Display 2 (R505h)
  LCD_Write_COM16_DATA16(0x0606, 0x0000);    // Pin Control (R606h)
  LCD_Write_COM16_DATA16(0x06F0, 0X0000);    // NVM Access Control (R6F0h)

  //--------------- Display on --------------------//
  LCD_Write_COM16_DATA16(0x0007, 0x0173);    // Display Control 1 (R007h)
  delay(50);
  LCD_Write_COM16_DATA16(0x0007, 0x0171);    // Display Control 1 (R007h)
  delay(10);
  LCD_Write_COM16_DATA16(0x0007, 0x0173);    // Display Control 1 (R007h) 

 

 
Установка XY  в  setxy.h (заработало почемуто именно в такой последовательности) :
// SPFD5420A 
	LCD_Write_COM16_DATA16(0x0200,x1); // GRAM Address Set (Horizontal Address) (R20h)
	LCD_Write_COM16_DATA16(0x0201,y1); // GRAM Address Set (Vertical Address) (R21h)
	
	LCD_Write_COM16_DATA16(0x0210,x1);   // Window Horizontal RAM Address Start (R210h)
	LCD_Write_COM16_DATA16(0x0212,y1);   // Window Vertical RAM Address Start (R212h)
	LCD_Write_COM16_DATA16(0x0211,x2);   // Window Horziontal RAM Address End (R211h)
	LCD_Write_COM16_DATA16(0x0213,y2);   // Window Vertical RAM Address End (R213h)
	
	LCD_Write_COM16(0x0202); 

Возможно можно что-то упростить. У меня небыло задачи выжать максимальную скорость теста.
 
Переделанная библиотека UTFT под  SPFD5420A :
выбирать пример   examples\Arduino (AVR)\UTFT_Demo_400x240 ,  ( инициализация UTFT myGLCD(1,38,39,40,41); ) . 
Закинул в этот архив ещё даташиты, найденные и переделанные инициализации. Возможно другие там инициализации лучше подойдут для картинок, ведь там разные настройки гаммы цветов. Да и вроде они в основном может оптимизированы для 2,8 вольт питающего (там ещё и контраст, яркость,...разные настройки для самой матрицы) . Так что если что , можно попробовать другие подготовленные инициализации или изменение питающёго с 3,3 на 2,8 для лучшей цветопередачи.   Обычный тест работает отлично.  
Дисплей подключал также:
- информационные пины - тупо через резисторы 10кОм ,
- питание 3,3v взял с arduino.  ( ни или можно из соображений безопасности и понижения напряжения - через 10ом и повесить параллельно стабилитрончик 3,0v c танталовым кондёрчиком ), 
- подсветку запитал от 5v через 20ом.
 
 
PhOSTU
Offline
Зарегистрирован: 20.06.2014

slider пишет:

3.0"  400x240   8K1465    TFT8K1465FPC-A1-E   TRULY-C   ( nokia china 5800 , X6 ) и arduino

М О Л О Д Е Ц!!!

Каков размер активной области экрана?

slider
Offline
Зарегистрирован: 17.06.2014

Это и есть  активный (примерно 3,0" . точнее я бы сказал 2,9" , диагональ всего дисплея около  3,5" ).
инет говорит о аналогах F30NCX-11_V1.0, FPC-FTM300D03Z-00, BX FPC 30003 , CT028WQT001 V1
//для первого дисплея аналоги подправил выше
К примеру у зелёного шилда 3,5" (точнее я бы сказал 3,4" активная, диагональ всего около 3,8" ).
Дисплейчик 400x240 8K1463 TFT8K1463FPC-A1-E TRULY-C  (ili9326) -позиционизируется как 2,8"  (точнее я бы сказал 2,75 ,  диагональ всего дисплея около 3,3" ).  
Возможно позже расположу опыты и инфу на него, он смог переключиться в 8ми битный режим, перестановкой перемычки R1 R2 на шлейфе.  Шёл без тачскрина. ппереваривает инициализации от spfd5420a
//так уж завелось , что на ebay и aliexpress дисплеи пишутся в дюймах активной области а не в мм. По поиску названий дисплеев  в инете многие магазы указывают внешний размер дисплея. На aliexpress зачастую выкладывают картинки и PDF с точными размерами и распиновкой.  

>>PhOSTU
>> я имел ввиду в мм)) 
400x240
tft8k1465 размеры внешние  76*45мм  , активные 65*39мм        (3,0")
tft8k1463 размеры внешние  73*45мм  , активные 61*37мм        (2,8")
(разм. внешние - вместе с белой удерживающей рамкой, с её ушками)

 

 

!!!!!!! remark   к началу темы

на март 2021  :

варианты подключения LVDS , MIPI , RGB дисплеев (и др. также не имеющих своей видеопамяти):
#102 , #211 , #234  , #764 , #1804 , ( #529 - #553 , #753 ) , с видеоплатой,тогда tv-out #663 , #2736 , почему не получиться с LVDS #2980 - #2984 , RGB #3198 - #3200 ,

макетные платы :
#178 , 

как надо фотографировать шлейфы дисплеев (чтобы чётко прослеживалась каждая дорожка на общем плане) :
#160 , #163 , #594 , #1385 , #1386 , #3408 ( и как не надо #607 , #881 , #889 , #1045 , #1074 , #1159 , #1354 , #2741 ) ,

Варианты минимизаций поделок на дисплеях:
#15 , #40 , #53 , #930 #936 ,

Подключение 8/16ти битных по SPI :
#162 , #878 #884 (но надо было Reset на отдельный пин) , #3362  ( список 7ми! проверенных библиотек ) ,

Большой размерчик :
5.6"  #2022 -...  , 5" 480x272 #2468 , общее #2709 , 5.6" #3033-...
640x360 #265 - #269 
800x480 #2611 #2612 , 

Необычные экземпляры:
без деталей на шлейфе #511 #2458 #2664

Описание даташита дисплея на русском, с русскими картинками, на примере ILI9325
http://microsin.net/programming/avr/tft-lcd-controller-ili9325.html

8/16 бит библиотеки
#3408

SPI библиотеки
#3362

 

 

PhOSTU
Offline
Зарегистрирован: 20.06.2014

я имел ввиду в мм)) Не люблю эти дюймы..

nick_kr
Offline
Зарегистрирован: 13.12.2014

а может кто то подскажет как подключить к ардуинке дисплей от нокии 3510?

slider
Offline
Зарегистрирован: 17.06.2014

nick_kr пишет:

а может кто то подскажет как подключить к ардуинке дисплей от нокии 3510?

а может для начала спросить у яндекса или гугл ? " дисплей nokia avr "  " дисплей nokia atmega "  " дисплей nokia arduino " и не надо здесь спамить, и засирать ветку. И если только нигде нет инфы, то попробовать самому  исследовать и выложить здесь.  Есть более большие дисплеи nokia чем ваш , и по "копеечной" цене.

Тут выкладываю то, что готового не нашёл в инете после долгих поисков. Что собрал в одно, исследовал, разжевал . 

nick_kr
Offline
Зарегистрирован: 13.12.2014

slider пишет:
 а может для начала спросить у яндекса или гугл ? " дисплей nokia avr "  " дисплей nokia atmega "  " дисплей nokia arduino ".... 

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

StrangerM
Offline
Зарегистрирован: 02.11.2013

slider, скажите пожалуйста, а что вы думаете относительно 7" дисплеев 800х480 от электронных книг. На свалке в Юлмарте можно купить книгу с TFT  за смешные деньги? У меня, кстати, пришел из Китая треснутый дисплей на 3.5" , китайцы выслали замену, а можно переходник от него подружить с таким дисплеем - чисто теоретически? Или может чего в Питере поискать, в магазине по вашей ссылке смотрел, конкретно таких как ваш уже нет.

slider
Offline
Зарегистрирован: 17.06.2014

7" экраны новые находил там за 700руб, да и у самого с электронных валяется. На сколько я знаю, в 7" экране нет видео ОЗУ (т.е. там тупо RGB мутиплексор), поэтому ему обязательно нужна плата с контроллером, к примеру на распространённой SSD1963. + микросхемки питания.  Теоретически можно, но соединять это всё вместе врят ли получиться дешевле китайцев. 

У Лаборы, оказывается склад в Омске, поэтому самое большое кол-во было там.  Дисплеев у них было по 1-3шт. поэтому позаканчивались. Можно под заказ, но говорят это уже после нов.года. Вообще маркировок дисплеев огромное количество, контроллеры зачастую часто встречающиеся,  распиновки в большинстве случаев стандартные, особенно для 37 пин. Можно почти любой приляпать. На зелёный шилд  уже прилепил  дисплейчик 400x240 взамен также треснутого при транспортировке, в след. посте черкну.  (чтобы не трескались в пути,  у китайцев надо 2 и больше заказывать, они в картонной коробке тогда шлют, заранее с ними ещё можно обговорить) . 

StrangerM
Offline
Зарегистрирован: 02.11.2013

Благодарю за ответ. У меня плата красная. А треснул (скорее всего) из-за неправильной упаковки. Перетянули сильно вдоль упаковочной лентой (был слегка даже изогнут, при этом малые стороны были без умягчителя). И в самолете от мороза его и крякнуло. Я, кстати, еще выписал малину попробовать. Там на плате разъемчик под дисплей - может туда 7" сгодится. А то я уж Ритмикс за 320 р. купил. Не удержался.

slider
Offline
Зарегистрирован: 17.06.2014

3. третий распознанный дисплейчик, купленный почти даром, за 29руб

 2,8"  400x240   8K1463   TFT8K1463FPC-A1-E   TRULY-C  (ILI9326)  , china mobile K599

распиновка как у предыдущего

      NC / ID display - тупо делитель напр. R3 R4 , чтоб контроллер знал о наличии какого дисплея
   XL
   YU
   XR
   YD
GND
Vdd
Vdd
      NC / Frame marker
  CS
  RS(CD) 
  WR
  RD
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
  Reset
GND
LED_A
LED_K1
LED_K2
LED_K3
LED_K4
       NC

По нулевому адресу вычитывается 9326 .Порывшись в инете нашёл несколько инициализаций, адаптировал с UTFT , приложил в архив, на случай если кто озаботиться подбором лучшей  для коррекции цветов, яркости, или мож быстрым выводом на экран. На шлейфе переставил резистор с места R2 на R1, и дисплейчик переключился на 8 бит (используются грубо говоря с DB9-DB15). Вкорячил на известный зелёный шилд. Напряжение питания  3,3в оказалось аж 3,7в ( прёт в дисплей через микросхемы согласователей уровней, они в свою очередь и поднимают их питающее +3,3в из-за 5ти вольтовых уровней с ардуины)  Добавил параллельно +3,3в стабилитрон на 3,0в, питающее снизилось до 3,5в. 

После правки (спасибо разработчикам Notepad++, удобная замена  Wordpad-у ) библиотеки UTFT (т.к. в ILI9326 16ти битная адресация к регистрам), и инициализаций всё запустилось . Для зелёного шилда брал за основу UTFT_v2.77b2_uno_ili9327_8bit_turbo (спасибо PhOSTU ), т.к. там уже лишнее удалено , и переделан вывод на дисплей через 2-9 цифровые пины , а не 0-7(для быстрой прямой записи в порт) как в стандарте UTFT.  Что конечно замедляет скорость вывода на экран, но зато высвобождает аппаратные RХ TX . 

Сделанные 4ре поправки в v.2.77b2  (можно примерно также и в любой версии UTFT):

1. в UTFT.h добавлено рядом с подобными функциями

//  функция для 16ти битнной адресации к регистрам + передача 16ти битных данных 
 void LCD_Write_COM16_DATA16(int com16,int dat16);
 void LCD_Write_COM16(int com16);

2.в UTFT.cpp добавлено рядом с подобными функциями (для 8битной передачи , а для 16ти передавать надо через 2 порта, как в примере выше)

// функция для 16ти битнной адресации к регистрам + передача 16ти битных данных 
void UTFT::LCD_Write_COM16_DATA16(int com16,int dat16)  // *********** добавил  ************
{
		cbi(P_RS, B_RS);  // передаём команду в дисплей 
		LCD_Writ_Bus(com16>>8);
		LCD_Writ_Bus(com16);
		sbi(P_RS, B_RS); // предаём данные в дисплей
		LCD_Writ_Bus(dat16>>8);
               	LCD_Writ_Bus(dat16);
}

void UTFT::LCD_Write_COM16(int com16)        // *********** добавил ****************
{    		
                cbi(P_RS, B_RS);   
		LCD_Writ_Bus(com16>>8);
		LCD_Writ_Bus(com16);
}

 

3. замена инициалиции в ....\libraries\UTFT\tft_drivers\ili9327_8
initlcd.h
// ILI9326   init variant №2   
//-------------- Start Initial Sequence ----------------//
LCD_Write_COM16_DATA16(0x0702, 0x3008);// Set internal timing, don’t change this value
LCD_Write_COM16_DATA16(0x0705, 0x0036);// Set internal timing, don’t change this value
LCD_Write_COM16_DATA16(0x070B, 0x1213);// Set internal timing, don’t change this value
LCD_Write_COM16_DATA16(0x0001, 0x0100); // set SS and SM bit
LCD_Write_COM16_DATA16(0x0002, 0x0100); // set 1 line inversion
LCD_Write_COM16_DATA16(0x0003, 0x1030); // set GRAM write direction and BGR=1. Поворот 0x1030-0град., 0x1028-90гр., 0x1000-180гр., 0x1018-270гр
LCD_Write_COM16_DATA16(0x0008, 0x0202); // set the back porch and front porch
LCD_Write_COM16_DATA16(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_Write_COM16_DATA16(0x000C, 0x0000); // RGB interface setting
LCD_Write_COM16_DATA16(0x000F, 0x0000); // RGB interface polarity

//---------------Power On sequence ----------------//
LCD_Write_COM16_DATA16(0x0100, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_Write_COM16_DATA16(0x0102, 0x0000); // VREG1OUT voltage
LCD_Write_COM16_DATA16(0x0103, 0x0000); // VDV[4:0] for VCOM amplitude
delay(200); // Dis-charge capacitor power voltage
LCD_Write_COM16_DATA16(0x0100, 0x1190); // SAP, BT[3:0], AP, DSTB, SLP, STB 1290 1190
LCD_Write_COM16_DATA16(0x0101, 0x0127); // DC1[2:0], DC0[2:0], VC[2:0]
delay(50); // Delay 50ms
LCD_Write_COM16_DATA16(0x0102, 0x01B8); // VREG1OUT voltage 001C 01B8
delay(50); // Delay 50ms
LCD_Write_COM16_DATA16(0x0103, 0x3A00); // VDV[4:0] for VCOM amplitude 1800 3A00
LCD_Write_COM16_DATA16(0x0281, 0x0006); // VCM[5:0] for VCOMH 0030 0006
delay(50);
LCD_Write_COM16_DATA16(0x0200, 0x0000); // GRAM horizontal Address  
LCD_Write_COM16_DATA16(0x0201, 0x0000); // GRAM Vertical Address  

// ----------- Adjust the Gamma Curve ----------//
LCD_Write_COM16_DATA16(0x0300, 0x0000);
LCD_Write_COM16_DATA16(0x0301, 0x0506);
LCD_Write_COM16_DATA16(0x0302, 0x0405);
LCD_Write_COM16_DATA16(0x0305, 0x0007);
LCD_Write_COM16_DATA16(0x0306, 0x0008);
LCD_Write_COM16_DATA16(0x0307, 0x0203);
LCD_Write_COM16_DATA16(0x0308, 0x0102);
LCD_Write_COM16_DATA16(0x0309, 0x0707);
LCD_Write_COM16_DATA16(0x030C, 0x0700);
LCD_Write_COM16_DATA16(0x030D, 0x0008);

//------------------ Set GRAM area ---------------//
LCD_Write_COM16_DATA16(0x0210, 0x0000); // Horizontal GRAM Start Address
LCD_Write_COM16_DATA16(0x0211, 0x00EF); // Horizontal GRAM End Address // 240пикселей
LCD_Write_COM16_DATA16(0x0212, 0x0000); // Vertical GRAM Start Address
LCD_Write_COM16_DATA16(0x0213, 0x018F); // Vertical GRAM Start Address // 18F-400пикселей 1AF-432пикс
LCD_Write_COM16_DATA16(0x0400, 0x3500); // Gate Scan Line
LCD_Write_COM16_DATA16(0x0401, 0x0001); // NDL,VLE, REV
LCD_Write_COM16_DATA16(0x0404, 0x0000); // set scrolling line

//-------------- Partial Display Control ---------//
LCD_Write_COM16_DATA16(0x0500, 0x0000);//Partial Image 1 Display Position
LCD_Write_COM16_DATA16(0x0501, 0x0000); //Partial Image 1 RAM Start/End Address
LCD_Write_COM16_DATA16(0x0502, 0x0000); //Partial Image 1 RAM Start/End Address
LCD_Write_COM16_DATA16(0x00503, 0x0000); //Partial Image 2 Display Position
LCD_Write_COM16_DATA16(0x00504, 0x0000);//Partial Image 2 RAM Start/End Address
LCD_Write_COM16_DATA16(0x00505, 0x0000); //Partial Image 2 RAM Start/End Address

//-------------- Panel Control -------------------//
LCD_Write_COM16_DATA16(0x0010, 0x0010); //DIVI[1:0];RTNI[4:0]
LCD_Write_COM16_DATA16(0x0011, 0x0600); //NOWI[2:0];SDTI[2:0]
LCD_Write_COM16_DATA16(0x0020, 0x0002); //DIVE[1:0];RTNE[5:0]0110 0002
LCD_Write_COM16_DATA16(0x0007, 0x0173); // 262K color and display ON 
4.  замена  установки x y ....\libraries\UTFT\tft_drivers\ili9327_8
setxy.h
// ILI9326 
	LCD_Write_COM16_DATA16(0x0200,x1); // GRAM Address Set (Horizontal Address) (R0200h)
	LCD_Write_COM16_DATA16(0x0201,y1); // GRAM Address Set (Vertical Address) (R0201h)
	
	LCD_Write_COM16_DATA16(0x0210,x1);   // Window Horizontal RAM Address Start (R210h)
	LCD_Write_COM16_DATA16(0x0212,y1);   // Window Vertical RAM Address Start (R212h)
	LCD_Write_COM16_DATA16(0x0211,x2);   // Window Horziontal RAM Address End (R211h)
	LCD_Write_COM16_DATA16(0x0213,y2);   // Window Vertical RAM Address End (R213h)
	
	LCD_Write_COM16(0x0202); 

(зачем правда такая тавтология x1 y1 , мож в других инициализациях от неё можно избавиться? а то тест - 51сек )

В UTFT.cpp , в функции инициализации портов добавил ещё 

pinMode(A0,OUTPUT);
digitalWrite(A0, HIGH);

 

т.к. вывел вывод RD с дисплея, согласно шилду.  на RD надо подать лог.1, при передаче данных в экран. Если хотите что прочитать с дисплея, к примеру ID, то лог.0. В большинстве ардуиновских шилдов он не выводится на общий разъём, дабы не тратить пин, и на самом шилде он замкнут на 3,3в.

Вызывать скетч также как для зелёного шилда в UTFT2.77b :   Файл-Образцы-UTFT-Arduino(AVR)-UTFT_Demo_400x240    , по умолчанию там уже стоит UTFT myGLCD(31,A2,A1,A3,A4); .

Вот и заработало на зелёном шилде: 

 

Архив с найденными инициализациями ILI9326 по инету: https://yadi.sk/d/7YDCfi14ddJhC , с переделками их под UTFT 2.79, даташиты ili9326 и данный опыт - уже заточенная UTFT2.77c - если заменить на зелёном шилде  ili9327 на ili9326 (используемая IDE1.5.8).  

p.s. к StrangerM, ссылку подредактировал  (почему-то пробел в конце неё затисался)

StrangerM
Offline
Зарегистрирован: 02.11.2013

Ссылка не работает.

slider
Offline
Зарегистрирован: 17.06.2014

№4 

3,2"  400x240    R14037150   FPC8578A-V0   T320S04A-FPC-V1  ( HX8352  HX8352A ) 45pin ,  china phone

распиновка подошла от R61581 TFT LCD screen 320*480  45pin  , BTL353248-L472L  

(pinout нашел на aliexpress перебирая поиски  400x240 , 240x400 , 45pin . http://www.wayengineer.com/35-r61581-tft-lcd-screen-320480-super-bright-hd-45pin-p-7636.html#.VK4RLNKsU0E , тамже у них можно много распиновок подсмотреть)

по нулевому адресу вычитывается 0x52 , что характерно для HX8352A (пины DB0-DB17 для 16бит используются DB0-15, для 8бит - DB0-DB7 , замечу что у других контроллеров бывает совершенно по другому используются пины DB0-DB17в разных режимах)

При проверке на UTFT получилась инверсия цветов tft lcd - синус рисуется на белом фоне вместо черного , (видимо  поляризационная плёнка повёрнута), решил изучив даташит HX8352A, выключил  бит INVON в 0x01 регистре . (в initlcd.h поправил   

LCD_Write_COM(0x01);  
LCD_Write_DATA(0x02);  //  было DATA(0x06);

Потом исправил неправильную цветопередачу, устанавливается выводами IM0-IM3 (цветность 65К 262K +  битность шины контроллера) . Для 16 бит сразу неудалось бодиться правильной цветопередачи, поэтому переключил на 8бит для своего  устройства, для этого подавал на IM0,IM1,IM2  соответственно лог. 0,0,1 . На RD лог 0. Далее питание, подсветка, шина данных и управляющие вывода res, wr, dc(rs), cs . остальные нетрогаются.

 

Шлейф не быстро тяп-ляп паябелен - но оказывается аккуратно возможно,   раъемов на шаг 0,3mm 45pin не нашлось ( FH26-45S-0.3SHW ). :

Выводы управления кидал на ближайшие цифровые пины ардуино, в UTFT 2.79 получилась строчка инициализазии myGLCD(8,9,10,8,11); , и пришлось ещё в UTFT.cpp подправить (т.к. для HX8352A нет там 8 битного режима)

byte	dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 8, SERIAL_5PIN, SERIAL_5PIN, .....

, было byte dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 16, SERIAL_5PIN, SERIAL_5PIN,

Вот такой вот тонкий девайс получился - 8мм , и если б ещё не большой кварц на arduino mini pro,...но купился на большой стабилизатор LM1117 5v , типа он может работать до 15в, не как обычный маленький до 12в. :

Ну и конечная цель - даталоггер для АКБ в солнечной электростанции: (чтобы быстро на глаз оценить  поднималось ли напр. до 14,4в-14,7в, и не опускалось ли оно ниже 12,5в -12,2в. Верхний график 1пиксель=1секунде. На втором и третьем графиках в виде вертикальных линий - минимумы и максимумы за определённое время. Система хоть и 24вольтовая, но изображение 12в для удобства восприятия. питание 24в через DC-DC LM2596 -> 7.5в , аналог вход 24в через делитель и подстроечник)

// удалось ещё увеличить скорость в UTFT закоментировав строки в setxy.h

case HX8352A:
 //  	LCD_Write_COM_DATA(0x02,x1>>8); //
	LCD_Write_COM_DATA(0x03,x1);	
//  	LCD_Write_COM_DATA(0x04,x2>>8); //
	LCD_Write_COM_DATA(0x05,x2);
	
	LCD_Write_COM_DATA(0x06,y1>>8);
	LCD_Write_COM_DATA(0x07,y1);
 //  	LCD_Write_COM_DATA(0x08,y2>>8); //
//   	LCD_Write_COM_DATA(0x09,y2);    //
	LCD_Write_COM(0x22);      
	break;

Так дисплейчик очень понравился - максимальные углы обзора, без нарушения градаций яркости цветов. Очень яркий и красочный. 

slider
Offline
Зарегистрирован: 17.06.2014

№5  (продолжу по дисплеям с таким разрешением, хотя уже разобрался и с несколькими 320x240)

3,2"  400x240   FPC8722    FPC8722A-V2-A    ( HX8352B ) 47pin ,  Fly E151

инет находит ещё аналогии: дисплей Fly E171 E134

много времени потратил на его распознание, (амеры в TRULY говорят: обращайтесь к своему дистрибьютору; китайцы говорят: сначала купите у нас такие дисплеи , только тогда мы скажем что у них внутри за контроллер и распиновка, - это условие завода, информацию продавцы могут предоставить только по тем дисплеям, которые у них есть на продаже).  Короче, методом научного тыка вычитывалось по нулевому адресу id display 0x67 0x65 (шина данных до 18 бит)

с таким подобным названием контроллеров небывает. Помогло перечитывание  подобных даташитов. Оказывается не всегда id соответствует названию:

id 0x52 - HX8352A    max 480x240

id 0x65 - HX8352B    max 432x240

id 0x72 - HX8352C    max 432x240

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

hx8352b initial code :

void HX8352B_Init_CMO32_MPU (F3204)(void)
{
   RST=0;
   delay(20);
   RST=1;
   delay(20); 

        //HX8352B FOR CMO3.2(Pd032MNML-0403)
	
    //V03----2011.6.7/PengWu
	//1ЎўРЮёД E2-EF јДґжЖч
	//2ЎўјхµНVCOMHµзС№Ј¬јхµ­Й«°Я
    
	WriteLCDCmd(0xE2, 0x15);      //VREFsetting 
	WriteLCDCmd(0xE5, 0x18);     
	WriteLCDCmd(0xE7, 0x18);     
	WriteLCDCmd(0xE8, 0x40);     
	WriteLCDCmd(0xEC, 0x09);     
	WriteLCDCmd(0xED, 0x06);     
	WriteLCDCmd(0xEE, 0x20);     
	WriteLCDCmd(0xEF, 0x50);     
	WriteLCDCmd(0x29, 0x01);   
	WriteLCDCmd(0x2B, 0x03); 
	WriteLCDCmd(0x2E, 0x85); 
	 
	 
	// Power on Setting 
	WriteLCDCmd(0x23, 0x75);     //0x79  
	WriteLCDCmd(0x24, 0x50);  // 0x50  јУЙо¶Ф±И¶И
	WriteLCDCmd(0x25, 0x71);     
	WriteLCDCmd(0x1B, 0x1E);    //VREG1 = 4.5V 
	WriteLCDCmd(0x01, 0x00);     
	WriteLCDCmd(0x1C, 0x04);     
	 
	// Power on sequence
	WriteLCDCmd(0x18, 0xdd);  // 
	WriteLCDCmd(0x19, 0x01);       
	delay(5);   
	WriteLCDCmd(0x1F, 0x8C);     
	WriteLCDCmd(0x1F, 0x84);     
	delay(10); 
	WriteLCDCmd(0x1F, 0x94);     
	delay(10); 
	WriteLCDCmd(0x1F, 0xD4);   
	delay(5); 
	 
	// Gamma Setting   
	WriteLCDCmd(0x40, 0x08);         
	WriteLCDCmd(0x41, 0x31);   
	WriteLCDCmd(0x42, 0x2F);   
	WriteLCDCmd(0x43, 0x3E);   
	WriteLCDCmd(0x44, 0x3D);   
	WriteLCDCmd(0x45, 0x3F);   
	WriteLCDCmd(0x46, 0x2F);   
	WriteLCDCmd(0x47, 0x79);   
	WriteLCDCmd(0x48, 0x08);   
	WriteLCDCmd(0x49, 0x06);   
	WriteLCDCmd(0x4A, 0x08);   
	WriteLCDCmd(0x4B, 0x0E); 
	WriteLCDCmd(0x4C, 0x17);   
	 
	                                                                           
	WriteLCDCmd(0x50, 0x00);   
	WriteLCDCmd(0x51, 0x02);   
	WriteLCDCmd(0x52, 0x01);   
	WriteLCDCmd(0x53, 0x10);   
	WriteLCDCmd(0x54, 0x0E);   
	WriteLCDCmd(0x55, 0x37);   
	WriteLCDCmd(0x56, 0x06);   
	WriteLCDCmd(0x57, 0x50);   
	WriteLCDCmd(0x58, 0x08);   
	WriteLCDCmd(0x59, 0x11);   
	WriteLCDCmd(0x5A, 0x17);   
	WriteLCDCmd(0x5B, 0x19);   
	WriteLCDCmd(0x5C, 0x17);   
	WriteLCDCmd(0x5D, 0xFF);   
	 	 
	// Display ON Setting 
	WriteLCDCmd(0x60, 0x00); //FMARK 18ЈєOPEN
	WriteLCDCmd(0x16,0x0b);
	WriteLCDCmd(0x17, 0x05);         
	WriteLCDCmd(0x36, 0x00);       
	WriteLCDCmd(0x28, 0x20);       
	delay(40); 
	WriteLCDCmd(0x28, 0x38);       
	delay(40);                                  // Waiting 2 frames al least 
	WriteLCDCmd(0x28, 0x3C);  //
	//vcom_debug(1);

  
}

void BlockWrite(unsigned Xstart,unsigned Xend,unsigned Ystart,unsigned Yend)
  {
  	comm_out(0x02);data_out(Xstart>>8); 
	comm_out(0x03);data_out(Xstart);  //Column Start 
	comm_out(0x04);data_out(Xend>>8); 
	comm_out(0x05);data_out(Xend);  //Column End 
 
	comm_out(0x06);data_out(Ystart>>8); 
	comm_out(0x07);data_out(Ystart);  //Row Start 
	comm_out(0x08);data_out(Yend>>8); 
	comm_out(0x09);data_out(Yend);  //Row End

 	comm_out(0x80);data_out(Xstart>>8); 
	comm_out(0x81);data_out(Xstart);  //Column Start 
   	comm_out(0x82);data_out(Ystart>>8); 
	comm_out(0x83);data_out(Ystart);  //Row Start 

	comm_out(0x22); 
}
 void HX8352B_INTO_STB_MPU (void)
{
// Display Off
comm_out(0x24);data_out(0x3C);
comm_out(0x24);data_out(0x38);
delay (40); //Waiting 2 frames at least.
comm_out(0x24);data_out(0x20);
// Power Off
comm_out(0x1F);data_out(0x94); //VCOMG=0
delay(10);
comm_out(0x1F);data_out(0x84); //PON=0
delay(10);
comm_out(0x1F);data_out(0x8C); //DK=1
// Into STB mode
comm_out(0x1F);data_out(0x8D); //STB=1
delay(10);
// Stop Oscillation
comm_out(0x19);data_out(0x00); //OSC_EN=0
}

void HX8352B_EXIT_STB_MPU (void)
{
// Start Oscillation
comm_out(0x19);data_out(0x01); //OSC_EN=1
delay(10);
// Exit STB mode
comm_out(0x1F);data_out(0x8C); //STB=0
// Power on sequence
comm_out(0x19);data_out(0x01);
delay(5);
comm_out(0x1F);data_out(0x8C);
comm_out(0x1F);data_out(0x84);
delay(10);
comm_out(0x1F);data_out(0x94);
delay(10);
comm_out(0x1F);data_out(0xD4);
delay(5);
// Display ON Setting
comm_out(0x16);data_out(0x09);
comm_out(0x28);data_out(0x20);
comm_out(0x28);data_out(0x38);
delay(40); // Waiting 2 frames al least
comm_out(0x28);data_out(0x3C);
}

Распиновка нашлась в схеме на телефон (так что если брендовый телефон, ищите схемы ... schematic  ... service manual):

DNC_SCL - это RS (DC)

IFSEL0 - никуда не подключать, он сам немного притянут к земле. По умолчанию в контроллере  при 16ти используются DB17-10 и DB8-1 , в 8ми используются старшие DB17-10  (как и в большинстве контроллеров при переключении на 8 бит используются старшие биты, что также и сделано в UTFT, что не надо перепаивать провода при переключении режимов).  Если же подать лог.1 то в 16ти битном режиме  из DB17-0  будут использоваться DB15-0 , в 8ми битном режиме младшие DB7-0 ).   В любых случаях неиспользуемые  DB в z-состоянии.  

BS0-2 - установка режима, соответственно: 010-16бит, 110-8бит

другие управляющие вывода просто не трогал:

 

A4,A5 оставил на случай подключения I2C микросхемы времени

Углы обзора по горизонтали у него не ахти.

Вот переделка UTFT 2.79  https://yadi.sk/d/JxBCuJ70e8SUF  (в memorysaver оставлен только HX8352A , в UTFT заменена битность с 16 на 8      byte dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 8,.... , драйвер HX8352A  заменен на HX8352B и закоментировано в нем лишнее, в примере для UNO UTFT_Demo_400x240 заменена строчка инициализации на UTFT myGLCD(8,A0,A1,A2,A3);    ).

 

slider
Offline
Зарегистрирован: 17.06.2014

№6   ( удалось подключить от fly e185, аналогичен e151 , только распиновка другая )

3,2"  400x240  TFT8K6653     TFT8K6653FPC-A1-E   ( HX8352B ) 46pin ,  Fly E185

инет находит ещё похожее: ELD03210030F  ELD03210060F  TFT8K3373  TFT8K3373FPC-A1-E  дисплей Fly E190 

DCX - это RS

8,9,32-35 никуда не подключал.

IM2-0 соответственно 010-16бит , 110-8бит

Шаг пинов меньше чем у E151, и на подсветке стоит 4 светодиода , а не 5 как у Е151. (и заметил странность при опытах, на выход с дисплея TE подал лог.1 , так дисплей ярче стал показывать)

kortium
Offline
Зарегистрирован: 23.01.2015

у тебя не было проблемы с дисплеями от сотиков когда все пашет, но иногда 1-2 пикселя рисуются не там где положено и со временем на экране собираются левые точки, которые висят пока их не очистишь принудительно? 

slider
Offline
Зарегистрирован: 17.06.2014

были битые пиксели (зеленая полоска из нескольких штук) -  светятся сразу после инициализации, естественно не убираются ничем.

По твоему описанию похоже где-то косяк: 

1. в проводах(длинные провода, наводки, паразитная ёмкость - следы флюса, резисторы попробовать уменьшить до 10к или ещё меньше),

2. в пульсациях питания, или какойто вывод питания не был запитан (запитывался через входа, но потом всё равно давал сбои, пока на + не повесил)

3. в быстрой скорости вывода (попробовать задержки поставить на управляющие сигналы. Было что на шлейфе стояли кондёры паралленьно некоторым управляющим сигналам, так через резисторы 20К фронты и спады импульсов они затягивали, снёс со шлейфа эти кондёры - всё заработало)

4. в почти использованной оперативе (свыше 89% по подсчётам IDE 1.5.8) , у меня было. что видимо подгружались ещё буквы библиотеки UTFT, что вызывало неучтённое переполнение оперативы, её наслоение саму на себя, в итоге график не там где надо, или его вообще отсутствие, приходилось урезать массивы и оптимизировать их, от каких-то  отказываться, после чего программа стала выполняться корректно.

5. где-то всё же  программа лишние вырисовывает, особенно если работаешь с прерываниями. (Было из прерывания иногда не вылазиет (прерывание в прерывании), т.к. иногда аномально долго рисует в нём линию из пары пикселей библиотеки UTFT, заметил это по аномальным длительным  вспыхиваниям светодиодов повешанных параллельно управляющим сигналам на дисплей, - они не успевали потухнуть до следующего прерывания) Либо искать косяк в UTFT, убирать всё неиспользуемое. либо делать на основе библиотек от производителей шилдов, заменив только инициализацию и рисование пикселя под свой дисплей. Замечал это что им надо меньшее количество обращений  к регистрам, чем UTFT. В UTFT иногда при добавлении нового дисплея, приходилось добавлять ещё записи в несколько регистров в setxy.h (иначе рисует криво, со смещением и с пропусками), когда библиотеки от производителя без этого излишества обходятся - что значительно увеличивает скорость прорисовки.   

kortium
Offline
Зарегистрирован: 23.01.2015

задержки уже вставлял куда можно не помогает, на ссд1289 с таким сталкивался, задержки помогали, а тут никак. При непрерывном обновлении раз в несколько минут по пикселю вылазит левому. Экран вот такой http://www.aliexpress.com/item/3-2-TFT-Color-Screen-Module-320-x480-LCD-Screen-Support-For-Mega2560-1PCS/32262376109.html

 

forfrends
Offline
Зарегистрирован: 24.02.2015

Добрый день!

Можете мне помочь? Есть дисплей от принтера Кенон, если не ошибаюсь МХ240. Но я не знаю как его подключить, и не имею понятия какой там контроллер. Пробовал писать в сервисный центр кенон, с просьбой дать хоть какую-то инфу по дисплею, но в ответе отказали.

Надписи на шлейфе:

055

7381

C8DC31MCABB

AH2BF6964C98

Всего 22 контакта. Могу только с уверенностью сказать что 1 контакт идет на землю. Фото выложу чуть позже, так как пишу с телефона. 

KT3012
Offline
Зарегистрирован: 24.02.2015

Доброго времени суток! Cлучайно не знаете, какой контроллер в дисплее, на шлейфе которого написано DW666 (DW666BFG)?

PhOSTU
Offline
Зарегистрирован: 20.06.2014

Может Вы имели ввиду WD666BFG??? Поиск выдал: 

LCD for China-Sony Ericsson X10 Cell Phone, (44 pin, (92*52)) #FPC-S95588-AAA-1 V01/WD666BFG/R14532036/R14532034C/FPC-YE3601A3-A/FPC-XY036WQ01

и

Куплю LCD дисплей на тел. CRTEL Xperia X10 WiFi Маркировка:WD666BFG. Или аналог:FPC-S95588-AAA-1 или TFT025-FPC-B или RX-35-HX-025 или TFT8K3456FPC-A1-E или R14532036.

Ищите инфу про аналоги. Думаю контроллеры в них одинаковые

KT3012
Offline
Зарегистрирован: 24.02.2015

Все нормально, там 100% ILI9327, вычитал его ID.

forfrends
Offline
Зарегистрирован: 24.02.2015

Всем привет!

Имеется Дисплей от китайского телефона A7100, 4".
Надпись на шлейфе: hifay 15-12396-0794-1
Надпись на дисплее:
13-24081-0794-1
QZ2305BB 2013 4 12
Помогите определить что за контроллер стоит на дисплее и какая распиновка.

slider
Offline
Зарегистрирован: 17.06.2014

forfrends,  

1. берешь мультиметр и прозваниваешь где у тебя на дисплее "-" (часто замыкается с экраном шлейфа, с многими кондёрами) и "+" обычно широкие дорожки

2. рисуешь примерную распиновку, вначале шлейфа  у тебя (по фоткам "-",LEDA,K1-K8)  светодиоды  , потом 16 бит данных, затем шина управления .

3. набираешь в гугле типа   lcd screen 39 pin   , lcd tft 39 pin , 39  lcd screen ,  переходишь на вкладки картинки , и подбираешь похожую распиновку. или открываешь все ссылки подряд и смотришь, иногда на алиэкспресс приводят распиновки и типы контроллеров. чего сложного то? 

4. подключаешь к меге через резисторы 10ком, вычитываешь по нулевому адресу какой у тебя контроллер, или тупо подбираешь инициализации UTFT от 1 до  31 (для версии 2.79 и если комментировал какие контроллеры, раскоментируй)

5. вуаля, пользуешь рабочий большой диссплей для своего проекта. Пишешь сюда для народа найденную распиновку и контроллер.

 

PS вот ещё сайтец хороший, где много распиновок, документаций, кодов инициализаций можно подсмотреть http://www.wayengineer.com/

помогает ещё на таобао по найденному названию на шлейфе, просматривать картинки и названия чтоб найти ещё аналогов.

 

 

forfrends
Offline
Зарегистрирован: 24.02.2015

slider, спасибо за очень хорошую инструкцию! Буду пробовать, только это будет очень не скоро. Вычитывать регистр программой из 1-го поста? Попробую в ней разобраться. Надеюсь что-то получится! Как только будут результаты - сразу выложу суда отчет + фото :)

slider
Offline
Зарегистрирован: 17.06.2014

№7

3,0"  320x240  TFT8K1304     8K1304 KFM529B21 529B21   ( ILI9320 ) 37pin tft lcd 

подсветка 4 светодиода . Распиновка  на фото  ,  шлейфы у дисплеев немного разные , но распиновка таже, на одном имеется тачскрин. 

как обычно зарисовываем схему шлейфа, чтоб найти его возможности и аналогии с распиновками:

Распиновка 1-37pin [DB0-3,GND,VCC,CS,RS,WR,RD,nc,XR,YD,XL,YU,A,K1-4,nc,DB4-15,RESET,VCC,VCC,GND,DB5-7]

Опытным путём проверено, на левом чтоб переключить на 8 бит надо закоротить j1 . На правом переставить перемычку с R1 на R2 .

Вот такой шилд получился:

тачскин подключен напрямую ибо его сопротивление около 300 ом. Питание от ардуиновских +3,3в , и чтоб ардуиновские лог1 5в не пересилили его через 10ком резисторы(т.к. дисплей очень мизерно потребляет), то питание зашунтировано стабилитроном +3,3в. Подсветка от +5в через токоограничивающий резистор. Разъем D8-D13.. немного изогнут, чтоб влазить в ардуинку.

Использована старая библиотека UTFT 2.77 (в новых уже убрали поддержку ILI9320 из-за финансовых несогласий)

Тачскриновскую можно взять от adafruit  https://yadi.sk/d/JblWoo7biBW6N , там есть 2 примера тача, координаты кидаются в монитор последовательного порта .  Вот с их сайта на 07.2015 библиотеки которые могут пригодиться https://yadi.sk/d/WmKaB8maiCURv демо рисовалка поддерживает контроллеры ILI9325 ILI9328 HX8347G ILI9341 HX8357D , и ещё сообщает ID контроллера  в монитор последовательного порта, так что ей можно определять что у вас за контроллер в дисплее.

Написал библиотеку понятную для себя, делов то , вертикаль и горизонталь, то на одну линию на концы подать 0 и 1 ,  у второй портом подтянуть внутренним высокомным резистором  и считать уровень напряжения , если оно по прежнему подтянуто к 5в -  значит нажатия нет, если меньше в правильных пределах - то нажатие есть.  и для второй координаты также. 

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

То для точности пробывал (правда снижает скорость программы) , замерять к примеру 20 раз в массив, во втором массиве пересчитывается , сколько каждое измерение раз встречается - потом ищется макслимальная встречаемость - верить ей. Да , точность колоссальная. Но всё равно без задержки перед появивщемся нажатии, через 0,1 сек дожатии , это даст ошибку.  Так что более простое и умеренно точное определение будет - отслеживать нажатие, появилось, подождать 50-100мс чтобы палец дожал, потом и определять. если не отпущено после измерения, то измерениям - верить как достоверным!

IceHardy
Offline
Зарегистрирован: 01.10.2012

Приветствую!

Мне достался вот такой дисплей 

3,5" TFT Touch 69.03A23.T01

Был снят с неисправного принтера HP M425, разрешение предположительно 400х320

Разъем 50 контактный, первые 6 контактов похоже на подсветку и тач.

Вместе с дисплеем еще была плата с контроллером тач кнопок CY8C20546A-24PVXI, из этой платы шел на основной контроллер уже 26 контактный шлейф.

С чего начать, как разобраться с дисплеем?

Из контроллеров имеется только ардуина 2560

Мануал я кажется нашел :)

http://www.display-solution.com/pdf/tft-displays/AUO/AUO_A035QN05V1_2011...

slider
Offline
Зарегистрирован: 17.06.2014

если у A035QN02 V3  54пина и он RGB "Interfaces: parallel RGB 18-bit" ( там тупо мультиплексор, без видео ОЗУ (интегрированная видеокарта - выражаясь языком компьютерщика)  ) , то что говорить о вашем похожем в 50 пинов. Такие почти никто и не приспособил (разве что под черно-белое маленькое), слишком много надо видеопамяти и ресурсов для всей цветности. Можете посмотреть в сторону чипа SSD1963 , ну или не тратить этот дисплей время.

 Для "правильных" дисплеев характерно много рассыпухи на шлейфах. Фотки выше. 

IceHardy
Offline
Зарегистрирован: 01.10.2012

Мне дисплей пригодился бы как монитор консоли 3D принтера.

Он должен слушать последовательный порт и выводить текущую информацию. Ну и передавать в принтер тоже.

Готовые решения есть, но не дешево, и интересно самому попробовать сделать :)

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Добавлю, чтоб было, продублирую в нескольких темах.

Наткнулся при поиске на китайский ресурс, облачный диск человека, тогрующего дисплейными модулями на Таобао.

Там куча информации по дисплеям, библиотеки под разные контроллеры, в том числе большинство под Arduino, примеры, даташиты, схемы, фото распиновок и т.д.

kortium
Offline
Зарегистрирован: 23.01.2015

а адресом на таобао чела не поделишься?

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

ХЗ, наткнулся случайно, брел по этому пути, какая то из ссылок привела на нужный мне ресурс:

http://www.mcufriend.com/

http://www.mcufriend.com/download.htm

https://shop33501813.world.taobao.com/category-450786554.htm?spm=a312a.7...

 

forfrends
Offline
Зарегистрирован: 24.02.2015

slider, дай, пожалуйста более четкую распиновку из поста 28:

3,0"  320x240  TFT8K1304     8K1304 KFM529B21 529B21   ( ILI9320 ) 37pin tft lcd, а то не очень видно что там на бумаге...

slider
Offline
Зарегистрирован: 17.06.2014

forfrends пишет:

slider, дай, пожалуйста более четкую распиновку из поста 28:

3,0"  320x240  TFT8K1304     8K1304 KFM529B21 529B21   ( ILI9320 ) 37pin tft lcd, а то не очень видно что там на бумаге...

этот сайт очень урезает размер и соответственно качество фото.  Я ж под фоткой там написал

1-37pin [DB0-3,GND,VCC,CS,RS,WR,RD,nc,XR,YD,XL,YU,A,K1-4,nc,DB4-15,RESET,VCC,VCC,GND,DB5-7]

это поочереди с 1 пина по 37. nc значит no connect (неподключается, неиспользуется). Это одна из стандартных распиновок для 37контактных дисплеев.

 

vennn3
Offline
Зарегистрирован: 24.08.2015

Уважаемый SLIDER! имеется дисплей марки с39363-a474 , 10 выводов идут на плату телефона , DECT телефон SIEMENS. (это конечно, не такие сложные дисплеи, с которыми Вы разбираетесь) , просьба помочь с подключением к Ардуино (распиновка разъема, библиотека). Если Вас это, конечно, не затруднит. В интернете никакой информации не нашел. Или подскажите алгоритм работы с неизвестным дисплеем, полагаю, это заинтересует форумчан. Заранее благодарен

 

slider
Offline
Зарегистрирован: 17.06.2014

дисплея такого нет у меня. Совет закиньте его. Есть цветные изученные дисплеи от сименс и нокиа, последних в магазинах полно и дёшевы они (~100руб), еще у знакомых своих поспрашайте всяко валяются сломанные без дела. их за нефиг дело подключить.  достаточно поискать в инете arduino nokia , arduino siemens .

vennn3
Offline
Зарегистрирован: 24.08.2015

Благодарю,за совет, но поковыряюсь самостоятельно)) если что получится, отпишусь

slider
Offline
Зарегистрирован: 17.06.2014
№8  
320x240  BTL322432-L564L дисплей Fly E145TV,  Fly Q236 HX8352C  3,2" tft lcd  37pin 5led
в инете встречал ещё совместно такие маркировки дисплеев от этих сотовых ( хотя картинки могли просто копировать и не соответствовать )
XYL63013-0B, M403A588, M3P112A594, FPC-FTM300D23Z, BXPPE30003, XYL63050, FPC2134A-V1 
 
Распиновка непохожа на обычные 37пин (отсутствует выводы тача и др.), сначала подобрал по методикам выше. 
вычиталось по 0 адресу ID 0x72 , с такими цифрами в названии ненашлось походящих контроллеров. И только при перешаривании многих возможных даташитов , нашел что это  HX8352C . 
Потом и нашел распиновку от применяемого телефона Fly E145TV ,  Fly Q236:
 
 
Подключал дисплей так:
 1           
 2    +3.3в 
 3    +3.3в 
 4   CS
 5   RS
 6   WR
 7   +3.3в  (RD)
 8   RESET
 9
10  
11  
12
13
14
15
16
17 D0 
18 D1
19 D2
20 D3
21 D4
22 D5
23 D6
24 D7
25 gnd
26
27 
28 +3.3в
29
30 gnd
31 gnd
32 gnd
33 gnd
34 gnd
35
36 через резистор 30 ом к +5в
37 gnd
 
 
инициализация от HX8352A не подошла. от HX8352В - мельчешит и коряво отображается изображение. Перерыв инет была найдена от HX8352C   HX8352C_GPIO.c от компании SEGGER 
 
// HX8352C-GPIO-emWin/src/HX8352C_GPIO.c 
// https://github.com/baoshi/HX8352C-GPIO-emWin/blob/master/src/HX8352C_GPIO.c

/**
  ******************************************************************************
  * @file    HX8352C_GPIO.c
  * @author  Baoshi
  * @version 0.2
  * @date    8-Dec-2013
  * @brief   GPIO 16-bit interface for HX8352C LCD controller
  ******************************************************************************
  * @copyright
  * This code is licensed under (CC BY-SA 3.0), available at:
  *
  *     http://creativecommons.org/licenses/by-sa/3.0/
  *
  * THIS SOFTWARE IS PROVIDED 'AS-IS', WITHOUT ANY EXPRESS OR IMPLIED
  * WARRANTY.  IN NO EVENT WILL THE AUTHORS BE HELD LIABLE FOR ANY DAMAGES
  * ARISING FROM THE USE OF THIS SOFTWARE.
  *
  * @note   The idea behind GPIO LCD interface and ARM assembly implementation
  *         is originated by Andy Brown and his excellent stm32plus library.
  *         Please visit Andy's Workshop at: http://andybrown.me.uk/ \n
  *         Please note I have no intention to prompt my work by using Andy's
  *         name and stm32plus library.
  ******************************************************************************
  */

#include <stddef.h>
#include <stm32f10x.h>
#include "HX8352C.h"


/*===========================================================================*/
/* Defines                                                                   */
/*===========================================================================*/


// LCD 16-bit data bus  GPIOB
// Reset                GPIOC.4
// RS                   GPIOC.5
// WR                   GPIOC.6
// RD                   GPIOC.7
// CS                   Wired to GND

/** \brief GPIOx_BASE of the port connected to LCD data bus. Must be constant for correct timing. */
const uint32_t LCD_Data_GPIOx_BASE = GPIOB_BASE;
/** \brief GPIOx_BASE of the port connected to LCD control lines. Must be constant for correct timing. */
const uint32_t LCD_Ctrl_GPIOx_BASE = GPIOC_BASE;
/** \brief GPIO_Pin_x of the LCD Reset pin. */
const uint16_t LCD_RST_Pin         = GPIO_Pin_4;
/** \brief GPIO_Pin_x of the LCD RS pin. Must be constant for correct timing. */
const uint16_t LCD_RS_Pin          = GPIO_Pin_5;
/** \brief GPIO_Pin_x of the LCD Reset pin. Must be constant for correct timing. */
const uint16_t LCD_WR_Pin          = GPIO_Pin_6;
/** \brief GPIO_Pin_x of the LCD Reset pin. Must be constant for correct timing. */
const uint16_t LCD_RD_Pin          = GPIO_Pin_7;


/*===========================================================================*/
/* Static Functions                                                          */
/*===========================================================================*/


// An external delay_ms() function is needed. We pluck it from emWin
extern void  GUI_Delay(int Period);
#define _DelayMS GUI_Delay


/**
 * @brief   Configure GPIO port
 */
static void _ConfigPort(void)
{
    GPIO_InitTypeDef gpioInit;

    // Enable GPIO clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
    // Turn on the clock for the alternate function register (must be done before disable JTAG)
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    // Disable JTAG interface to free up PB3 and PB4
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

    // TFT Back Light
    //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    //GPIO_Init(GPIOB, &GPIO_InitStructure);

    // Control lines
    gpioInit.GPIO_Pin = LCD_RST_Pin | LCD_RS_Pin | LCD_WR_Pin | LCD_RD_Pin;
    gpioInit.GPIO_Mode = GPIO_Mode_Out_PP;
    gpioInit.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, &gpioInit);

    // Data bus
    gpioInit.GPIO_Speed = GPIO_Speed_10MHz;
    gpioInit.GPIO_Mode = GPIO_Mode_Out_PP;
    gpioInit.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
                                | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_Init((GPIO_TypeDef *)LCD_Data_GPIOx_BASE, &gpioInit);

    // Initialize control bits
    //GPIO_SetBits(GPIOB, GPIO_Pin_0 );    // Back LIGHT
    GPIO_SetBits((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, LCD_RST_Pin);   // RST = 1
    GPIO_SetBits((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, LCD_RD_Pin);    // RD = 1
    GPIO_SetBits((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, LCD_WR_Pin);    // WR = 1
}


/*===========================================================================*/
/* Public Functions                                                          */
/*===========================================================================*/


/**
 * @brief   Reset LCD Controller
 */
void lcdReset(void)
{
    GPIO_ResetBits((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, LCD_RST_Pin); // Pull RESET low
    _DelayMS(1); // 10us is enough
    GPIO_SetBits((GPIO_TypeDef *)LCD_Ctrl_GPIOx_BASE, LCD_RST_Pin); // RESET high
    _DelayMS(120); // Long enough reset during STB Out mode
}


/**
 * @brief   Initialize GPIO ports and LCD controller
 */
void lcdInit(void)
{
    // Configure ports, etc
    _ConfigPort();
    // Pulse LCD RESET
    lcdReset();
    // Begin HX8352C initialization sequence
    // Power Voltage Setting
    lcdWriteReg(0x001A); lcdWriteData(0x0004); // BT[2:0]=100, VCL=-VCI; VGH=VCI+2DDVDH; VGL=-2DDVDH
    lcdWriteReg(0x001B); lcdWriteData(0x008C); // VCIRE=1; VRH[4:0]=0Ch, VREG1=(2.5v*1.9)=4.75V
    // VCOM offset
    lcdWriteReg(0x0023); lcdWriteData(0x0000); // SELVCM=0, R24h and R25h selects VCOM
    lcdWriteReg(0x0024); lcdWriteData(0x0040); // VCM[6:0]=1000000, VCOMH voltage=VREG1*0.748 (originally 5F)
    lcdWriteReg(0x0025); lcdWriteData(0x000F); // VDV[4:0]=01111, VCOMH amplitude=VREG*1.00
    lcdWriteReg(0x002D); lcdWriteData(0x0006); // NOW[2:0]=110, Gate output non-overlap period = 6 clocks
    GUI_Delay(20);
    // Power on Setting
    lcdWriteReg(0x0018); lcdWriteData(0x0007); // RADJ[3:0]=0111, Display frame rate 60Hz
    lcdWriteReg(0x0019); lcdWriteData(0x0001); // OSC_EN=1, start OSC
    lcdWriteReg(0x001C); lcdWriteData(0x0006); // AP[2:0]=110, High OPAMP current (default 011)
    lcdWriteReg(0x0001); lcdWriteData(0x0000); // DSTB=0, out deep sleep
    lcdWriteReg(0x001F); lcdWriteData(0x0088); // STB=0
    GUI_Delay(5);
    lcdWriteReg(0x001F); lcdWriteData(0x0080); // DK=0
    GUI_Delay(5);
    lcdWriteReg(0x001F); lcdWriteData(0x0090); // PON=1
    GUI_Delay(5);
    lcdWriteReg(0x001F); lcdWriteData(0x00D0); // VCOMG=1
    GUI_Delay(5);
    lcdWriteReg(0x0017); lcdWriteData(0x0005); // IFPF[2:0]=101, 16-bit/pixel
    // Panel Configuration
    lcdWriteReg(0x0036); lcdWriteData(0x0011); // REV_PANEL=1, SM_PANEL=1, GS_PANEL=1, SS_PANEL=1
    //lcdWriteReg(0x0029); lcdWriteData(0x0031); // NL[5:0]=110001, 400 lines
    //lcdWriteReg(0x0071); lcdWriteData(0x001A); // RTN0
    //Gamma 2.2 Setting
    lcdWriteReg(0x0040); lcdWriteData(0x0000);
    lcdWriteReg(0x0041); lcdWriteData(0x0045);
    lcdWriteReg(0x0042); lcdWriteData(0x0045);
    lcdWriteReg(0x0043); lcdWriteData(0x0004);
    lcdWriteReg(0x0044); lcdWriteData(0x0000);
    lcdWriteReg(0x0045); lcdWriteData(0x0008);
    lcdWriteReg(0x0046); lcdWriteData(0x0023);
    lcdWriteReg(0x0047); lcdWriteData(0x0023);
    lcdWriteReg(0x0048); lcdWriteData(0x0077);
    lcdWriteReg(0x0049); lcdWriteData(0x0040);
    lcdWriteReg(0x004A); lcdWriteData(0x0004);
    lcdWriteReg(0x004B); lcdWriteData(0x0000);
    lcdWriteReg(0x004C); lcdWriteData(0x0088);
    lcdWriteReg(0x004D); lcdWriteData(0x0088);
    lcdWriteReg(0x004E); lcdWriteData(0x0088);
}


/**
 * @brief   Execute LCD power on sequence and turn on backlight
 */
void lcdOn(void)
{
    lcdWriteReg(0x0028); lcdWriteData(0x0038); //GON=1; DTE=1; D[1:0]=10
    _DelayMS(40);
    lcdWriteReg(0x0028); lcdWriteData(0x003C); //GON=1; DTE=1; D[1:0]=11
    // TODO: Turn on backlight
}


/**
 * @brief   Execute LCD power off sequence and turn off backlight
 */
void lcdOff(void)
{
    // TODO: Turn off backlight
    lcdWriteReg(0x0028); lcdWriteData(0x0038); //GON=1; DTE=1; D[1:0]=10
    _DelayMS(40);
    lcdWriteReg(0x0028); lcdWriteData(0x0030); //GON=1; DTE=1; D[1:0]=00
}

 

 
она подошла. но картинка была сдвинута в сторону . зеркальна и перевернута. 
Пришлось изучать pdf .
зеркальность и перевернутось удалось победить. Есть основной регистр направлений чтений видеопамяти   R 16h  Memory access control register  , находится в pdf еще по словам mirror , horizontal order
потом даже обошлось без него через R 36h Panel characteristic control register . Если в одном регистре можно задать к примеру зеркалирование, и в другом его тож задать, то в сумме ничего не изменится.
 
UTFT_Demo_320x240
 
UTFT_Demo_400x240
 
 По поводу сдвига картинки (не путать со scroll), задавал конечные пиксели 319 вместо 399 (431) , задействовал бит PLTON , + сдвиг физических пинов на 80(50h) в R 0Ah...R 0Dh , так и не получилось регистрами сдвинуть вывод изображения. Добавление в setxy.h   y1=y1+80 , который помог при ili9327 сдвинуть картинку, здесь не помог. Осталось обойти это последним хитрым способом , добавление в скетч, во все функции рисования координатаX+80    ( к примеру myGLCD.print("START", 10+80, 10 );  )    . Видимо этот косяк возник или из-за неправильного развода дорожек матрицы, или из-за замены кристалла на не похожий по распиновке.  В итоге получилась такая инициализация HX8352C  initlcd.h :
 
case HX8352A:

     // HX8352C initialization 

    // Power Voltage Setting
    LCD_Write_COM_DATA(0x1A,0x04); // BT[2:0]=100, VCL=-VCI; VGH=VCI+2DDVDH; VGL=-2DDVDH
    LCD_Write_COM_DATA(0x1B,0x8C); // VCIRE=1; VRH[4:0]=0Ch, VREG1=(2.5v*1.9)=4.75V
    // VCOM offset
    LCD_Write_COM_DATA(0x23,0x00); // SELVCM=0, R24h and R25h selects VCOM
    LCD_Write_COM_DATA(0x24,0x40); // VCM[6:0]=1000000, VCOMH voltage=VREG1*0.748 (originally 5F)
    LCD_Write_COM_DATA(0x25,0x0F); // VDV[4:0]=01111, VCOMH amplitude=VREG*1.00
    LCD_Write_COM_DATA(0x2D,0x06); // NOW[2:0]=110, Gate output non-overlap period = 6 clocks
    delay(20);
    // Power on Setting
                                          // попробуем избежать добавление в скетч +80 для сдвига картинки для 
                                          /*
                                           LCD_Write_COM_DATA(0x0B,0x50);  // R0Ah-R0Bh Partial area start 
                                           LCD_Write_COM_DATA(0x03,0x50);  // так на всяк случай
                                           LCD_Write_COM_DATA(0x01,0x01);   // PLTON
                                            // безтолку
                                         */ 

     //   LCD_Write_COM_DATA(0x16,0b00000000); // MY,MX,MV,ML(239or431) , BGR,000  // чтобы перевернуть верх и низ, и еще отзеркалить, надо 0b01000000 , ML=1 почемуто не позволил с комбинциями переворачиваний и зеркал , сдвинуть экран с 400 к 320

    LCD_Write_COM_DATA(0x18,0x07); // RADJ[3:0]=0111=0x07, Display frame rate 60Hz   
    LCD_Write_COM_DATA(0x19,0x01); // OSC_EN=1, start OSC
    LCD_Write_COM_DATA(0x1C,0x06); // AP[2:0]=110, High OPAMP current (default 011)
    LCD_Write_COM_DATA(0x01,0x00); // DSTB=0, out deep sleep
    LCD_Write_COM_DATA(0x1F,0x88); // STB=0
    delay(5);
    LCD_Write_COM_DATA(0x1F,0x80); // DK=0
    delay(5);
    LCD_Write_COM_DATA(0x1F,0x90); // PON=1
    delay(5);
    LCD_Write_COM_DATA(0x1F,0xD0); // VCOMG=1
    delay(5);
    LCD_Write_COM_DATA(0x17,0x05); // IFPF[2:0]=101, 16-bit/pixel

    // Panel Configuration

                          // безтолку
                         /*
                          LCD_Write_COM_DATA(0x02,0x50); // +80пикс
                   LCD_Write_COM_DATA(0x03,0x00); 
                          LCD_Write_COM_DATA(0x04,0x00); //
                 LCD_Write_COM_DATA(0x05,0xEF); //
                  LCD_Write_COM_DATA(0x80,0x00);
                           LCD_Write_COM_DATA(0x81,0x50);   //+80пикс
                           LCD_Write_COM_DATA(0x82,0x01);  //
                           LCD_Write_COM_DATA(0x83,0xAF);  //
                         */

    LCD_Write_COM_DATA(0x36,0b00001001); //   REV_PANEL=1, SM_PANEL=1, GS_PANEL=1, SS_PANEL=1   
// хотя  было 0x11 , поставил 0b00001001  SM_PANEL=1-перевернул  и отзеркалил , SS_PANEL=1-сделал правильную цветопередачу

    LCD_Write_COM_DATA(0x29,0x27); // NL[5:0]=110001, было 400 lines (399=110001xxx=0x31)  // тогда 320 линий это 319-> 100111xxx =0x27 
// смена с 400 линий на 320 почемуто не позволило с комбинциями переворачиваний и зеркал , сдвинуть экран с 400 к 320

//  LCD_Write_COM_DATA(0x2A,0x0F); // типа задание старта сканирования, но с ним и с активацией в других регистрах - нифига

    //LCD_Write_COM_DATA(0x71,0x1A); // RTN0     Frame control register
    //Gamma 2.2 Setting
    LCD_Write_COM_DATA(0x40,0x00);
    LCD_Write_COM_DATA(0x41,0x45);
    LCD_Write_COM_DATA(0x42,0x45);
    LCD_Write_COM_DATA(0x43,0x04);
    LCD_Write_COM_DATA(0x44,0x00);
    LCD_Write_COM_DATA(0x45,0x08);
    LCD_Write_COM_DATA(0x46,0x23);
    LCD_Write_COM_DATA(0x47,0x23);
    LCD_Write_COM_DATA(0x48,0x77);
    LCD_Write_COM_DATA(0x49,0x40);
    LCD_Write_COM_DATA(0x4A,0x04);
    LCD_Write_COM_DATA(0x4B,0x00);
    LCD_Write_COM_DATA(0x4C,0x88);
    LCD_Write_COM_DATA(0x4D,0x88);
    LCD_Write_COM_DATA(0x4E,0x88);

    LCD_Write_COM_DATA(0x28,0x38); //GON=1; DTE=1; D[1:0]=10
    delay(40);
    LCD_Write_COM_DATA(0x28,0x3C); //GON=1; DTE=1; D[1:0]=11
    // TODO: Turn on backlight

LCD_Write_COM(0x22);
break;

 

 
Возможно надо ещё настраивать по даташиту коэффициенты в регистрах напряжений матрицы // Power Voltage Setting  для питания от +3,3в . но не делал, кому интересно можете разобраться. Взял как есть, и так работает.
 
т.к. точек по вертикали 240 , то адресация влазиет в 1 младший байт (0...254), в итоге получилось закомментить пересылку в старший байт в setxy.h , что ускорило тест UTFT  
 
case HX8352A:         
// подменен на 320x240 HX8352C                 
                                                 // работает без этого:
                                                 // закомент ускоряет тест 8bit HX8352C   UTFT c 48,8сек до 41,9сек
                                                  // LCD_Write_COM_DATA(0x02,x1>>8); //
LCD_Write_COM_DATA(0x03,x1); 
                                                   // LCD_Write_COM_DATA(0x04,x2>>8); //
LCD_Write_COM_DATA(0x05,x2);      

LCD_Write_COM_DATA(0x06,y1>>8);
LCD_Write_COM_DATA(0x07,y1);
                                                  //  LCD_Write_COM_DATA(0x08,y2>>8); //
                                                  //  LCD_Write_COM_DATA(0x09,y2);    //

LCD_Write_COM(0x22);      
break;

 

можно ещё покопаться в самой библиотеке, для ускорения (убирается лишнее и заменяются команды на более быстрые, но больших скоростей не потребовалось от устройства)
  Вот архив для HX8352C с переделанной UTFT 2.79   (HX8352A подменен на 320x240 HX8352C  )
  
 
п.с. Вот такое  устройство помошник получилось , для проверки с  полсотни накопившихся  АКБ
 
 
 
 
8ми канальный измеритель емкости АКБ (7/12ач 12в) . Для управления мосфетов (размножение выводов arduino pro mini) используется параллельный регистр 74HC573 параллельно шине данных на дисплей . операционник для усиления звуков на динамик. DC-DC на 7,5в чтоб ардуиновский стабилизатор 5в не грелся. Возможно было и открывать низковольтные мосфеты от +5в, но на случай увеличения разрядных токов (выше 0,3А) применил выход в мосфеты открытым коллектором с 20к резисторами на +12в. Мосфеты включают нагрузку стабилизированного тока C/20  (0,35А/0,6А) на LM317 .
По снятым графикам можно увидеть 
1. подсульфатированные АКБ (с поверхностным зарядом из-за прошлого слабого зарядного тока ), которым пару КТЦ вернет емкость (график пологий с переломом посередине), 
2.Нормальные (пологий) 
3.с плохой банкой (пологий и резко вниз) //на этой фотке его нет
Aleksei175
Offline
Зарегистрирован: 22.12.2015

 

она подошла. но картинка была сдвинута в сторону . зеркальна и перевернута. 
Пришлось изучать pdf .
зеркальность и перевернутось удалось победить. Есть основной регистр направлений чтений видеопамяти   R 16h  Memory access control register  , находится в pdf еще по словам mirror , horizontal order
потом даже обошлось без него через R 36h Panel characteristic control register . Если в одном регистре можно задать к примеру зеркалирование, и в другом его тож задать, то в сумме ничего не изменится.
 
UTFT_Demo_320x240
 
UTFT_Demo_400x240
 
 По поводу сдвига картинки (не путать со scroll), задавал конечные пиксели 319 вместо 399 (431) , задействовал бит PLTON , + сдвиг физических пинов на 80(50h) в R 0Ah...R 0Dh , так и не получилось регистрами сдвинуть вывод изображения. Добавление в setxy.h   y1=y1+80 , который помог при ili9327 сдвинуть картинку, здесь не помог. Осталось обойти это последним хитрым способом , добавление в скетч, во все функции рисования координатаX+80    ( к примеру myGLCD.print("START", 10+80, 10 );  )    . Видимо этот косяк возник или из-за неправильного развода дорожек матрицы, или из-за замены кристалла на не похожий по распиновке.  В итоге получилась такая инициализация HX8352C  initlcd.h :
 
 
 

Обьясни пожалуйста человеку далекому от програмирования. У меня такая же история со сдвигом картинки, дисплей TFT_320qvt_9341 Arduino Mega 2560 (китай). У себя в примерах строку myGLCD.print("START", ) я не нашел. Куда мне ее вписать ?  Спасибо.

 

slider
Offline
Зарегистрирован: 17.06.2014

Aleksei175 пишет:

Обьясни пожалуйста человеку далекому от програмирования. У меня такая же история со сдвигом картинки, дисплей TFT_320qvt_9341 Arduino Mega 2560 (китай). У себя в примерах строку myGLCD.print("START", ) я не нашел. Куда мне ее вписать ?  Спасибо.

Это же просто строка из скетча. На примере так сказать. Что проще оказалось в скетче везде подобавлять(подписать) к координатам Х    +80 . Это решение универсальное, ну и для попавшегося контроллера и матрицы дисплея. В других случаях проще помагало просто немного изменить инициализацию , не исправляя весь скетч. Для этого надо вам изучить PDF к контроллеру, и посмотреть какие регистры ответственны за сдвиг картинки.

 Чтоб не загаживать тему, и т.к. здесь отсутствует личка, можете, написать на емайл  segun . яндekc.ру . Раз у вас есть тема http://arduino.ru/forum/apparatnye-voprosy/tekst-na-tft320qvt-vverkh-nogami то можно уже в неё, по умолчанию оповещение приходит всем ответившим. Собственно можете и не заморачиваться, а отписаться в ней как получилось с простым сдвигом +80, в вашем примере.

slider
Offline
Зарегистрирован: 17.06.2014

.

forfrends
Offline
Зарегистрирован: 24.02.2015
Добрый день!
Помогите с определением дисплея. Какая у него распиновка и чип. Дисплей с китайского Samsung S5, примерно 3".
Надпись на дисплее:
BL-39Q127A0-A
YSD?0018VB дальше надпись не читаема
Всего 24 пина. примерная распиновка:
1 - Led
2 - Led
3 - Gnd
4-5 - +(?)
6-19 - ?
20 - Gnd
21-24 - татч
 
Интернет у меня просто ужасный. Из-за погоды уже неделю его почти нет. Пишу с телефона. Потому сам найти инфу не смог - мобильный трафик не позволяет. Надеюсь на вашу помощь.

slider
Offline
Зарегистрирован: 17.06.2014

прочитайте внимательно тему, я приводил методы поиска. можно было ещё прозвонить какие кондёры имеют разветвлённые дорожки и выходят на разъем, значит там "+" . и на каких сайтах много распиновок. 

даже просто погуглив " TFT LCD 24 pin " можно найти похожую на вашу расниговку 

1、LED-
2、LED+(3.3V)
3、VSS
4、VCC
5、VDD
6、NC
7、CS
8、RESET
9、DC
10、WR
11、RD
12、DB17
13、DB16
14、DB15
15、DB14
16、DB13
17、DB12
18、DB11
19、DB10
20、VSS
21、NC
22、NC
23、NC
24、NC
VDD&VCC接3.3V

db17...db10 это соответственно в вашем случае db7...db0 (просто у разных контроллерах поразному используются 18бит при переводе в 8бит). А может быть даже на распиновке не db17...d10 а очередность  db0...db7

http://kupinatao.com/pages/item_detail.aspx?ItemId=yh9jr/gbDNeTPtR8HOa/Ew==&Nick=%E6%B7%B1%E5%9C%B3%E5%AE%89%E9%91%AB

неговоря ещё про другие сайты указанные выше, на которых много распиновок и докумментации на них.

Как узнать какой контроллер:

- либо погуглить похожий, посмотреть фотки.

- либо подрубить можете даже к UNO , установив в библиотеке UTFT везде 8 битность, и закомментировав отключение возможных контроллеров (оставить SSD1963, ... ибо все иниты не влезут в память UNO ), и тупо перебрать от 0 до 31 инициализаации.

- либо подключить к UNO как адафруитский шилд, к примеру 2.4"(на али и этом сайте много фоток-распиновок этих шилдов) , залить тест графики , и в монитор порте глянуть какой он выдаст ID (в основном библиотека определяет по 0 адресу)

- либо залить читалку ID  в Мегу  , прочитать ей. ( Самая первая читалка немного корявая но работала, здесь последняя версия, но для 16 бит http://arduino.ru/forum/apparatnye-voprosy/35-tft-lcd-krasnyi-megovskii-mega-2560-r3-resheno-kak-reshit-drugie , в принципе для некоторых 8ми битных контроллеров годится, но чтоб для всех, надо её допиливать)

 

tolyan15
Offline
Зарегистрирован: 24.01.2016

Здравствуйте!
Подскажите пожалуйста, как подключить к ардуино уно дисплей от телефона самсунг gt-e1100
В сервис мануале нашел такую схему на коннектор.
В ардуино еще новичок, ногами не пинайте:-)
Нарисуйте схемку подключения, если не трудно и какую библиотеку и скетч использовать.

Я думаю информация поможет не только мне, а и другим начинающим ардуинщикам. Дисплей очень распространенный.

Donate
Offline
Зарегистрирован: 04.02.2016

Ты не пробовал запитывать подсветку? Работает? У меня чето нет. Такой же дисплей, тоже от HP M425

slider
Offline
Зарегистрирован: 17.06.2014

tolyan15 пишет:

Здравствуйте!
Подскажите пожалуйста, как подключить к ардуино уно дисплей от телефона самсунг gt-e1100 ....

Если в инете нет информации , то почему бы не сделать её самому. Потратить время , разобраться и выложить.  Поищите ещё здесь Дисплеи от сотиков http://vrtp.ru/index.php?showtopic=1120  

Donate пишет:

Ты не пробовал запитывать подсветку? Работает? У меня чето нет. Такой же дисплей, тоже от HP M425

Такой же какой?! (значение уже неимеет) у дисплеев бывает светодиоды подключены не параллельно , а последовательно , тогда можно запитывать большим напряжением, с ограничительным резистором подобранным на ток 10-20 мА . Также применял  преобразователи со старых тлф (сименс, самсунг,...), они сразу поддерживают нужный ток, повышая для этого напряжение.  Попробуйте подключить 15-20в (к примеру от зарядки ноутбучной) через резистор 1..10ком . Замеренное падение напряжения на подсветке / 3в и будет равно количеству светодиодов. 

Lelick
Offline
Зарегистрирован: 07.02.2016

Добрый день! у меня есть экранчик от Sony Ericsson k750i и Arduino UNO только что пришло MEGA328P-PU...

Вот данные экранчика с стороннего сайта

Sony Ericsson K750 display

Lcd chip : R61500 (PXC3107 / LGDP4521) green flex or R61503B yellow flex (PCX3100 / LGDP4522) based on HD66789R Renesas made
Code: RNH94229 R2C / RNH94229 R4A
Resolution: 176x220 TFT 262k colors
 Pin1: reset
 Pin2: gnd
 Pin3: Vdig
 Pin4: cs
 Pin5: rs
 Pin6: wr
 Pin7: rd
 Pin8: d0
 Pin9: d1
 Pin10: d2
 Pin11: d3
 Pin12: d4
 Pin13: d4
 Pin14: d6
 Pin15: d7
 Pin16: gnd
 Pin17: lcd_id
 Pin18: Fsync 
 Pin19: led+
 Pin20: led-

R61500 - вот на него даташит если я правильно нашел ))

R61503 - это по моему даташит на экранчик от SE k530i если я не ошибаюсь если кому надо

Как мне все это хозяйство подключить запустить, подскажите пожалуйста... 

 

forfrends
Offline
Зарегистрирован: 24.02.2015

slider  а вы можете адаптировать программу по определения ID контроллера дисплея для ARDUINO DUE?

Под рукой есть Мега и ДУЕ. С ДУЕ было бы удобнее - там 3.3 вольта, не нужно городить делители. Можно конечно и Мегу использовать - но у меня просто нет столько резисторов одинакового номинала :( Живу в селе и в радимагазине бываю очень редко... Потому адаптация программы под ДУЕ спасла бы, но я в этом не понимаю...

При попытке прошить ДУЕ выдает ошибку:

Test_tft.ino: In function 'void draw()':
Test_tft:31: error: 'PORTA' was not declared in this scope
Test_tft:31: error: 'PORTC' was not declared in this scope
Test_tft:37: error: 'DDRA' was not declared in this scope
Test_tft:37: error: 'DDRC' was not declared in this scope
'PORTA' was not declared in this scope