Re: Юзаем дисплеи от сотовых и других потаскунчиков.
Добавлено: Вс апр 27, 2014 22:05:08
И всё таки - какие есть монохромные дисплеи от Nokia размером побольше чем те же 1100 3310?
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Все равно не хочет запускаться…Mrshilov писал(а):Попробуйте S6D04D1, как в Samsung-S5230 - разрешение то же.
http://rusfolder.com/40593911
Судя по табличке в правом углу схемы, это выбор режима интерфейса Sharp или LG. Может имеется ввиду два варианта контроллеров.wss60 писал(а):Еще не понятно назначение входа IF_MODE?
Тоже игрался с ним год назад, так ничего и не получилось. Думал, раз есть схема, то проблем с определением контроллера не будет. Пробовал команды с десятка различных контроллеров с разрешением от 240х400 до 320х480, ничего. Не помню, сравнивал ли я размеры контроллера с даташитами. Дошло до того, что перебирал все значения для команд, при двух значениях (уже не помню каких) он включался с мусором, но эти команды ни в одном, известном мне даташите, не использовались. Надеюсь у вас получится разобраться.wss60 писал(а):Мучаю дисплей от LG KP500 ...
Другие дисплеи не жаловались, да и скорость пока что минимальна.Chettuser писал(а):Лапша у разъёма не длинновата?
При чтении с IF-0 одни данные при IF-1 другие кроме нулевой ячейки – там всегда 0x000A...wss60 писал(а):Судя по табличке в правом углу схемы, это выбор режима интерфейса Sharp или LG. Может имеется ввиду два варианта контроллеров.
Может, какие нибудь исходники остались?"Chettuser писал(а):Тоже игрался с ним год назад
Это выбор размера шины данных 8 или 16 бит, видимо есть 2 типа дисплеев. В этом используется 8-битная шина, хотя на разъём выведены все 16 бит, если я правильно понял в нашем случае вывод IF_MODE=0.wss60 писал(а):Еще не понятно назначение входа IF_MODE?
+1Кислый писал(а):мб создадим КОТО-wiki с базой дисплеев, камер и пр ?

Код: Выделить всё
// with control lines all high except reset
DA_PORT_ODR =(uint8_t)(~RES);
// startup delay of 100ms
delay_ms(100);
// and rst high again
DA_PORT_ODR =(uint8_t)(0Xff);
/* ADC Select
Horizontal direction
0xA0 = SEG1->SEG132 (left to right)
0xA1 = SEG132->SEG1 (right to left) */
writeCommand(0xA1); // 0xA0 = SEG1->SEG132 (left to right)
/* SHL Select
Vertical direction
0xC0 = COM1->COM64 (top to bottom)
0xC8 = COM64->COM1 (bottom to top) */
writeCommand(0xC8); // 0xC0 = COM1->COM64
/* LCD bias select
Screen in use: Displaytech 64128E
Display duty ratio: 1/65
Display bias: 1/9
0xA2 = 1/5 or 1/6 or 1/7 bias
0xA3 = 1/6 or 1/8 or 1/9 bias
Note: at 1/6 bias use 0xA2 for 1/49 duty ratio
or 0xA3 for 1/33 duty ratio */
writeCommand(0xA2); // 0xA3 = 1/9 bias
/*Regulator resistor select
Sets the internal resistance ratio used in the internal voltage regulator
Refer to datasheet p.42
This works as a corse contrast control
0x20 = 1.9
0x21 = 2.19
0x22 = 2.55
0x23 = 3.02
0x24 = 3.61
0x25 = 4.35
0x26 = 5.29
0x27 = 6.48 */
writeCommand(0x20);
/*Set reference voltage register
Used as a fine contrast control
0x81 = Enter voltage register set mode
0x00 to 0x3F = 0 to 63 */
writeCommand(0x81); //0x81 = Enter voltage register set mode
writeCommand(0x10); //0x30 = Set ref voltage to 30
lcd_control(0x00); // <- This probably isn't required here - it's set below
/*Power control
Displaytech screen uses built-in power circuits
Switch on in order as specified in data sheet
wait 1ms between each command
1st - Voltage converter ON = 0x2C
2nd - Voltage regulator ON = 0x2E
3rd - Voltage follower ON = 0x2F */
writeCommand(0x2C); //0x2C = Voltage converter ON
delay_10us(100);
writeCommand(0x2E); //0x2E = Voltage regulator ON
delay_10us(100);
writeCommand(0x2F); //0x2F = Voltage follower ON
/*Initial display line
Specify DDRAM line for COM1
0x40 + display line */
writeCommand(0x40); //Set initial line to 0
/*Set page address
Sets the initial page address to write to
0xB0 + page address 0 to 8 */
writeCommand(0xB0); //Initial page set to 0
/*Set column address
Sets the initial column to write to
for LSB (b3-b0) 0x00 + first nibble
for MSB (b7-b4) 0x10 + second nibble
0x00 to 0x83 = column 0 to 131 */
writeCommand(0x00); //Sets LSB to 0
writeCommand(0x10); //Sets MSB to 0 - column is now set to 0
/*Reverse display
Selects either a normal display or a reverse display
0xA6 = normal
0xA7 = reverse */
writeCommand(0xA6); //Sets display to normal
/*Set static indicator
Sets up a static indicator on the display
See datasheet p.42
This is a 2 instruction cycle
0xAC = static indicator ON
0xAD = static indicator OFF
Next instruction to set indicator type:
0x00 = OFF
0x01 = ON - 1 second blinking
0x02 = ON - 0.5 second blinking
0x03 = ON - always ON */
writeCommand(0xAD); //Static indicator OFF
writeCommand(0x00); //OFF - 0.5 second blinking
/*Display ON/OFF
Switched the display to on or off
0xAE = Display OFF
0xAF = Display ON */
writeCommand(0xAF);