Ну что же вы так сразу... Slider дал хорошие ссылки - там все коротко и четко написано по таким дисплеям как у вас.
Вам действительно следовало почитать тему - вы не сможете использовать этот дисплей на ардуине, так как у него нет видеопамяти. Подробнее смотрите в постах выше, Slider писал о подобных дисплеях.
Ну почему нельзя просто сказать что ничего не получится, "вот вам ссылка там аналогичный рассматривали", почему сразу нужно упрекать в том что якобы не читаешь форум? Я прошелся по ссылкам и ненашел, ненашел Карл! своего дисплея. Ну если раздражают такие вопросы, ну не отвечай ты и все, ответят другие адекватные, спокойные люди. Нет бл.. нужно ответить и обязательно вые@нуться, типа вы тут все нубы, один я д'артаньян..
Потому Нельзя сказать что вообще не получиться - потому что это будет ложь. Получиться то получится, можно его прикрутить, не переживайте так. Почти никто, как и вы, не находит своего дисплея, дисплеев бесчисленное множество, делают в основном по аналогии и по даташитам. Но просто это надо брать и делать, как - вся инфа есть, тем более через гугл и яндекс. А ради спортивного интереса, а ну-ка метнитесь и сделайте всё за меня, это врят ли, и у кого найдется точь в точь такой же дисп.
для ардуин подключение диспов с RGB шиной, можно сделать, не парясь с микросхемами внешнего видео ОЗУ:
1. способ через дорогостоящий переходник или самому спаять (мало ли, пытливому уму не важно время) микросхемы ssd1963 не особо дорого стоят.
2. способ (не реализованный мной по причине отсутствия времени и интереса, так что дерзайте сами) - это прикрутить его как есть , типа как ардуинку подключают к телевизору. в качестве фреймбуфера используется внутреннее ОЗУ ардуины) Тогда разрешение по пикселям будет не очень, зато можете использовать всю площадь экрана. Может быть для вас это как раз важно, видеть большую инфу на большом экране.
//Хотелось бы чтобы эта тема жила, и не засиралась однотипными вопросами на каждой странице, а то есть подобные темы за сотню страниц и за 1000 сообщений, никто их уже не читает, все превращено в срач. Случайно или умышленно. Изучение затруднено, там уже каша. Цените пожалуйста что есть. у меня нет здесь модераторства, чтобы подчищать. Хотелось бы чтоб в этой теме народ, наоборот делился что уже победил нового. а изученного и так уже полно выложено в инете. И давайте прекратим писать не по теме, сохраним тему в чистоте и концентрировано в новых решенных диспах.
А вообще, мне кажется, придётся его расковырять, для получения большего количества инфы о нём
bankir_1986, шутник.
походу у гугла тоже вид сзади спрашивал, вот ничего и не нашел. и что там на разъеме невидать.
От фэйса тут толку мало будет, если вы с подобным не сталкивались.
Нужно чтобы bankir_1986 нарисовал примерную схему где он был , + - , конденсаторы керамические на каких пинах. либо это подобие 1602, либо графического (несколько керамич. кондеров тогда у разъема будут) . надо было вид спереди под углом, чтоб сегменты видать было , модель прибора от куда вытащен, можно ещё фотку платы где стоял.
....колупать - это я предложил, чтобы посмотреть куда тот шлейф идёт, распиновку конкретизировать, а то так можно ооочень долго экспериментировать с проводками, даже если там самый дефолтный (по контроллеру) 1602
Привет всем. Хотел бы попросить помощи или хотябы совета. Есть TFT-LCD на шлейфе LMS700KF05 с тач от XEROX Phaser 3635FP для использования в своём проекте. Плата управления CLX_8380_OPE_MAIN на CPU: Samsung S3C2413XL-26. Нужна эта плата, или LCD подключать без неё? Даташит на LMS700KF05 нашёл прилагаю фото распиновки и другие по теме вопроса. Не понял как тут фотки загрузить, поэтому дам ссылку.
На плате управления есть UART. Аппарат достался нерабочий, не включался. Пару дней назад подключил весь аппарат от другого БП, запустился. Аппарат этот по сути дела обычный комп, есть почти полноценная материнка, винчестер на 80Gb, линейка памяти и пр. А эта панель просто как монитор с клавой. Вот и хочу спросить как прикруттить это дело к Arduino, библиотек под него естественно нет. И подскажите знатоки, стоит ли связываться с этим девайсом?
Привет всем. Хотел бы попросить помощи или хотябы совета. Есть TFT-LCD на шлейфе LMS700KF05 с тач от XEROX Phaser 3635FP для использования в своём проекте. Плата управления CLX_8380_OPE_MAIN на CPU: Samsung S3C2413XL-26. Нужна эта плата, или LCD подключать без неё?
....
Не понял как тут фотки загрузить, поэтому дам ссылку.
.....
Вот и хочу спросить как прикруттить это дело к Arduino, библиотек под него естественно нет. И подскажите знатоки, стоит ли связываться с этим девайсом?
фотки прикрутить описано выше в форуме , отдельной темой , можно и поиском найти.
это дисп с RGB шиной. тем более распиновку вы какуюто нашли. если хотите , можете попробовать привязать без всяких переходников но выводя на него меньшее разрешение. черно-белое или м.б. 8ми битное (255 цветов) цветное. на подобие как в проекте с подключением к телевизору или монитору. вы будете первым кто это реализует и расскажет об этом.
сдублирую в эту тему, т.к. много там картинок(кликабельны) приложил:
если предположить: простенький дисплей с RGB шиной и 320х240 пикселей, то чтобы и всех оббежать надо:
для самой простоты при черно-белом изображении (все выводы RGB либо на+ либо на -)
1. 320х240=76800бит *50 раз в сек=3,84Мгц частота вывода инфы , что возможно.
2. 320х240=76800бит /8(бит в байте)=9Кбайт ОЗУ необходимых, которых ни у меги, тем более у уно нет. Так что мож проще достать дисплей уже с внутренним контроллером со своим ОЗУ(в смысле видеопамятью) , или приобрести отдельно SSD1963 board
,почемуто правда они ещё прилично стоят, видимо китайцы ещё не знают что на это может быть спрос, микросхемы SSD1963 то, относительно недорого стоят (200-250руб).
платы переходники на SSD1963 найдете много разных, купить можно погуглив SSD1363 board
как видите в инете их полно всяких разных. мне эти переходники не надо , но я и то нашел для вас. А кому реально надо , тот гораздо больше вариантов найдет.
Попробуйте для опыта подцепить напрямую к 3.3в ардуине или к 5в через резисторы (как ардуино вывод на TB)
а) объеденить пиксели , к примеру по 4 шт, тогда при разрешении 240x136 (бывшее 480х272) потребуется 4КБайта ОЗУ, у ардуиноМЕГИ - 8КБ, должно хватить.
б) Ну или, если выводить только цифры и текст (к примеру цифры , алфавит, значки - всего до 256разных), то каждому знакоместу(массиву) присвоить байт в выделенной "видеопамяти" , который и будет означать что контроллеру выводить в знакоместо.
О 7дюймовых спрашивали уже конечно. Но все же еще свой выложу. Имеется дисплейчик от навигаторов несколько штук с тач панелью. 40 пин 800x480. Адафруит контроллер смотрел но он стоит не реально дорого. Но хотелось бы по минимому вложиться в контроллер. В навигаторе стоит SIRF ATLAS V похоже напрямую к ниму подключается. Подозреваю что этот https://www.maritex.com.pl/product/attachment/42224/KWH070KQ13-F02-%202011.pdf datasheet соответствует этому lcd.
ValGor, подключать так же как и все предыдущие. берете и подключаете. прочитайте тему с начала - это как раз примеры с ходом мыслей , для случаев если их еще никто в инете не подключал.
тем более у вас и распиновка и схема есть что сильно облегчает задачу. Только вроде вы смотрели не на схему дисплейной платы, а схему шлейфа. посмотрите повнимательней.
Набрёл на эту тему некоторое время назад, когда искал информацию об интересующем меня дисплее. И, хотя готовых ответов для моего случая я здесь не нашел, считаю тему весьма полезной, и спасибо всем за информацию, которой вы делитесь!
Хочу добавить свои «5 копеек» и поделиться результатами, к которым я пришёл в процессе своих «изысканий». Надеюсь, кому-то это поможет сэкономить время.
Итак, валялась у меня принесённая кем-то, нерабочая DECT-труба Siemens Gigaset S67H, дисплей из которой было решено использовать для своего проекта.
Чуть более года назад в этой теме уже поднимался вопрос о таком дисплее, оставшийся без ответа (в вопросе вместо марки был ошибочно указан part number).
Поиски в сети какой-либо информации об этом приборе ни к чему не привели. Прозвонкой удалось определить выводы диодов подсветки и предположительные контакты земли и питания, но не более. Рискнул подать питание на контроллер дисплея и подсветку. При этом на подсветку подавал 5в, что было перебором, но прибор вынес издевательства.
Позже был достаточно длительный этап в попытке определить назначение сигнальных линий и тип шины (SPI или I2C) с помощью тупого перебора выводов и подачей на них различных сигналов. Сначала в соответствии с алгоритмами управления уже известными контроллерами похожих дисплеев, а потом и случайно генерируемых последовательностей. Понятно, что с учетом кучи неизвестных в этом уравнении, чуда не произошло - обезьянка не повторила «Войну и мир», беспорядочно стуча по клавишам. Хотя, периодически экран выдавал какие-то признаки жизни, что позволило сделать вывод о его работоспособности.
Далее я наткнулся в сети на объявление о продаже в моем городе точно такой же трубки, б/у. Списывать в убытки уже потраченное время не хотелось, да и вопрос об оживлении этого дисплея уже стал принципиальным. В общем, приобрел трубу и поснимал кучку дампов с помощью простенького логического анализатора на базе отладочной платы STM32F429I-DISCO.
После этого, наконец-то, наступила полная ясность с распиновкой:
1,6 - GND
2 - SDA (MOSI)
3 - SCK (CLK)
4,5 - VCC (3.3V)
7 - CS
8 - D/C
9 - LED K (GND)
10 - LED A (+)
Шина SPI. Все контакты дисплея подключал к сигнальным линиям Arduino а также к линиям GND и VCC (3.3V) напрямую.
Важно отметить, что на дисплей не выведены линии аппаратного сброса контроллера (RESET) и переключения режимов чтения/записи (R/W). Выяснилось также, что в случае наличия в команде параметров, они передаются контроллеру не в режиме передачи данных, а в том же режиме команд (линия D/C активна). В режиме передачи данных контроллер просто пишет в видеопамять.
А еще стало понятно, что ни одна система команд из тех datasheets, с которыми я ознакомился до сих пор, не подходит для этого дисплея. Факт отсутствия режима чтения информации из контроллера также не способствовал его однозначной идентификации.
Далее наступил этап уже более осмысленного ощупывания контроллера и поиска команд управления. В процессе листал datasheets на контроллеры марок SSD*, S1D1*, SED*, ILI*, ST*, SEPS*, HX* и каких-то еще. Некоторые команды таким образом были надерганы из различных источников, какие-то из них пришлось адаптировать. Другие были определены с помощью перебора, наблюдения и поиска закономерностей.
К чему все эти много букв… Вовсе не ради того, чтобы читателю показалось, как всё это сложно. Совсем наоборот. Всё, на самом деле, достаточно просто и понятно. Мне хотелось поделиться одним из возможных путей решения подобной задачки, которым шёл я. Может быть, кого-то это наведет на полезные мысли. По этой же причине я не стал удалять из кода, приведенного ниже, комментарии, появившиеся в процессе изучения контроллера.
Заранее предупреждаю, код не претендует на оптимальность и, тем более, изящество. Это просто рабочий инструмент…
/*
* Color LCD 128x160 LPH9413-1 (from Siemens Gigaset S67H) analysis
* using Arduino Pro Mini Chinese clone
*
* Work-in-Progress
*
* Copyright (c) /nik4ik, Dec, 2016 - Jan, 2017
*/
#include <stdint.h>
#define DISPLAY_MAX_COLUMNS 128
#define DISPLAY_MAX_ROWS 160
#define USE_HW_SPI 1
#define DC 9
#define DATA 11
#define CLK 13
#define CS 10
#define CS_PORT PORTB
#define CS_PORT_PIN 2
#define CLK_PORT PORTB
#define CLK_PORT_PIN 5
#define DATA_PORT PORTB
#define DATA_PORT_PIN 3
#define DC_PORT PORTB
#define DC_PORT_PIN 1
// Color definitions (BGR)
//
#define BLACK 0x0000 /* 0, 0, 0 */
#define NAVY 0x8000 /* 0, 0, 128 */
#define DARKGREEN 0x0400 /* 0, 128, 0 */
#define DARKCYAN 0x8400 /* 0, 128, 128 */
#define MAROON 0x0010 /* 128, 0, 0 */
#define PURPLE 0x8010 /* 128, 0, 128 */
#define OLIVE 0x0410 /* 128, 128, 0 */
#define LIGHTGREY 0xC618 /* 192, 192, 192 */
#define DARKGREY 0x8410 /* 128, 128, 128 */
#define BLUE 0xf800 /* 0, 0, 255 */
#define GREEN 0x07E0 /* 0, 255, 0 */
#define CYAN 0xffe0 /* 0, 255, 255 */
#define RED 0x001f /* 255, 0, 0 */
#define MAGENTA 0xF81F /* 255, 0, 255 */
#define YELLOW 0x07ff /* 255, 255, 0 */
#define WHITE 0xFFFF /* 255, 255, 255 */
#define ORANGE 0x053f /* 255, 165, 0 */
#define GREENYELLOW 0x2ff5 /* 173, 255, 47 */
#define PINK 0xF81F
#ifdef USE_HW_SPI
#include <SPI.h>
#endif
#define send_bit(_DATA, _BIT) \
asm volatile (\
" cbi %[data_port], %[data_pin]\n" \
" cbi %[clk_port], %[clk_pin]\n" \
" sbrc %[data], %[bit]\n" \
" sbi %[data_port], %[data_pin]\n" \
" sbi %[clk_port], %[clk_pin]\n" \
: \
: [data_port] "I" (_SFR_IO_ADDR(DATA_PORT)), \
[data_pin] "I" (DATA_PORT_PIN), \
[clk_port] "I" (_SFR_IO_ADDR(CLK_PORT)), \
[clk_pin] "I" (CLK_PORT_PIN), \
[data] "a" (_DATA), \
[bit] "I" (_BIT) \
)
// Set command mode
#define cm() \
asm("cbi %[dc_port], %[dc_pin]" : : \
[dc_port] "I" (_SFR_IO_ADDR(DC_PORT)), \
[dc_pin] "I" (DC_PORT_PIN));
// Set data mode
#define dm() \
asm("sbi %[dc_port], %[dc_pin]" : : \
[dc_port] "I" (_SFR_IO_ADDR(DC_PORT)), \
[dc_pin] "I" (DC_PORT_PIN));
// CS disable
#define csd() \
asm("sbi %[cs_port], %[cs_pin]" : : \
[cs_port] "I" (_SFR_IO_ADDR(CS_PORT)), \
[cs_pin] "I" (CS_PORT_PIN));
// CS enable
#define cse() \
asm("cbi %[cs_port], %[cs_pin]" : : \
[cs_port] "I" (_SFR_IO_ADDR(CS_PORT)), \
[cs_pin] "I" (CS_PORT_PIN));
// send byte
void sb(char data)
{
#ifdef USE_HW_SPI
SPI.transfer(data);
#else
// MSB
send_bit(data, 7);
send_bit(data, 6);
send_bit(data, 5);
send_bit(data, 4);
send_bit(data, 3);
send_bit(data, 2);
send_bit(data, 1);
send_bit(data, 0);
#endif
}
#define BGR(r, g, b) (((uint16_t) ((r) & 0xf8) >> 3) | ((uint16_t) ((g) & 0xfc) << 3) | ((uint16_t) ((b) & 0xf8) << 8))
typedef struct {
uint8_t x;
uint8_t y;
} point_t;
typedef struct {
uint8_t left;
uint8_t top;
uint8_t right;
uint8_t bottom;
} rect_t;
enum orientation_t {
PORTRAIT,
LANDSCAPE
};
uint8_t displayWidth = DISPLAY_MAX_COLUMNS;
uint8_t displayHeight = DISPLAY_MAX_ROWS;
orientation_t displayOrientation = PORTRAIT;
bool clipMode = false;
rect_t clipRegion = {
0, // left
0, // top
DISPLAY_MAX_COLUMNS, // right
DISPLAY_MAX_ROWS // bottom
};
void csUpDown(void) {
// Прошивка Siemens Gigaset S67H дергает этими линиями между порциями
// команд и перед записью данных. Возможно, неспроста.
// Решил пока тоже следовать такому поведению...
csd(); cse();
csd(); cse();
}
void defineClipRegion(uint8_t left, uint8_t top,
uint8_t right, uint8_t bottom) {
// sb(0xf5); // собственно, команда
// sb(120); // параметр
// задает начальное значение счетчика строк, к которому сбрасываются
// значения указателя строк при достижении конечной строки (см. ниже)
// sb(0xf7);
// sb(120);
// задает конечное значение счетчика строк, по достижении которого
// указатель строк сбрасывается к значению, устанавливаемому
// функцией 0xf5 (см выше)
// sb(0xf4);
// sb(10);
// устанавливает начальное значение счетчика колонок, к которому
// сбразывается текущее значение указателя колонок достижения последней
// колонки. Похоже, что указатель вывода данных тоже нужно двигать
// перед выводом.
// sb(0xf6);
// sb(10);
// устанавливает конечное значение счетчика колонок, по достижении
// которого счетчик сбрасывается к начальному ("нулевому") значению
cm();
csUpDown();
sb(displayOrientation == PORTRAIT ? 0xf4 : 0xf5);
sb(left);
sb(displayOrientation == PORTRAIT ? 0xf5 : 0xf4);
sb(top);
sb(displayOrientation == PORTRAIT ? 0xf6 : 0xf7);
sb(right);
sb(displayOrientation == PORTRAIT ? 0xf7 : 0xf6);
sb(bottom);
clipRegion.left = left;
clipRegion.top = top;
clipRegion.right = right;
clipRegion.bottom = bottom;
clipMode = true;
}
void undefineClipRegion(void) {
defineClipRegion(0, 0, displayWidth - 1, displayHeight - 1);
clipMode = false;
}
void gotoXY(uint8_t x, uint8_t y) {
uint8_t x_, y_;
x += clipMode ? clipRegion.left : 0;
y += clipMode ? clipRegion.top : 0;
if (displayOrientation == PORTRAIT) {
x_ = x;
y_ = y;
} else {
x_ = y;
y_ = x;
}
cm();
csUpDown();
// Set column pointer
sb(0x10 | (x_ >> 4)); // high 4 bits
sb(0x00 | (x_ & 0x0f)); // low 4 bits
csUpDown();
// Set row pointer
sb(0x70 | (y_ >> 4)); // high 4 bits
sb(0x60 | (y_ & 0x0f)); // low 4 bits
}
void displaySetContrast(uint8_t level) {
cm();
csUpDown();
sb(0x81); // set contrast level
sb(level); // (0 - 255)
}
// does this controller use these two funcs?..
//
/*
void displayContrastUp() {
cm();
csUpDown();
sb(0xd6);
}
void displayContrastDown() {
cm();
csUpDown();
sb(0xd7);
}
*/
void displayOn() {
cm();
csUpDown();
sb(0xaf); // Display On
}
void displayOff() {
cm();
csUpDown();
sb(0xae); // Display Off
}
void displaySetAllPoints(bool switchOn) {
cm();
csUpDown();
if (switchOn)
sb(0xa5); // All points on
else
sb(0xa4); // All points on disable (normal mode)
}
void resetDisplay() {
cm();
csUpDown();
sb(0xe2); // Software reset
delay(50);
}
void displayInit(orientation_t orientation) {
displayOrientation = orientation;
if (displayOrientation == PORTRAIT) {
displayWidth = DISPLAY_MAX_COLUMNS;
displayHeight = DISPLAY_MAX_ROWS;
} else {
displayWidth = DISPLAY_MAX_ROWS;
displayHeight = DISPLAY_MAX_COLUMNS;
}
cm();
csUpDown();
resetDisplay();
// sb(0x84); // хз, надо ли оно. В логе было...
if (displayOrientation == PORTRAIT) {
sb(0x89); // адресация построчно, сначала увеличивается номер столбца,
// в конце строки переходим к следующей строке
sb(0xc0); // normal mode
} else {
sb(0x8b); // адресация поколоночно: сначала увеличивается номер строки
// в конце столбца переходим к следующему столбцу
sb(0xc2); // flip vertical
}
sb(0xa6); // Normal (non inverse) mode (Inverse - 0xa7)
sb(0xd6); // ? из лога
sb(0xde); // ? из лога
}
// Не уверен, что функции связаны с режимом Standby, требуется проверка
//
/*
void displaySetStandbyMode(bool switchOn) {
cm();
csUpDown();
if (switchOn)
sb(0xac);
else
sb(0xad);
}
*/
void displaySetInverseMode(bool switchOn) {
cm();
csUpDown();
if (switchOn)
sb(0xa7); // Inverse
else
sb(0xa6); // Normal
}
void displaySetStartLine(uint8_t line) {
cm();
csUpDown();
sb(0x50 | (line >> 4)); // high 4 bits
sb(0x40 | (line & 0x0f)); // low 4 bits
}
// fills area with given color
// if no clipping region defined this will fill entire display
void fillRegion(uint16_t color) {
uint16_t i;
uint16_t x1, y1, x2, y2;
if (clipMode) {
x1 = clipRegion.left;
x2 = clipRegion.right;
y1 = clipRegion.top;
y2 = clipRegion.bottom;
} else { // Clear entire display area
x1 = 0;
x2 = displayWidth - 1;
y1 = 0;
y2 = displayHeight - 1;
}
gotoXY(0, 0);
dm();
csUpDown();
for (i = 0; i < ((x2 - x1 + 1) * (y2 - y1 + 1)); i++) {
sb((uint8_t) (color >> 8));
sb((uint8_t) color);
}
}
void putPixel(uint8_t x, uint8_t y, uint16_t color) {
gotoXY(x, y);
dm();
csUpDown();
sb((uint8_t) (color >> 8));
sb((uint8_t) color);
}
void drawHLine(uint8_t x1, uint8_t x2, uint8_t y, uint16_t color) {
defineClipRegion(x1, y, x2, y);
fillRegion(color);
}
void drawVLine(uint8_t x, uint8_t y1, uint8_t y2, uint16_t color) {
defineClipRegion(x, y1, x, y2);
fillRegion(color);
}
void setup () {
Serial.begin(9600);
Serial.println("");
Serial.println("LCD Test!");
randomSeed(analogRead(0));
pinMode(DC, OUTPUT);
#ifdef USE_HW_SPI
SPI.begin();
SPI.beginTransaction(SPISettings(16000000, MSBFIRST, SPI_MODE0));
#else
pinMode(DATA, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(CS, OUTPUT);
#endif
// дадим контроллеру немного времени чтобы очухался после подачи питания
delay(50);
}
void loop() {
int i;
unsigned long time;
int x1, y1, x2, y2;
uint16_t baseColors[] = {
BLACK, NAVY, DARKGREEN, DARKCYAN, MAROON, PURPLE, OLIVE, LIGHTGREY,
DARKGREY, BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE, ORANGE,
GREENYELLOW, PINK
};
displayOff();
displayInit(PORTRAIT);
// displayInit(LANDSCAPE);
displaySetContrast(144);
fillRegion(BLACK);
displayOn();
time = millis();
// random rectangles
for (i = 0; i < 100; i++) {
x1 = random(0, displayWidth - 10 - 1);
x2 = random(x1 + 10, displayWidth - 1);
y1 = random(0, displayHeight - 10 - 1);
y2 = random(y1 + 10, displayHeight - 1);
defineClipRegion(x1, y1, x2, y2);
fillRegion(baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]);
}
undefineClipRegion();
delay(1000);
fillRegion(BLACK);
// random pixels
for (i = 0; i < 5000; i++) {
x1 = random(0, displayWidth - 1);
y1 = random(0, displayHeight - 1);
putPixel(x1, y1,
baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]);
}
delay(1000);
fillRegion(BLACK);
// random horizontal/vertical lines
for (i = 0; i < 5000; i++) {
x1 = random(0, displayWidth - 1);
x2 = random(x1, displayWidth - 1);
y1 = random(0, displayHeight - 1);
y2 = random(y1, displayHeight - 1);
if (random(0, 2) == 1) {
drawHLine(x1, x2, y1,
baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]);
} else {
drawVLine(x1, y1, y2,
baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]);
}
}
undefineClipRegion();
delay(1000);
time = millis() - time;
Serial.print("Loop done in ");
Serial.print(time);
Serial.println(" millis");
// tests...
//
// 0x0x, 0x1x, 0x6x, 0x7x - used for memory address setting (see gotoXY)
//
// 0x4x, 0x5x - disp start line coordinates.
//
// 0x2x - can't see any noticeable effects
// 0x3x, 0x9x - the same shit
//
// sb(0xad);
// sb(0x8a); // после сброса экран заполняется мусором
// sb(0x8c); // ...
// sb(0x8e); // ...
// sb(0x88); // ...
//
// sb(0xc6); // rotate 180 (as c2 | c4)
// sb(0xc2); // flip vertical
// sb(0xc4); // flip horizontal
// sb(0x8f); // rotate 90
// sb(0xc2); // flip vertical
// sb(0x89); // нормальный портретный режим, слева направо
// sb(0x86); // ...
// sb(0x87); // ...
// sb(0x8b); // Landscape mode, 90 CCW, справа налево!
// sb(0x8d); // rotate 180, справа налево
// sb(0x8f); // Landscape mode, 90 CCW, слева направо!
// sb(0xa9);
// Что-то делает. В некоторых источниках эта команда
// задает параметры duty cycle
// 0x25, 0x26, 0x27
// последовательный вызов приводит к увеличению яркости подсветки?
// 0x28 тушит изображение...
// смысл и назначение неясны
// sb(0xf9);
// после вызова это команды следующие далее команды вывода на экран
// никакого видимого эффекта не производят
// возобновяется все при последующем вызове команды 0xf8
// смысл и назначение неясны
// Вызов команды 0x88 приводит к тому, что вывод выполняется с увеличением
// указателя колонки, но при достижении указателем колонки
// максимального значения, указатели колонки и строки автоматически
// не изменяются, и весь вывод выполняется в последнюю точку строки.
// Подумалось о режимах вывода Horizontal, Vertical & Page Mode
//
// 0xb9 - сандартный режим вывода
//
// Вызов команды 0x8a приводит к тому, что вывод выполняется с увеличением
// указателя строки (отрисовка столбца), а при достижении указателем строки
// максимального значения, указатели строки и колонки автоматически
// не изменяются, и весь вывод выполняется в последнюю точку колонки
//
// 0x8b - сначала меняется адрес строки, затем столбца
//
// 0x8c - ведет себя как 0x88 ?
//
// 0x8d - во время записи адрес колонки увеличивается, при достижении
// указателя колонки последнего значения адрес строки, вместо увеличения,
// уменьшается
//
// 0x8e - как 0x8a, но во время записи адрес строки уменьшается
//
// 0x8f - во время записи адрес строки уменьшается. При достижении
// минимального значения адреса строки, указатель строки получает максимально
// возможное значение, а указатель колонки увеличивается.
//
Serial.println("Done");
delay(2000);
}
Как видно, разведанных функций не особо много. Но мне, к примеру, их уже достаточно для того, чтобы перейти к следующему этапу использования этого дисплея. Возможно, кто-то пожелает добавить этот тип дисплея к одной из существующих библиотек и использовать готовые процедуры отрисовки примитивов и шрифтов. Мне же для моей задачи достаточно будет кода для работы с парой-тройкой типоразмеров шрифтов и вывода прямых линий.
В завершение хочу обратиться к тем, кто продвинется дальше в исследовании этого дисплея: пожалуйста, поделитесь своими наработками. Хотелось бы, в конце-концов, вычислить, что за контроллер использован в устройстве. Ну а может быть, я просто плохо искал, а это всё «велосипед», и кто-то сразу сможет назвать модель контроллера и ткнуть меня носом в datasheet?
Upd 09/01/2017, уточнены названия сигнальных линий.
с регистра 00 читается 0x9225 это контроллер ILI9225B .
из его даташита 8.2.24. Horizontal and Vertical RAM Address Position (R36h/R37h, R38h/R39h) ......................... 79
с регистров 0x36 0x38 считывается 0x00AF 0x00DB что значит разрешение 176 220 . //в других дисплеях в основном можно подобно подсматривать разрешение , и по другим адресам.
распиновка:
GND
ts
ts
ts
ts
GND
+VDD VCC
CS
CD (RS)
WR
RD
DB0
DB1
DB2
DB3
BD4
DB5
DB6
DB7
RESET
GND
A
A
A
K
библу на базе UTFT подготовил https://yadi.sk/d/eoa6HW_5rSyfE ( init code ili9225 ili9225b положил в папку C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\UTFT\tft_drivers\s6d0164 )
все что нужно, остается просто запустить пример UTFT\examples\Arduino (AVR)\UTFT_Demo_220x176
nik4ik , ну круто. боюсь спросить сколько на это "принципиально" времени ушло? что с распиновкой разобрались это больше полдела. Из скетча напрашивается , что он все же SPI ? тогда правильней обозвать пины mosi sck cs ... Для распознания можно было и дешевым анализатором на CY7C68013A пройтись , там вроде есть автоматическое распознавание протоколов.
SPI есть и удафруита и UTFT (4pin и 5pin) , все их иниты перепробовали? думаю 4pin UTFT как раз ваш вариант. в описании UTFT_Requirements.pdf указано подключение. Пример UTFT_Demo_160x128_Serial , там описано подключение // Usage: myGLCD(<model code>, SDA, SCL, CS, RST[, RS]);
можно и все другие примеры с *_Serial перебрать, там тоже есть варианты с 4пиновым подключением.
Хотя не мудрено что у сименса может быть свой редкий контроллер, на который и не найти даташит. Можете фотки еще прицепить к своему сообщению , что смогли вывести на этот дисп., что выводит ваш скетч. // У вашего сообщения есть для вас изменить : ( изменить , ответить, цитировать)
с регистров 0x51 0x53 считывается 0x00AF 0x00DB что значит (175 и 219 ) это разрешение 176x220 . //в других дисплеях в основном можно подобно подсматривать разрешение , и по другим адресам.
в режиме 16бит UTFT тест проходит за 36 секунд , в режиме 8бит - за 39 сек.
в либу на базе UTFT занес рабочий, отысканный в инете инит. Готово к пользованию: https://yadi.sk/d/eoa6HW_5rSyfE ( init code R61503 R61503U положил в папку C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\UTFT\tft_drivers\ili9325c )
все что нужно, остается просто запустить пример UTFT\examples\Arduino (AVR)\UTFT_Demo_220x176
надо только перекоментить в нем на так:
//UTFT myGLCD(S6D0164,38,39,40,41); // S6D0164 для ILI9225 Fly MC130
UTFT myGLCD(ILI9325C,38,39,40,41); // ILI9325C для R61503U Fly DS240 B700
nik4ik , ну круто. боюсь спросить сколько на это "принципиально" времени ушло? что с распиновкой разобрались это больше полдела.
Лучше я не буду подсчитывать общее время, дабы самому не испугаться :-) . Как минимум, все эти новогодние выходные, ну и в том году сколько-то выходных и вечеров. На самом деле, есть в наличии дисплей такого же разрешения, вполне себе известный и признаваемый существующими библиотеками. В данном случае я скорее удовлетворял свой интерес и любопытство, поэтому не считаю, что время потрачено совсем уж напрасно.
slider пишет:
Из скетча напрашивается , что он все же SPI ? тогда правильней обозвать пины mosi sck cs ... Для распознания можно было и дешевым анализатором на CY7C68013A пройтись , там вроде есть автоматическое распознавание протоколов.
Согласился. Тех, кто не полезет в скетч, названия могут смутить. Поправил. А анализатора и на отладочной хватило. Тем более, что она есть, а дополнительный собирать/покупать - это время и средства.
slider пишет:
SPI есть и удафруита и UTFT (4pin и 5pin) , все их иниты перепробовали?;
О, да. Перепробовал все варианты. Правда, это было еще тогда, когда перебирались выводы и протоколы. Но потом я еще пробегался глазами по заголовочным файлам из папки драйверов - подходящийх последовательностей не узрел.
А насчет фоток того, что выводит дисплей... Я не знаю даже, есть ли смысл. Сейчас, как я и писал, это лишь прямоугольники, линии да точки. Давайте так: как только я прикручу к нему шрифты или добавлю этот дисплей к той же Adafruit GFX (что тоже может статься) - обещаю обновить.
Добрый вечер есть дисплей HL-FPC040005B помогите разобраться с ним инфи по нем не нашёл имеет 39pin c подсветкой и тачем разобрался помогите с остальным .
Всем привет! Имеется Дисплей от Galaxy S3 GT I9300. Был упал и после падения при разблокировке не включалась подсветка, а так все отлично работает. Буду менять модуль а данных дисплей хочу поставить на Ардуино для вывода информации и управлением. Распиновка контактов:
Ruskat, если б прочли хотя бы пару первых страниц , то ззаметили б , что надо выводы DB0..DB7..DB16 . А здесь пары(как витые в компьютерной сети) - шина LVDS , или DSI , MIPI ,... (гуглить вместе с arduino) . Дисплеи такого высокого разрешения не могут иметь большой видеоконтроллер (видеокарту) на стекле по многим причинам. Обслуживанием графики большого разрешения и скорости занимается процессор на плате, как собственно и в компьютере, планшетниках,...
Подключить можно только через плату - переходник , выполняющую роль скалера (плата как в любом мониторе) + выдеокарты (видеопроцессор с видеопамятью) как в любом компьютере . Ссылки на на подобные проекты давал здесь ранее. Это очень затратное решение, но выполнимое.
Подпаял провода к экрану добавил резисторы4,7ком, но вот не пойму, к каким контактам ардуино их подключать, и не могли бы вы дать какой-нибудь скетч для пробы? возможно требуется какая то специальная библиотека для нокиа 1100? http://digitalchip.ru/podklyuchenie-displeya-ot-nokia-1100-chast-1
Назначение выводов экрана Nokia1100. Вид с обратной (задней) стороны.
Вывод CS на экране это что? SDA к А4, SCLK к А5. Не понял, куда цеплять CS, а RES к 10 пину ардуино, правильно?
Comondante , я б на вашем месте просто прошелся по нему либой UTFT , пример UTFT_Demo_160x128_Serial , перебирая иниты . (лог ваш пока не смотрел , можете сами в инете пошукать по разрешению 128x160 какие контроллеры применяются. на Али какие распространенные, в шилдах ардуиновских. Ранее приводил ссылку на таблицу что в сотовых тлф применяется)
надо ещё установить разрядность в либе на 8 для всех инитов - в UTFT.cpp
подредактируйте
disp_x_size =127;
disp_y_size =159;
display_transfer_mode =8;
На RD не забудьте подать лог.1
и, да, применяя ардуино уно , у него не хватит памяти на включенные все иниты в memorysaver.h , поэтому можете раскоментить для больших экранов
#define DISABLE_SSD1963....
#define DISABLE_ILI9486
#define DISABLE_ILI9481
#define DISABLE_R61581 ....
остальные disable оставьте закоментенными
// при вставке кода, в том же окне нажмите следующую вкладку , там есть "сворачивать код по умолчанию" . у вас еще доступно изменить к своему сообщению.
Цветной снег - это хорошо - это он прошел инициализацию. случайным образом, вы включили дисп. перебирая его регистры. В моей читалке (нужна ардуина Мега) после каждого обращения регистра и чтения , отправляется он в сброс + время, потому как некоторые регистры могут его отправить в сон, но зачастую производители сделали после регистра сна , следующий регистр - это пробуждение , на сколько это быстро , не вдавался в подробности.
что привели сюда стороннюю читалку для UNO и 8бит для Адафруитских шилдов, здорово, буду знать :) , а то некогда мониторить кто еще что придумал .
bester , поищите в инете arduino uno pinouts . там расписано какие ардуиновские пины подключены к порту С atmega328
ywor , дисп либо не подключен , либо неправильно подключен, в скетче написано к каким пинам надо подключить.
// при вставке кода, в том же окне нажмите следующую вкладку , там есть "сворачивать код по умолчанию" . у вас еще доступно изменить к своему сообщению.
по читалке пока больше не запаривайтесь (ее только для ардуины Мега делал), просто переберите иниты , с большой вероятностью найдете подходящий.
Ведь он у вас подключен к UNO . разве что шину данных диспа DB0..DB7 переключите с распиновки адафруита ( D 89234567 ) на распиновку утфт ( D 01234567 ) . и на RD подать лог.1
slider Вы не могли выложить схему подключения программы для определения ID контроллера дисплея а то не могу понять выводы (дисплея желательно подключать через резист. делители к примеру 10к+22к , на крайняк тупо через 10к,) к каким выводам подпаивать резисторы и если шилд к нему тоже надо подпаивать резисторы.На дисплее поставить резистор 3,3к между VO и VSS(+) , RW замкнуть на VSS(+), подключить A и K к VSS(+) и VDD Это правильная распиновка как на датише так Vss это ( -) а Vdd это (+).
Подскажите пожалуйста что бы определить id дисплея как я понял с описания slider его нужно выпаять а на готовом шильде он не определиться.И как На RD подать лог.1 это подать на него питание или это программно. Не судите строго я только учусь работать с ардуино
Доброго времени суток, друзья! Прошу помощи! Есть экранчик от "китайца" TFT8K2108FPC-A2-E (ILI9481 ? или SSD1289 ? , информация из глубин интернета. Не знаю кому верить.). Есть две китайские ардуинки UNO и MEGA, хочу их вместе подружить), но безрезультатно. Просто есть нестыковочка с распиновкой. В распиновке шлейфа , которую я нашел (не уверен, что от него) 2 контакта IM0 и IM1? а в даташите (ILI9481) их 3, IM0, IM1 и IM2. Может кто сталкивался с таким экранчиком.
diger67, прошу прощения, сонный я, что-то не посмотрел кто пишет. Да, вы правы.
Ну что же вы так сразу... Slider дал хорошие ссылки - там все коротко и четко написано по таким дисплеям как у вас.
Вам действительно следовало почитать тему - вы не сможете использовать этот дисплей на ардуине, так как у него нет видеопамяти. Подробнее смотрите в постах выше, Slider писал о подобных дисплеях.
Ну почему нельзя просто сказать что ничего не получится, "вот вам ссылка там аналогичный рассматривали", почему сразу нужно упрекать в том что якобы не читаешь форум? Я прошелся по ссылкам и ненашел, ненашел Карл! своего дисплея. Ну если раздражают такие вопросы, ну не отвечай ты и все, ответят другие адекватные, спокойные люди. Нет бл.. нужно ответить и обязательно вые@нуться, типа вы тут все нубы, один я д'артаньян..
Потому Нельзя сказать что вообще не получиться - потому что это будет ложь. Получиться то получится, можно его прикрутить, не переживайте так. Почти никто, как и вы, не находит своего дисплея, дисплеев бесчисленное множество, делают в основном по аналогии и по даташитам. Но просто это надо брать и делать, как - вся инфа есть, тем более через гугл и яндекс. А ради спортивного интереса, а ну-ка метнитесь и сделайте всё за меня, это врят ли, и у кого найдется точь в точь такой же дисп.
для ардуин подключение диспов с RGB шиной, можно сделать, не парясь с микросхемами внешнего видео ОЗУ:
1. способ через дорогостоящий переходник или самому спаять (мало ли, пытливому уму не важно время) микросхемы ssd1963 не особо дорого стоят.
2. способ (не реализованный мной по причине отсутствия времени и интереса, так что дерзайте сами) - это прикрутить его как есть , типа как ардуинку подключают к телевизору. в качестве фреймбуфера используется внутреннее ОЗУ ардуины) Тогда разрешение по пикселям будет не очень, зато можете использовать всю площадь экрана. Может быть для вас это как раз важно, видеть большую инфу на большом экране.
//Хотелось бы чтобы эта тема жила, и не засиралась однотипными вопросами на каждой странице, а то есть подобные темы за сотню страниц и за 1000 сообщений, никто их уже не читает, все превращено в срач. Случайно или умышленно. Изучение затруднено, там уже каша. Цените пожалуйста что есть. у меня нет здесь модераторства, чтобы подчищать. Хотелось бы чтоб в этой теме народ, наоборот делился что уже победил нового. а изученного и так уже полно выложено в инете. И давайте прекратим писать не по теме, сохраним тему в чистоте и концентрировано в новых решенных диспах.
Достался от сломанного терминала оплаты.
Гугл помощи не дает. может кто подскажет что за зверь и с чем его едят.
Достался от сломанного терминала оплаты.
Гугл помощи не дает. может кто подскажет что за зверь и с чем его едят.
Фото "фэйса" в студию.
А вообще, мне кажется, придётся его расковырять, для получения большего количества инфы о нём
....
Фото "фэйса" в студию.
А вообще, мне кажется, придётся его расковырять, для получения большего количества инфы о нём
bankir_1986, шутник.
походу у гугла тоже вид сзади спрашивал, вот ничего и не нашел. и что там на разъеме невидать.
От фэйса тут толку мало будет, если вы с подобным не сталкивались.
Нужно чтобы bankir_1986 нарисовал примерную схему где он был , + - , конденсаторы керамические на каких пинах. либо это подобие 1602, либо графического (несколько керамич. кондеров тогда у разъема будут) . надо было вид спереди под углом, чтоб сегменты видать было , модель прибора от куда вытащен, можно ещё фотку платы где стоял.
От фэйса смысла нет, такой же ка и 1602.
Колупать пробовал - вклеен намертво. Собственно взял его с ооочень маленькой надеждой его запустить (благо на халяву достался, на это и купился).
Схему посмотрю вечером.
....колупать - это я предложил, чтобы посмотреть куда тот шлейф идёт, распиновку конкретизировать, а то так можно ооочень долго экспериментировать с проводками, даже если там самый дефолтный (по контроллеру) 1602
Привет всем. Хотел бы попросить помощи или хотябы совета. Есть TFT-LCD на шлейфе LMS700KF05 с тач от XEROX Phaser 3635FP для использования в своём проекте. Плата управления CLX_8380_OPE_MAIN на CPU: Samsung S3C2413XL-26. Нужна эта плата, или LCD подключать без неё? Даташит на LMS700KF05 нашёл прилагаю фото распиновки и другие по теме вопроса. Не понял как тут фотки загрузить, поэтому дам ссылку.
https://yadi.sk/d/UcBJR8pjxTan9
На плате управления есть UART. Аппарат достался нерабочий, не включался. Пару дней назад подключил весь аппарат от другого БП, запустился. Аппарат этот по сути дела обычный комп, есть почти полноценная материнка, винчестер на 80Gb, линейка памяти и пр. А эта панель просто как монитор с клавой. Вот и хочу спросить как прикруттить это дело к Arduino, библиотек под него естественно нет. И подскажите знатоки, стоит ли связываться с этим девайсом?
Дисплей, вроде не маленький. Дюймов 7 наверное? Скорее всего там RGB интерфейс. С таким интерфейсом прикрутить к ардуино можно, но не эффективно. Про это здесь писали: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov#comment-91565
Ну еще посмотреть сам дисплей, его шлейф, прикинуть примерную распиновку, искать аналоги.. Посмотрите тему - есть советы что и как
Привет всем. Хотел бы попросить помощи или хотябы совета. Есть TFT-LCD на шлейфе LMS700KF05 с тач от XEROX Phaser 3635FP для использования в своём проекте. Плата управления CLX_8380_OPE_MAIN на CPU: Samsung S3C2413XL-26. Нужна эта плата, или LCD подключать без неё?
....
Не понял как тут фотки загрузить, поэтому дам ссылку.
.....
Вот и хочу спросить как прикруттить это дело к Arduino, библиотек под него естественно нет. И подскажите знатоки, стоит ли связываться с этим девайсом?
фотки прикрутить описано выше в форуме , отдельной темой , можно и поиском найти.
это дисп с RGB шиной. тем более распиновку вы какуюто нашли. если хотите , можете попробовать привязать без всяких переходников но выводя на него меньшее разрешение. черно-белое или м.б. 8ми битное (255 цветов) цветное. на подобие как в проекте с подключением к телевизору или монитору. вы будете первым кто это реализует и расскажет об этом.
по поводу подобного диспа отвечал здесь http://arduino.ru/forum/apparatnye-voprosy/pomogite-pozhaluista-podklyuchit-kitaiskii-tft-displei-k-arduino
сдублирую в эту тему, т.к. много там картинок(кликабельны) приложил:
если предположить: простенький дисплей с RGB шиной и 320х240 пикселей, то чтобы и всех оббежать надо:
для самой простоты при черно-белом изображении (все выводы RGB либо на+ либо на -)
1. 320х240=76800бит *50 раз в сек=3,84Мгц частота вывода инфы , что возможно.
2. 320х240=76800бит /8(бит в байте)=9Кбайт ОЗУ необходимых, которых ни у меги, тем более у уно нет. Так что мож проще достать дисплей уже с внутренним контроллером со своим ОЗУ(в смысле видеопамятью) , или приобрести отдельно SSD1963 board
или на RA8875
библиотека RA8875 https://github.com/adafruit/Adafruit_RA8875
купить можно
https://www.adafruit.com/product/1590 и http://www.ebay.com/itm/RA8875-Driver-Board-for-40-pin....
,почемуто правда они ещё прилично стоят, видимо китайцы ещё не знают что на это может быть спрос, микросхемы SSD1963 то, относительно недорого стоят (200-250руб).
платы переходники на SSD1963 найдете много разных, купить можно погуглив SSD1363 board
купить можно 700-1000руб на таобао https://world.taobao.com/item/12897334160.htm и https://world.taobao.com/item/15253677647.htm
они также с разъемами под разные шлейфы диспов 36 и 40 пин
, RA7785 там дороже.
библиотека UTFT в ней есть поддержка ssd1963 http://www.rinkydinkelectronics.com/library.php?id=51
ещё такие платы бывают
http://www.adafruit.com/product/1654
как видите в инете их полно всяких разных. мне эти переходники не надо , но я и то нашел для вас. А кому реально надо , тот гораздо больше вариантов найдет.
Попробуйте для опыта подцепить напрямую к 3.3в ардуине или к 5в через резисторы (как ардуино вывод на TB)
а) объеденить пиксели , к примеру по 4 шт, тогда при разрешении 240x136 (бывшее 480х272) потребуется 4КБайта ОЗУ, у ардуиноМЕГИ - 8КБ, должно хватить.
б) Ну или, если выводить только цифры и текст (к примеру цифры , алфавит, значки - всего до 256разных), то каждому знакоместу(массиву) присвоить байт в выделенной "видеопамяти" , который и будет означать что контроллеру выводить в знакоместо.
Молодец! Огромную работу проделал! Вызывает уважение. Вот мой один из экспериментов с LCD TFT 2.8 240x320 c сенсором https://youtu.be/Yx5-GhII6Hk
О 7дюймовых спрашивали уже конечно. Но все же еще свой выложу. Имеется дисплейчик от навигаторов несколько штук с тач панелью. 40 пин 800x480. Адафруит контроллер смотрел но он стоит не реально дорого. Но хотелось бы по минимому вложиться в контроллер. В навигаторе стоит SIRF ATLAS V похоже напрямую к ниму подключается. Подозреваю что этот https://www.maritex.com.pl/product/attachment/42224/KWH070KQ13-F02-%202011.pdf datasheet соответствует этому lcd.
Здравствуйте, очень нужна помощь с подключнием дисплеев от телефонов, ну или хотя бы узнать от чего они, никак не найду информацию по ним. Вот:
Это два одинаковых
Вот такой еще. 10-ти контактный
Двойной от раскладушки
И еще одна раскладушка, два одинаковых двойных дисплея:

Заранее благодарен
Slider , хотел задать вам пару вопросов. uhbirj@bigmir.net Заранее спасибо
heisenberg133
Второй сверху 10 контактный - Nokia 6101
Два одинаковых двойных дисплея - Siemens EF81
Подскажите как подружить с UNO
Подскажите как подружить с UNO
2,2 дюйма 220x176
ValGor, подключать так же как и все предыдущие. берете и подключаете. прочитайте тему с начала - это как раз примеры с ходом мыслей , для случаев если их еще никто в инете не подключал.
тем более у вас и распиновка и схема есть что сильно облегчает задачу. Только вроде вы смотрели не на схему дисплейной платы, а схему шлейфа. посмотрите повнимательней.
heisenberg133 , ValGor, есть форум по подобной мелочи http://vrtp.ru/index.php?showtopic=1120 , посмотрите примеры там.
Да это схема разьема телефона.
сейчас сделаю платку для дисплея и в перед
Вспомнил про заначку :D
4й маленький LCD оказался OLED 2864 (pg-2864gswb.03b) только 31 pin а не 30
нет ли случаем разводки oled shild
нашел на радиокот такое
но не уверен дя и 31pin у меня и кстати не синие а белые пиксели.
Спасибо
/* * Color LCD 128x160 LPH9413-1 (from Siemens Gigaset S67H) analysis * using Arduino Pro Mini Chinese clone * * Work-in-Progress * * Copyright (c) /nik4ik, Dec, 2016 - Jan, 2017 */ #include <stdint.h> #define DISPLAY_MAX_COLUMNS 128 #define DISPLAY_MAX_ROWS 160 #define USE_HW_SPI 1 #define DC 9 #define DATA 11 #define CLK 13 #define CS 10 #define CS_PORT PORTB #define CS_PORT_PIN 2 #define CLK_PORT PORTB #define CLK_PORT_PIN 5 #define DATA_PORT PORTB #define DATA_PORT_PIN 3 #define DC_PORT PORTB #define DC_PORT_PIN 1 // Color definitions (BGR) // #define BLACK 0x0000 /* 0, 0, 0 */ #define NAVY 0x8000 /* 0, 0, 128 */ #define DARKGREEN 0x0400 /* 0, 128, 0 */ #define DARKCYAN 0x8400 /* 0, 128, 128 */ #define MAROON 0x0010 /* 128, 0, 0 */ #define PURPLE 0x8010 /* 128, 0, 128 */ #define OLIVE 0x0410 /* 128, 128, 0 */ #define LIGHTGREY 0xC618 /* 192, 192, 192 */ #define DARKGREY 0x8410 /* 128, 128, 128 */ #define BLUE 0xf800 /* 0, 0, 255 */ #define GREEN 0x07E0 /* 0, 255, 0 */ #define CYAN 0xffe0 /* 0, 255, 255 */ #define RED 0x001f /* 255, 0, 0 */ #define MAGENTA 0xF81F /* 255, 0, 255 */ #define YELLOW 0x07ff /* 255, 255, 0 */ #define WHITE 0xFFFF /* 255, 255, 255 */ #define ORANGE 0x053f /* 255, 165, 0 */ #define GREENYELLOW 0x2ff5 /* 173, 255, 47 */ #define PINK 0xF81F #ifdef USE_HW_SPI #include <SPI.h> #endif #define send_bit(_DATA, _BIT) \ asm volatile (\ " cbi %[data_port], %[data_pin]\n" \ " cbi %[clk_port], %[clk_pin]\n" \ " sbrc %[data], %[bit]\n" \ " sbi %[data_port], %[data_pin]\n" \ " sbi %[clk_port], %[clk_pin]\n" \ : \ : [data_port] "I" (_SFR_IO_ADDR(DATA_PORT)), \ [data_pin] "I" (DATA_PORT_PIN), \ [clk_port] "I" (_SFR_IO_ADDR(CLK_PORT)), \ [clk_pin] "I" (CLK_PORT_PIN), \ [data] "a" (_DATA), \ [bit] "I" (_BIT) \ ) // Set command mode #define cm() \ asm("cbi %[dc_port], %[dc_pin]" : : \ [dc_port] "I" (_SFR_IO_ADDR(DC_PORT)), \ [dc_pin] "I" (DC_PORT_PIN)); // Set data mode #define dm() \ asm("sbi %[dc_port], %[dc_pin]" : : \ [dc_port] "I" (_SFR_IO_ADDR(DC_PORT)), \ [dc_pin] "I" (DC_PORT_PIN)); // CS disable #define csd() \ asm("sbi %[cs_port], %[cs_pin]" : : \ [cs_port] "I" (_SFR_IO_ADDR(CS_PORT)), \ [cs_pin] "I" (CS_PORT_PIN)); // CS enable #define cse() \ asm("cbi %[cs_port], %[cs_pin]" : : \ [cs_port] "I" (_SFR_IO_ADDR(CS_PORT)), \ [cs_pin] "I" (CS_PORT_PIN)); // send byte void sb(char data) { #ifdef USE_HW_SPI SPI.transfer(data); #else // MSB send_bit(data, 7); send_bit(data, 6); send_bit(data, 5); send_bit(data, 4); send_bit(data, 3); send_bit(data, 2); send_bit(data, 1); send_bit(data, 0); #endif } #define BGR(r, g, b) (((uint16_t) ((r) & 0xf8) >> 3) | ((uint16_t) ((g) & 0xfc) << 3) | ((uint16_t) ((b) & 0xf8) << 8)) typedef struct { uint8_t x; uint8_t y; } point_t; typedef struct { uint8_t left; uint8_t top; uint8_t right; uint8_t bottom; } rect_t; enum orientation_t { PORTRAIT, LANDSCAPE }; uint8_t displayWidth = DISPLAY_MAX_COLUMNS; uint8_t displayHeight = DISPLAY_MAX_ROWS; orientation_t displayOrientation = PORTRAIT; bool clipMode = false; rect_t clipRegion = { 0, // left 0, // top DISPLAY_MAX_COLUMNS, // right DISPLAY_MAX_ROWS // bottom }; void csUpDown(void) { // Прошивка Siemens Gigaset S67H дергает этими линиями между порциями // команд и перед записью данных. Возможно, неспроста. // Решил пока тоже следовать такому поведению... csd(); cse(); csd(); cse(); } void defineClipRegion(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom) { // sb(0xf5); // собственно, команда // sb(120); // параметр // задает начальное значение счетчика строк, к которому сбрасываются // значения указателя строк при достижении конечной строки (см. ниже) // sb(0xf7); // sb(120); // задает конечное значение счетчика строк, по достижении которого // указатель строк сбрасывается к значению, устанавливаемому // функцией 0xf5 (см выше) // sb(0xf4); // sb(10); // устанавливает начальное значение счетчика колонок, к которому // сбразывается текущее значение указателя колонок достижения последней // колонки. Похоже, что указатель вывода данных тоже нужно двигать // перед выводом. // sb(0xf6); // sb(10); // устанавливает конечное значение счетчика колонок, по достижении // которого счетчик сбрасывается к начальному ("нулевому") значению cm(); csUpDown(); sb(displayOrientation == PORTRAIT ? 0xf4 : 0xf5); sb(left); sb(displayOrientation == PORTRAIT ? 0xf5 : 0xf4); sb(top); sb(displayOrientation == PORTRAIT ? 0xf6 : 0xf7); sb(right); sb(displayOrientation == PORTRAIT ? 0xf7 : 0xf6); sb(bottom); clipRegion.left = left; clipRegion.top = top; clipRegion.right = right; clipRegion.bottom = bottom; clipMode = true; } void undefineClipRegion(void) { defineClipRegion(0, 0, displayWidth - 1, displayHeight - 1); clipMode = false; } void gotoXY(uint8_t x, uint8_t y) { uint8_t x_, y_; x += clipMode ? clipRegion.left : 0; y += clipMode ? clipRegion.top : 0; if (displayOrientation == PORTRAIT) { x_ = x; y_ = y; } else { x_ = y; y_ = x; } cm(); csUpDown(); // Set column pointer sb(0x10 | (x_ >> 4)); // high 4 bits sb(0x00 | (x_ & 0x0f)); // low 4 bits csUpDown(); // Set row pointer sb(0x70 | (y_ >> 4)); // high 4 bits sb(0x60 | (y_ & 0x0f)); // low 4 bits } void displaySetContrast(uint8_t level) { cm(); csUpDown(); sb(0x81); // set contrast level sb(level); // (0 - 255) } // does this controller use these two funcs?.. // /* void displayContrastUp() { cm(); csUpDown(); sb(0xd6); } void displayContrastDown() { cm(); csUpDown(); sb(0xd7); } */ void displayOn() { cm(); csUpDown(); sb(0xaf); // Display On } void displayOff() { cm(); csUpDown(); sb(0xae); // Display Off } void displaySetAllPoints(bool switchOn) { cm(); csUpDown(); if (switchOn) sb(0xa5); // All points on else sb(0xa4); // All points on disable (normal mode) } void resetDisplay() { cm(); csUpDown(); sb(0xe2); // Software reset delay(50); } void displayInit(orientation_t orientation) { displayOrientation = orientation; if (displayOrientation == PORTRAIT) { displayWidth = DISPLAY_MAX_COLUMNS; displayHeight = DISPLAY_MAX_ROWS; } else { displayWidth = DISPLAY_MAX_ROWS; displayHeight = DISPLAY_MAX_COLUMNS; } cm(); csUpDown(); resetDisplay(); // sb(0x84); // хз, надо ли оно. В логе было... if (displayOrientation == PORTRAIT) { sb(0x89); // адресация построчно, сначала увеличивается номер столбца, // в конце строки переходим к следующей строке sb(0xc0); // normal mode } else { sb(0x8b); // адресация поколоночно: сначала увеличивается номер строки // в конце столбца переходим к следующему столбцу sb(0xc2); // flip vertical } sb(0xa6); // Normal (non inverse) mode (Inverse - 0xa7) sb(0xd6); // ? из лога sb(0xde); // ? из лога } // Не уверен, что функции связаны с режимом Standby, требуется проверка // /* void displaySetStandbyMode(bool switchOn) { cm(); csUpDown(); if (switchOn) sb(0xac); else sb(0xad); } */ void displaySetInverseMode(bool switchOn) { cm(); csUpDown(); if (switchOn) sb(0xa7); // Inverse else sb(0xa6); // Normal } void displaySetStartLine(uint8_t line) { cm(); csUpDown(); sb(0x50 | (line >> 4)); // high 4 bits sb(0x40 | (line & 0x0f)); // low 4 bits } // fills area with given color // if no clipping region defined this will fill entire display void fillRegion(uint16_t color) { uint16_t i; uint16_t x1, y1, x2, y2; if (clipMode) { x1 = clipRegion.left; x2 = clipRegion.right; y1 = clipRegion.top; y2 = clipRegion.bottom; } else { // Clear entire display area x1 = 0; x2 = displayWidth - 1; y1 = 0; y2 = displayHeight - 1; } gotoXY(0, 0); dm(); csUpDown(); for (i = 0; i < ((x2 - x1 + 1) * (y2 - y1 + 1)); i++) { sb((uint8_t) (color >> 8)); sb((uint8_t) color); } } void putPixel(uint8_t x, uint8_t y, uint16_t color) { gotoXY(x, y); dm(); csUpDown(); sb((uint8_t) (color >> 8)); sb((uint8_t) color); } void drawHLine(uint8_t x1, uint8_t x2, uint8_t y, uint16_t color) { defineClipRegion(x1, y, x2, y); fillRegion(color); } void drawVLine(uint8_t x, uint8_t y1, uint8_t y2, uint16_t color) { defineClipRegion(x, y1, x, y2); fillRegion(color); } void setup () { Serial.begin(9600); Serial.println(""); Serial.println("LCD Test!"); randomSeed(analogRead(0)); pinMode(DC, OUTPUT); #ifdef USE_HW_SPI SPI.begin(); SPI.beginTransaction(SPISettings(16000000, MSBFIRST, SPI_MODE0)); #else pinMode(DATA, OUTPUT); pinMode(CLK, OUTPUT); pinMode(CS, OUTPUT); #endif // дадим контроллеру немного времени чтобы очухался после подачи питания delay(50); } void loop() { int i; unsigned long time; int x1, y1, x2, y2; uint16_t baseColors[] = { BLACK, NAVY, DARKGREEN, DARKCYAN, MAROON, PURPLE, OLIVE, LIGHTGREY, DARKGREY, BLUE, GREEN, CYAN, RED, MAGENTA, YELLOW, WHITE, ORANGE, GREENYELLOW, PINK }; displayOff(); displayInit(PORTRAIT); // displayInit(LANDSCAPE); displaySetContrast(144); fillRegion(BLACK); displayOn(); time = millis(); // random rectangles for (i = 0; i < 100; i++) { x1 = random(0, displayWidth - 10 - 1); x2 = random(x1 + 10, displayWidth - 1); y1 = random(0, displayHeight - 10 - 1); y2 = random(y1 + 10, displayHeight - 1); defineClipRegion(x1, y1, x2, y2); fillRegion(baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]); } undefineClipRegion(); delay(1000); fillRegion(BLACK); // random pixels for (i = 0; i < 5000; i++) { x1 = random(0, displayWidth - 1); y1 = random(0, displayHeight - 1); putPixel(x1, y1, baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]); } delay(1000); fillRegion(BLACK); // random horizontal/vertical lines for (i = 0; i < 5000; i++) { x1 = random(0, displayWidth - 1); x2 = random(x1, displayWidth - 1); y1 = random(0, displayHeight - 1); y2 = random(y1, displayHeight - 1); if (random(0, 2) == 1) { drawHLine(x1, x2, y1, baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]); } else { drawVLine(x1, y1, y2, baseColors[random(sizeof(baseColors) / sizeof(uint16_t))]); } } undefineClipRegion(); delay(1000); time = millis() - time; Serial.print("Loop done in "); Serial.print(time); Serial.println(" millis"); // tests... // // 0x0x, 0x1x, 0x6x, 0x7x - used for memory address setting (see gotoXY) // // 0x4x, 0x5x - disp start line coordinates. // // 0x2x - can't see any noticeable effects // 0x3x, 0x9x - the same shit // // sb(0xad); // sb(0x8a); // после сброса экран заполняется мусором // sb(0x8c); // ... // sb(0x8e); // ... // sb(0x88); // ... // // sb(0xc6); // rotate 180 (as c2 | c4) // sb(0xc2); // flip vertical // sb(0xc4); // flip horizontal // sb(0x8f); // rotate 90 // sb(0xc2); // flip vertical // sb(0x89); // нормальный портретный режим, слева направо // sb(0x86); // ... // sb(0x87); // ... // sb(0x8b); // Landscape mode, 90 CCW, справа налево! // sb(0x8d); // rotate 180, справа налево // sb(0x8f); // Landscape mode, 90 CCW, слева направо! // sb(0xa9); // Что-то делает. В некоторых источниках эта команда // задает параметры duty cycle // 0x25, 0x26, 0x27 // последовательный вызов приводит к увеличению яркости подсветки? // 0x28 тушит изображение... // смысл и назначение неясны // sb(0xf9); // после вызова это команды следующие далее команды вывода на экран // никакого видимого эффекта не производят // возобновяется все при последующем вызове команды 0xf8 // смысл и назначение неясны // Вызов команды 0x88 приводит к тому, что вывод выполняется с увеличением // указателя колонки, но при достижении указателем колонки // максимального значения, указатели колонки и строки автоматически // не изменяются, и весь вывод выполняется в последнюю точку строки. // Подумалось о режимах вывода Horizontal, Vertical & Page Mode // // 0xb9 - сандартный режим вывода // // Вызов команды 0x8a приводит к тому, что вывод выполняется с увеличением // указателя строки (отрисовка столбца), а при достижении указателем строки // максимального значения, указатели строки и колонки автоматически // не изменяются, и весь вывод выполняется в последнюю точку колонки // // 0x8b - сначала меняется адрес строки, затем столбца // // 0x8c - ведет себя как 0x88 ? // // 0x8d - во время записи адрес колонки увеличивается, при достижении // указателя колонки последнего значения адрес строки, вместо увеличения, // уменьшается // // 0x8e - как 0x8a, но во время записи адрес строки уменьшается // // 0x8f - во время записи адрес строки уменьшается. При достижении // минимального значения адреса строки, указатель строки получает максимально // возможное значение, а указатель колонки увеличивается. // Serial.println("Done"); delay(2000); }Как видно, разведанных функций не особо много. Но мне, к примеру, их уже достаточно для того, чтобы перейти к следующему этапу использования этого дисплея. Возможно, кто-то пожелает добавить этот тип дисплея к одной из существующих библиотек и использовать готовые процедуры отрисовки примитивов и шрифтов. Мне же для моей задачи достаточно будет кода для работы с парой-тройкой типоразмеров шрифтов и вывода прямых линий.
читалка 8bit выдает
1p 2p 3p 4p 5p 6p 7p 8parameter(byte) register 00 92 25 92 25 92 25 92 25 *** register 00 92 25 92 25 92 25 92 25 *** register 01 00 1C 00 1C 00 1C 00 1C register 02 01 00 01 00 01 00 01 00 register 03 00 30 00 30 00 30 00 30 register 04 00 00 00 00 00 00 00 00 *** register 05 00 00 00 00 00 00 00 00 register 06 00 00 00 00 00 00 00 00 register 07 00 00 00 00 00 00 00 00 register 08 08 08 08 08 08 08 08 08 register 09 00 00 00 00 00 00 00 00 register 0A 00 00 00 00 00 00 00 00 register 0B 11 00 11 00 11 00 11 00 register 0C 00 00 00 00 00 00 00 00 register 0D 00 00 00 00 00 00 00 00 register 0E 00 00 00 00 00 00 00 00 register 0F 07 01 07 01 07 01 07 01 register 10 0A 00 0A 00 0A 00 0A 00 register 11 00 07 00 07 00 07 00 07 register 12 61 11 61 11 61 11 61 11 register 13 00 66 00 66 00 66 00 66 register 14 00 00 00 00 00 00 00 00 register 15 00 00 00 00 00 00 00 00 register 16 00 00 00 00 00 00 00 00 register 17 00 00 00 00 00 00 00 00 register 18 00 00 00 00 00 00 00 00 register 19 00 00 00 00 00 00 00 00 register 1A 00 00 00 00 00 00 00 00 register 1B 00 00 00 00 00 00 00 00 register 1C 00 00 00 00 00 00 00 00 register 1D 00 00 00 00 00 00 00 00 register 1E 00 00 00 00 00 00 00 00 register 1F 00 00 00 00 00 00 00 00 register 20 00 00 00 00 00 00 00 00 register 21 00 00 00 00 00 00 00 00 register 22 00 00 FC 36 FC 36 FC 36 register 23 00 00 00 00 00 00 00 00 register 24 00 00 00 00 00 00 00 00 register 25 00 00 00 00 00 00 00 00 register 26 00 00 00 00 00 00 00 00 register 27 00 00 00 00 00 00 00 00 register 28 00 00 00 00 00 00 00 00 register 29 00 00 00 00 00 00 00 00 register 2A 00 00 00 00 00 00 00 00 register 2B 00 00 00 00 00 00 00 00 register 2C 00 00 00 00 00 00 00 00 register 2D 00 00 00 00 00 00 00 00 register 2E 00 00 00 00 00 00 00 00 register 2F 00 00 00 00 00 00 00 00 register 30 00 00 00 00 00 00 00 00 register 31 00 DB 00 DB 00 DB 00 DB register 32 00 00 00 00 00 00 00 00 register 33 00 00 00 00 00 00 00 00 register 34 00 DB 00 DB 00 DB 00 DB register 35 00 00 00 00 00 00 00 00 register 36 00 AF 00 AF 00 AF 00 AF register 37 00 00 00 00 00 00 00 00 register 38 00 DB 00 DB 00 DB 00 DB register 39 00 00 00 00 00 00 00 00 register 3A 00 00 00 00 00 00 00 00 register 3B 00 00 00 00 00 00 00 00 register 3C 00 00 00 00 00 00 00 00 register 3D 00 00 00 00 00 00 00 00 register 3E 00 00 00 00 00 00 00 00 register 3F 00 00 00 00 00 00 00 00 register 40 00 00 00 00 00 00 00 00 register 41 00 00 00 00 00 00 00 00 register 42 00 00 00 00 00 00 00 00 register 43 00 00 00 00 00 00 00 00 register 44 00 00 00 00 00 00 00 00 register 45 00 00 00 00 00 00 00 00 register 46 00 00 00 00 00 00 00 00 register 47 00 00 00 00 00 00 00 00 register 48 00 00 00 00 00 00 00 00 register 49 00 00 00 00 00 00 00 00 register 4A 00 00 00 00 00 00 00 00 register 4B 00 00 00 00 00 00 00 00 register 4C 00 00 00 00 00 00 00 00 register 4D 00 00 00 00 00 00 00 00 register 4E 00 00 00 00 00 00 00 00 register 4F 00 00 00 00 00 00 00 00 register 50 00 00 00 00 00 00 00 00 register 51 00 00 00 00 00 00 00 00 register 52 00 00 00 00 00 00 00 00 register 53 00 00 00 00 00 00 00 00 register 54 00 00 00 00 00 00 00 00 register 55 00 00 00 00 00 00 00 00 register 56 00 00 00 00 00 00 00 00 register 57 00 00 00 00 00 00 00 00 register 58 00 00 00 00 00 00 00 00 register 59 00 00 00 00 00 00 00 00 register 5A 00 00 00 00 00 00 00 00 register 5B 00 00 00 00 00 00 00 00 register 5C 00 00 00 00 00 00 00 00 register 5D 00 00 00 00 00 00 00 00 register 5E 00 00 00 00 00 00 00 00 register 5F 00 00 00 00 00 00 00 00 register 60 00 00 00 00 00 00 00 00 register 61 00 00 00 00 00 00 00 00 register 62 00 00 00 00 00 00 00 00 register 63 00 00 00 00 00 00 00 00 register 64 02 00 02 00 02 00 02 00 register 65 00 00 00 00 00 00 00 00 register 66 00 00 00 00 00 00 00 00 register 67 00 00 00 00 00 00 00 00 register 68 00 00 00 00 00 00 00 00 register 69 00 00 00 00 00 00 00 00 register 6A 00 00 00 00 00 00 00 00 register 6B 00 00 00 00 00 00 00 00 register 6C 00 00 00 00 00 00 00 00 register 6D 00 00 00 00 00 00 00 00 register 6E 00 00 00 00 00 00 00 00 register 6F 00 00 00 00 00 00 00 00 register 70 00 00 00 00 00 00 00 00 register 71 00 00 00 00 00 00 00 00 register 72 00 00 00 00 00 00 00 00 register 73 00 00 00 00 00 00 00 00 register 74 00 00 00 00 00 00 00 00 register 75 00 00 00 00 00 00 00 00 register 76 00 00 00 00 00 00 00 00 register 77 00 00 00 00 00 00 00 00 register 78 00 00 00 00 00 00 00 00 register 79 00 00 00 00 00 00 00 00 register 7A 00 00 00 00 00 00 00 00 register 7B 00 00 00 00 00 00 00 00 register 7C 00 00 00 00 00 00 00 00 register 7D 00 00 00 00 00 00 00 00 register 7E 00 00 00 00 00 00 00 00 register 7F 00 00 00 00 00 00 00 00 register 80 00 00 00 00 00 00 00 00 register 81 00 00 00 00 00 00 00 00 register 82 00 00 00 00 00 00 00 00 register 83 00 00 00 00 00 00 00 00 register 84 00 00 00 00 00 00 00 00 register 85 00 00 00 00 00 00 00 00 register 86 00 00 00 00 00 00 00 00 register 87 00 00 00 00 00 00 00 00 register 88 00 00 00 00 00 00 00 00 register 89 00 00 00 00 00 00 00 00 register 8A 00 00 00 00 00 00 00 00 register 8B 00 00 00 00 00 00 00 00 register 8C 00 00 00 00 00 00 00 00 register 8D 00 00 00 00 00 00 00 00 register 8E 00 00 00 00 00 00 00 00 register 8F 00 00 00 00 00 00 00 00 register 90 00 00 00 00 00 00 00 00 register 91 00 00 00 00 00 00 00 00 register 92 00 00 00 00 00 00 00 00 register 93 00 00 00 00 00 00 00 00 register 94 00 00 00 00 00 00 00 00 register 95 00 00 00 00 00 00 00 00 register 96 00 00 00 00 00 00 00 00 register 97 00 00 00 00 00 00 00 00 register 98 00 00 00 00 00 00 00 00 register 99 00 00 00 00 00 00 00 00 register 9A 00 00 00 00 00 00 00 00 register 9B 00 00 00 00 00 00 00 00 register 9C 00 00 00 00 00 00 00 00 register 9D 00 00 00 00 00 00 00 00 register 9E 00 00 00 00 00 00 00 00 register 9F 00 00 00 00 00 00 00 00 register A0 00 00 00 00 00 00 00 00 register A1 00 00 00 00 00 00 00 00 register A2 00 00 00 00 00 00 00 00 register A3 00 00 00 00 00 00 00 00 register A4 00 00 00 00 00 00 00 00 register A5 00 00 00 00 00 00 00 00 register A6 00 00 00 00 00 00 00 00 register A7 00 00 00 00 00 00 00 00 register A8 00 00 00 00 00 00 00 00 register A9 00 00 00 00 00 00 00 00 register AA 00 00 00 00 00 00 00 00 register AB 00 00 00 00 00 00 00 00 register AC 00 00 00 00 00 00 00 00 register AD 00 00 00 00 00 00 00 00 register AE 00 00 00 00 00 00 00 00 register AF 00 00 00 00 00 00 00 00 register B0 00 00 00 00 00 00 00 00 register B1 00 00 00 00 00 00 00 00 register B2 00 00 00 00 00 00 00 00 register B3 00 00 00 00 00 00 00 00 register B4 00 00 00 00 00 00 00 00 register B5 00 00 00 00 00 00 00 00 register B6 00 00 00 00 00 00 00 00 register B7 00 00 00 00 00 00 00 00 register B8 00 00 00 00 00 00 00 00 register B9 00 00 00 00 00 00 00 00 register BA 00 00 00 00 00 00 00 00 register BB 00 00 00 00 00 00 00 00 register BC 00 00 00 00 00 00 00 00 register BD 00 00 00 00 00 00 00 00 register BE 00 00 00 00 00 00 00 00 register BF 00 00 00 00 00 00 00 00 *** register C0 01 00 01 00 01 00 01 00 register C1 00 00 00 00 00 00 00 00 register C2 10 00 10 00 10 00 10 00 register C3 02 00 02 00 02 00 02 00 register C4 00 00 00 00 00 00 00 00 register C5 00 00 00 00 00 00 00 00 register C6 00 00 00 00 00 00 00 00 register C7 00 05 00 05 00 05 00 05 register C8 00 00 00 00 00 00 00 00 register C9 00 00 00 00 00 00 00 00 register CA 00 00 00 00 00 00 00 00 register CB 00 00 00 00 00 00 00 00 register CC 00 00 00 00 00 00 00 00 register CD 00 00 00 00 00 00 00 00 register CE 02 00 02 00 02 00 02 00 register CF 00 00 00 00 00 00 00 00 register D0 00 00 00 00 00 00 00 00 register D1 00 00 00 00 00 00 00 00 register D2 00 00 00 00 00 00 00 00 register D3 00 00 00 00 00 00 00 00 *** register D4 00 00 00 00 00 00 00 00 register D5 00 00 00 00 00 00 00 00 register D6 00 00 00 00 00 00 00 00 register D7 00 00 00 00 00 00 00 00 register D8 00 00 00 00 00 00 00 00 register D9 00 00 00 00 00 00 00 00 register DA 00 00 00 00 00 00 00 00 *** register DB 00 00 00 00 00 00 00 00 *** register DC 00 00 00 00 00 00 00 00 *** register DD 00 00 00 00 00 00 00 00 register DE 00 00 00 00 00 00 00 00 register DF 00 00 00 00 00 00 00 00 register E0 00 00 00 00 00 00 00 00 register E1 00 00 00 00 00 00 00 00 register E2 00 00 00 00 00 00 00 00 register E3 00 00 00 00 00 00 00 00 register E4 14 10 14 10 14 10 14 10 register E5 00 00 00 00 00 00 00 00 register E6 41 10 41 10 41 10 41 10 register E7 40 21 40 21 40 21 40 21 register E8 00 00 00 00 00 00 00 00 register E9 00 00 00 00 00 00 00 00 register EA 7F FD 7F FD 7F FD 7F FD register EB 08 00 08 00 08 00 08 00 register EC 12 41 12 41 12 41 12 41 register ED 26 83 26 83 26 83 26 83 register EE 09 02 09 02 09 02 09 02 register EF 18 AA 18 AA 18 AA 18 AA *** register F0 00 00 00 00 00 00 00 00 register F1 00 00 00 00 00 00 00 00 register F2 00 00 00 00 00 00 00 00 register F3 00 00 00 00 00 00 00 00 register F4 00 00 00 00 00 00 00 00 register F5 00 00 00 00 00 00 00 00 register F6 00 00 00 00 00 00 00 00 register F7 00 00 00 00 00 00 00 00 register F8 00 00 00 00 00 00 00 00 register F9 00 00 00 00 00 00 00 00 register FA 00 00 00 00 00 00 00 00 register FB 00 00 00 00 00 00 00 00 register FC 00 00 00 00 00 00 00 00 register FD 00 00 00 00 00 00 00 00 register FE 00 00 00 00 00 00 00 00 register FF 00 00 00 00 00 00 00 00библу на базе UTFT подготовил https://yadi.sk/d/eoa6HW_5rSyfE ( init code ili9225 ili9225b положил в папку C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\UTFT\tft_drivers\s6d0164 )
все что нужно, остается просто запустить пример UTFT\examples\Arduino (AVR)\UTFT_Demo_220x176
фотки кликабельны
nik4ik , ну круто. боюсь спросить сколько на это "принципиально" времени ушло? что с распиновкой разобрались это больше полдела. Из скетча напрашивается , что он все же SPI ? тогда правильней обозвать пины mosi sck cs ... Для распознания можно было и дешевым анализатором на CY7C68013A пройтись , там вроде есть автоматическое распознавание протоколов.
SPI есть и удафруита и UTFT (4pin и 5pin) , все их иниты перепробовали? думаю 4pin UTFT как раз ваш вариант. в описании UTFT_Requirements.pdf указано подключение. Пример UTFT_Demo_160x128_Serial , там описано подключение // Usage: myGLCD(<model code>, SDA, SCL, CS, RST[, RS]);
можно и все другие примеры с *_Serial перебрать, там тоже есть варианты с 4пиновым подключением.
это еще гляньте https://learn.adafruit.com/1-8-tft-display/downloads
Хотя не мудрено что у сименса может быть свой редкий контроллер, на который и не найти даташит. Можете фотки еще прицепить к своему сообщению , что смогли вывести на этот дисп., что выводит ваш скетч. // У вашего сообщения есть для вас изменить : ( изменить , ответить, цитировать)
при выборе 8бит на IM0 лог.1, они переносятся на старший байт , т.е. используются DB8-DB15 .
в режиме 16бит (лог1 на IM0) читалка ID_display_read_to_serial_monitor_universal_v3.1_16bit_PortCA_a выдает
1p 2p 3p 4p 5p 6p 7p 8parameter(byte) register 00 1503 1503 1503 1503 1503 1503 1503 1503 *** register 00 1503 1503 1503 1503 1503 1503 1503 1503 *** register 01 0000 0000 0000 0000 0000 0000 0000 0000 register 02 0400 0400 0400 0400 0400 0400 0400 0400 register 03 0030 0030 0030 0030 0030 0030 0030 0030 register 04 0000 0000 0000 0000 0000 0000 0000 0000 *** register 05 0000 0000 0000 0000 0000 0000 0000 0000 register 06 0000 0000 0000 0000 0000 0000 0000 0000 register 07 0000 0000 0000 0000 0000 0000 0000 0000 register 08 0808 0808 0808 0808 0808 0808 0808 0808 register 09 0000 0000 0000 0000 0000 0000 0000 0000 register 0A 0000 0000 0000 0000 0000 0000 0000 0000 register 0B 0000 0000 0000 0000 0000 0000 0000 0000 register 0C 0000 0000 0000 0000 0000 0000 0000 0000 register 0D 0000 0000 0000 0000 0000 0000 0000 0000 register 0E 0000 0000 0000 0000 0000 0000 0000 0000 register 0F 0000 0000 0000 0000 0000 0000 0000 0000 register 10 0000 0000 0000 0000 0000 0000 0000 0000 register 11 0660 0660 0660 0660 0660 0660 0660 0660 register 12 0000 0000 0000 0000 0000 0000 0000 0000 register 13 0000 0000 0000 0000 0000 0000 0000 0000 register 14 0000 0000 0000 0000 0000 0000 0000 0000 register 15 0000 0000 0000 0000 0000 0000 0000 0000 register 16 0000 0000 0000 0000 0000 0000 0000 0000 register 17 0000 0000 0000 0000 0000 0000 0000 0000 register 18 0000 0000 0000 0000 0000 0000 0000 0000 register 19 0350 0350 0350 0350 0350 0350 0350 0350 register 1A 0300 0300 0300 0300 0300 0300 0300 0300 register 1B 0007 0007 0007 0007 0007 0007 0007 0007 register 1C 0000 0000 0000 0000 0000 0000 0000 0000 register 1D 0000 0000 0000 0000 0000 0000 0000 0000 register 1E 0000 0000 0000 0000 0000 0000 0000 0000 register 1F 0000 0000 0000 0000 0000 0000 0000 0000 register 20 0000 0000 0000 0000 0000 0000 0000 0000 register 21 0000 0000 0000 0000 0000 0000 0000 0000 register 22 0000 5222 5222 5222 5222 5222 5222 5222 register 23 0000 0000 0000 0000 0000 0000 0000 0000 register 24 0000 0000 0000 0000 0000 0000 0000 0000 register 25 0000 0000 0000 0000 0000 0000 0000 0000 register 26 0000 0000 0000 0000 0000 0000 0000 0000 register 27 0000 0000 0000 0000 0000 0000 0000 0000 register 28 0000 0000 0000 0000 0000 0000 0000 0000 register 29 0000 0000 0000 0000 0000 0000 0000 0000 register 2A 0000 0000 0000 0000 0000 0000 0000 0000 register 2B 00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF register 2C 00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF register 2D 0000 0000 0000 0000 0000 0000 0000 0000 register 2E 0000 0000 0000 0000 0000 0000 0000 0000 register 2F 0000 0000 0000 0000 0000 0000 0000 0000 register 30 0000 0000 0000 0000 0000 0000 0000 0000 register 31 0000 0000 0000 0000 0000 0000 0000 0000 register 32 0000 0000 0000 0000 0000 0000 0000 0000 register 33 0000 0000 0000 0000 0000 0000 0000 0000 register 34 0000 0000 0000 0000 0000 0000 0000 0000 register 35 0000 0000 0000 0000 0000 0000 0000 0000 register 36 0000 0000 0000 0000 0000 0000 0000 0000 register 37 0000 0000 0000 0000 0000 0000 0000 0000 register 38 0000 0000 0000 0000 0000 0000 0000 0000 register 39 0000 0000 0000 0000 0000 0000 0000 0000 register 3A 0000 0000 0000 0000 0000 0000 0000 0000 register 3B 0000 0000 0000 0000 0000 0000 0000 0000 register 3C 0000 0000 0000 0000 0000 0000 0000 0000 register 3D 0000 0000 0000 0000 0000 0000 0000 0000 register 3E 0000 0000 0000 0000 0000 0000 0000 0000 register 3F 0000 0000 0000 0000 0000 0000 0000 0000 register 40 0000 0000 0000 0000 0000 0000 0000 0000 register 41 0000 0000 0000 0000 0000 0000 0000 0000 register 42 0000 0000 0000 0000 0000 0000 0000 0000 register 43 0000 0000 0000 0000 0000 0000 0000 0000 register 44 0000 0000 0000 0000 0000 0000 0000 0000 register 45 0000 0000 0000 0000 0000 0000 0000 0000 register 46 0000 0000 0000 0000 0000 0000 0000 0000 register 47 0000 0000 0000 0000 0000 0000 0000 0000 register 48 0000 0000 0000 0000 0000 0000 0000 0000 register 49 0000 0000 0000 0000 0000 0000 0000 0000 register 4A 0000 0000 0000 0000 0000 0000 0000 0000 register 4B 0000 0000 0000 0000 0000 0000 0000 0000 register 4C 0000 0000 0000 0000 0000 0000 0000 0000 register 4D 0000 0000 0000 0000 0000 0000 0000 0000 register 4E 0000 0000 0000 0000 0000 0000 0000 0000 register 4F 0000 0000 0000 0000 0000 0000 0000 0000 register 50 0000 0000 0000 0000 0000 0000 0000 0000 register 51 00AF 00AF 00AF 00AF 00AF 00AF 00AF 00AF register 52 0000 0000 0000 0000 0000 0000 0000 0000 register 53 00DB 00DB 00DB 00DB 00DB 00DB 00DB 00DB register 54 0000 0000 0000 0000 0000 0000 0000 0000 register 55 0000 0000 0000 0000 0000 0000 0000 0000 register 56 0000 0000 0000 0000 0000 0000 0000 0000 register 57 0000 0000 0000 0000 0000 0000 0000 0000 register 58 0000 0000 0000 0000 0000 0000 0000 0000 register 59 0000 0000 0000 0000 0000 0000 0000 0000 register 5A 0000 0000 0000 0000 0000 0000 0000 0000 register 5B 0000 0000 0000 0000 0000 0000 0000 0000 register 5C 0000 0000 0000 0000 0000 0000 0000 0000 register 5D 0000 0000 0000 0000 0000 0000 0000 0000 register 5E 0000 0000 0000 0000 0000 0000 0000 0000 register 5F 0000 0000 0000 0000 0000 0000 0000 0000 register 60 0000 0000 0000 0000 0000 0000 0000 0000 register 61 0000 0000 0000 0000 0000 0000 0000 0000 register 62 0000 0000 0000 0000 0000 0000 0000 0000 register 63 0000 0000 0000 0000 0000 0000 0000 0000 register 64 0000 0000 0000 0000 0000 0000 0000 0000 register 65 0000 0000 0000 0000 0000 0000 0000 0000 register 66 0000 0000 0000 0000 0000 0000 0000 0000 register 67 0000 0000 0000 0000 0000 0000 0000 0000 register 68 0000 0000 0000 0000 0000 0000 0000 0000 register 69 0000 0000 0000 0000 0000 0000 0000 0000 register 6A 0000 0000 0000 0000 0000 0000 0000 0000 register 6B 0000 0000 0000 0000 0000 0000 0000 0000 register 6C 0000 0000 0000 0000 0000 0000 0000 0000 register 6D 0000 0000 0000 0000 0000 0000 0000 0000 register 6E 0000 0000 0000 0000 0000 0000 0000 0000 register 6F 0000 0000 0000 0000 0000 0000 0000 0000 register 70 0000 0000 0000 0000 0000 0000 0000 0000 register 71 0000 0000 0000 0000 0000 0000 0000 0000 register 72 0000 0000 0000 0000 0000 0000 0000 0000 register 73 0000 0000 0000 0000 0000 0000 0000 0000 register 74 0000 0000 0000 0000 0000 0000 0000 0000 register 75 0000 0000 0000 0000 0000 0000 0000 0000 register 76 0000 0000 0000 0000 0000 0000 0000 0000 register 77 0000 0000 0000 0000 0000 0000 0000 0000 register 78 0000 0000 0000 0000 0000 0000 0000 0000 register 79 0000 0000 0000 0000 0000 0000 0000 0000 register 7A 0000 0000 0000 0000 0000 0000 0000 0000 register 7B 0000 0000 0000 0000 0000 0000 0000 0000 register 7C 0000 0000 0000 0000 0000 0000 0000 0000 register 7D 0000 0000 0000 0000 0000 0000 0000 0000 register 7E 0000 0000 0000 0000 0000 0000 0000 0000 register 7F 0000 0000 0000 0000 0000 0000 0000 0000 register 80 0000 0000 0000 0000 0000 0000 0000 0000 register 81 0000 0000 0000 0000 0000 0000 0000 0000 register 82 0000 0000 0000 0000 0000 0000 0000 0000 register 83 0000 0000 0000 0000 0000 0000 0000 0000 register 84 0000 0000 0000 0000 0000 0000 0000 0000 register 85 0000 0000 0000 0000 0000 0000 0000 0000 register 86 0000 0000 0000 0000 0000 0000 0000 0000 register 87 0000 0000 0000 0000 0000 0000 0000 0000 register 88 0000 0000 0000 0000 0000 0000 0000 0000 register 89 0000 0000 0000 0000 0000 0000 0000 0000 register 8A 0000 0000 0000 0000 0000 0000 0000 0000 register 8B 0000 0000 0000 0000 0000 0000 0000 0000 register 8C 0000 0000 0000 0000 0000 0000 0000 0000 register 8D 0000 0000 0000 0000 0000 0000 0000 0000 register 8E 0000 0000 0000 0000 0000 0000 0000 0000 register 8F 0000 0000 0000 0000 0000 0000 0000 0000 register 90 0000 0000 0000 0000 0000 0000 0000 0000 register 91 0000 0000 0000 0000 0000 0000 0000 0000 register 92 0000 0000 0000 0000 0000 0000 0000 0000 register 93 0000 0000 0000 0000 0000 0000 0000 0000 register 94 0000 0000 0000 0000 0000 0000 0000 0000 register 95 0000 0000 0000 0000 0000 0000 0000 0000 register 96 0000 0000 0000 0000 0000 0000 0000 0000 register 97 0000 0000 0000 0000 0000 0000 0000 0000 register 98 0000 0000 0000 0000 0000 0000 0000 0000 register 99 0000 0000 0000 0000 0000 0000 0000 0000 register 9A 0000 0000 0000 0000 0000 0000 0000 0000 register 9B 0000 0000 0000 0000 0000 0000 0000 0000 register 9C 0000 0000 0000 0000 0000 0000 0000 0000 register 9D 0000 0000 0000 0000 0000 0000 0000 0000 register 9E 0000 0000 0000 0000 0000 0000 0000 0000 register 9F 0000 0000 0000 0000 0000 0000 0000 0000 register A0 0000 0000 0000 0000 0000 0000 0000 0000 register A1 0000 0000 0000 0000 0000 0000 0000 0000 register A2 0000 0000 0000 0000 0000 0000 0000 0000 register A3 0000 0000 0000 0000 0000 0000 0000 0000 register A4 0000 0000 0000 0000 0000 0000 0000 0000 register A5 0000 0000 0000 0000 0000 0000 0000 0000 register A6 0000 0000 0000 0000 0000 0000 0000 0000 register A7 0000 0000 0000 0000 0000 0000 0000 0000 register A8 0000 0000 0000 0000 0000 0000 0000 0000 register A9 0000 0000 0000 0000 0000 0000 0000 0000 register AA 0000 0000 0000 0000 0000 0000 0000 0000 register AB 0000 0000 0000 0000 0000 0000 0000 0000 register AC 0000 0000 0000 0000 0000 0000 0000 0000 register AD 0000 0000 0000 0000 0000 0000 0000 0000 register AE 0000 0000 0000 0000 0000 0000 0000 0000 register AF 0000 0000 0000 0000 0000 0000 0000 0000 register B0 0000 0000 0000 0000 0000 0000 0000 0000 register B1 0000 0000 0000 0000 0000 0000 0000 0000 register B2 0000 0000 0000 0000 0000 0000 0000 0000 register B3 0000 0000 0000 0000 0000 0000 0000 0000 register B4 0000 0000 0000 0000 0000 0000 0000 0000 register B5 0000 0000 0000 0000 0000 0000 0000 0000 register B6 0000 0000 0000 0000 0000 0000 0000 0000 register B7 0000 0000 0000 0000 0000 0000 0000 0000 register B8 0000 0000 0000 0000 0000 0000 0000 0000 register B9 0000 0000 0000 0000 0000 0000 0000 0000 register BA 0000 0000 0000 0000 0000 0000 0000 0000 register BB 0000 0000 0000 0000 0000 0000 0000 0000 register BC 0000 0000 0000 0000 0000 0000 0000 0000 register BD 0000 0000 0000 0000 0000 0000 0000 0000 register BE 0000 0000 0000 0000 0000 0000 0000 0000 register BF 0000 0000 0000 0000 0000 0000 0000 0000 *** register C0 0000 0000 0000 0000 0000 0000 0000 0000 register C1 0000 0000 0000 0000 0000 0000 0000 0000 register C2 0000 0000 0000 0000 0000 0000 0000 0000 register C3 0000 0000 0000 0000 0000 0000 0000 0000 register C4 0000 0000 0000 0000 0000 0000 0000 0000 register C5 0000 0000 0000 0000 0000 0000 0000 0000 register C6 0000 0000 0000 0000 0000 0000 0000 0000 register C7 0000 0000 0000 0000 0000 0000 0000 0000 register C8 0000 0000 0000 0000 0000 0000 0000 0000 register C9 0000 0000 0000 0000 0000 0000 0000 0000 register CA 0000 0000 0000 0000 0000 0000 0000 0000 register CB 0000 0000 0000 0000 0000 0000 0000 0000 register CC 0000 0000 0000 0000 0000 0000 0000 0000 register CD 0000 0000 0000 0000 0000 0000 0000 0000 register CE 0000 0000 0000 0000 0000 0000 0000 0000 register CF 0000 0000 0000 0000 0000 0000 0000 0000 register D0 0000 0000 0000 0000 0000 0000 0000 0000 register D1 0000 0000 0000 0000 0000 0000 0000 0000 register D2 0000 0000 0000 0000 0000 0000 0000 0000 register D3 0000 0000 0000 0000 0000 0000 0000 0000 *** register D4 0000 0000 0000 0000 0000 0000 0000 0000 register D5 0000 0000 0000 0000 0000 0000 0000 0000 register D6 0000 0000 0000 0000 0000 0000 0000 0000 register D7 0000 0000 0000 0000 0000 0000 0000 0000 register D8 0000 0000 0000 0000 0000 0000 0000 0000 register D9 0000 0000 0000 0000 0000 0000 0000 0000 register DA 0000 0000 0000 0000 0000 0000 0000 0000 *** register DB 0000 0000 0000 0000 0000 0000 0000 0000 *** register DC 0000 0000 0000 0000 0000 0000 0000 0000 *** register DD 0000 0000 0000 0000 0000 0000 0000 0000 register DE 0000 0000 0000 0000 0000 0000 0000 0000 register DF 0000 0000 0000 0000 0000 0000 0000 0000 register E0 0000 0000 0000 0000 0000 0000 0000 0000 register E1 0000 0000 0000 0000 0000 0000 0000 0000 register E2 0000 0000 0000 0000 0000 0000 0000 0000 register E3 0000 0000 0000 0000 0000 0000 0000 0000 register E4 0000 0000 0000 0000 0000 0000 0000 0000 register E5 0000 0000 0000 0000 0000 0000 0000 0000 register E6 0000 0000 0000 0000 0000 0000 0000 0000 register E7 0000 0000 0000 0000 0000 0000 0000 0000 register E8 0000 0000 0000 0000 0000 0000 0000 0000 register E9 0000 0000 0000 0000 0000 0000 0000 0000 register EA 0000 0000 0000 0000 0000 0000 0000 0000 register EB 0000 0000 0000 0000 0000 0000 0000 0000 register EC 0000 0000 0000 0000 0000 0000 0000 0000 register ED 0000 0000 0000 0000 0000 0000 0000 0000 register EE 0000 0000 0000 0000 0000 0000 0000 0000 register EF 0000 0000 0000 0000 0000 0000 0000 0000 *** register F0 0000 0000 0000 0000 0000 0000 0000 0000 register F1 0000 0000 0000 0000 0000 0000 0000 0000 register F2 0000 0000 0000 0000 0000 0000 0000 0000 register F3 0000 0000 0000 0000 0000 0000 0000 0000 register F4 0000 0000 0000 0000 0000 0000 0000 0000 register F5 0000 0000 0000 0000 0000 0000 0000 0000 register F6 0000 0000 0000 0000 0000 0000 0000 0000 register F7 0121 0121 0121 0121 0121 0121 0121 0121 register F8 0000 0000 0000 0000 0000 0000 0000 0000 register F9 1000 1000 1000 1000 1000 1000 1000 1000 register FA 0000 0000 0000 0000 0000 0000 0000 0000 register FB 0000 0000 0000 0000 0000 0000 0000 0000 register FC 0000 0000 0000 0000 0000 0000 0000 0000 register FD 0000 0000 0000 0000 0000 0000 0000 0000 register FE 0000 0000 0000 0000 0000 0000 0000 0000 register FF 0000 0000 0000 0000 0000 0000 0000 0000в режиме 8 бит (лог0 на IM0) , другая читалка для 8бит ID_display_read_to_serial_monitor_universal_v3.1_8bit_PORTA_all выдает
1p 2p 3p 4p 5p 6p 7p 8parameter(byte) register 00 15 03 15 03 15 03 15 03 *** register 00 15 03 15 03 15 03 15 03 *** register 01 00 00 00 00 00 00 00 00 register 02 04 00 04 00 04 00 04 00 register 03 00 30 00 30 00 30 00 30 register 04 00 00 00 00 00 00 00 00 *** register 05 00 00 00 00 00 00 00 00 register 06 00 00 00 00 00 00 00 00 register 07 00 00 00 00 00 00 00 00 register 08 08 08 08 08 08 08 08 08 register 09 00 00 00 00 00 00 00 00 register 0A 00 00 00 00 00 00 00 00 register 0B 00 00 00 00 00 00 00 00 register 0C 00 00 00 00 00 00 00 00 register 0D 00 00 00 00 00 00 00 00 register 0E 00 00 00 00 00 00 00 00 register 0F 00 00 00 00 00 00 00 00 register 10 00 00 00 00 00 00 00 00 register 11 06 60 06 60 06 60 06 60 register 12 00 00 00 00 00 00 00 00 register 13 00 00 00 00 00 00 00 00 register 14 00 00 00 00 00 00 00 00 register 15 00 00 00 00 00 00 00 00 register 16 00 00 00 00 00 00 00 00 register 17 00 00 00 00 00 00 00 00 register 18 00 00 00 00 00 00 00 00 register 19 03 50 03 50 03 50 03 50 register 1A 03 00 03 00 03 00 03 00 register 1B 00 07 00 07 00 07 00 07 register 1C 00 00 00 00 00 00 00 00 register 1D 00 00 00 00 00 00 00 00 register 1E 00 00 00 00 00 00 00 00 register 1F 00 00 00 00 00 00 00 00 register 20 00 00 00 00 00 00 00 00 register 21 00 00 00 00 00 00 00 00 register 22 00 00 52 22 52 22 52 22 register 23 00 00 00 00 00 00 00 00 register 24 00 00 00 00 00 00 00 00 register 25 00 00 00 00 00 00 00 00 register 26 00 00 00 00 00 00 00 00 register 27 00 00 00 00 00 00 00 00 register 28 00 00 00 00 00 00 00 00 register 29 00 00 00 00 00 00 00 00 register 2A 00 00 00 00 00 00 00 00 register 2B 00 FF 00 FF 00 FF 00 FF register 2C 00 FF 00 FF 00 FF 00 FF register 2D 00 00 00 00 00 00 00 00 register 2E 00 00 00 00 00 00 00 00 register 2F 00 00 00 00 00 00 00 00 register 30 00 00 00 00 00 00 00 00 register 31 00 00 00 00 00 00 00 00 register 32 00 00 00 00 00 00 00 00 register 33 00 00 00 00 00 00 00 00 register 34 00 00 00 00 00 00 00 00 register 35 00 00 00 00 00 00 00 00 register 36 00 00 00 00 00 00 00 00 register 37 00 00 00 00 00 00 00 00 register 38 00 00 00 00 00 00 00 00 register 39 00 00 00 00 00 00 00 00 register 3A 00 00 00 00 00 00 00 00 register 3B 00 00 00 00 00 00 00 00 register 3C 00 00 00 00 00 00 00 00 register 3D 00 00 00 00 00 00 00 00 register 3E 00 00 00 00 00 00 00 00 register 3F 00 00 00 00 00 00 00 00 register 40 00 00 00 00 00 00 00 00 register 41 00 00 00 00 00 00 00 00 register 42 00 00 00 00 00 00 00 00 register 43 00 00 00 00 00 00 00 00 register 44 00 00 00 00 00 00 00 00 register 45 00 00 00 00 00 00 00 00 register 46 00 00 00 00 00 00 00 00 register 47 00 00 00 00 00 00 00 00 register 48 00 00 00 00 00 00 00 00 register 49 00 00 00 00 00 00 00 00 register 4A 00 00 00 00 00 00 00 00 register 4B 00 00 00 00 00 00 00 00 register 4C 00 00 00 00 00 00 00 00 register 4D 00 00 00 00 00 00 00 00 register 4E 00 00 00 00 00 00 00 00 register 4F 00 00 00 00 00 00 00 00 register 50 00 00 00 00 00 00 00 00 register 51 00 AF 00 AF 00 AF 00 AF register 52 00 00 00 00 00 00 00 00 register 53 00 DB 00 DB 00 DB 00 DB register 54 00 00 00 00 00 00 00 00 register 55 00 00 00 00 00 00 00 00 register 56 00 00 00 00 00 00 00 00 register 57 00 00 00 00 00 00 00 00 register 58 00 00 00 00 00 00 00 00 register 59 00 00 00 00 00 00 00 00 register 5A 00 00 00 00 00 00 00 00 register 5B 00 00 00 00 00 00 00 00 register 5C 00 00 00 00 00 00 00 00 register 5D 00 00 00 00 00 00 00 00 register 5E 00 00 00 00 00 00 00 00 register 5F 00 00 00 00 00 00 00 00 register 60 00 00 00 00 00 00 00 00 register 61 00 00 00 00 00 00 00 00 register 62 00 00 00 00 00 00 00 00 register 63 00 00 00 00 00 00 00 00 register 64 00 00 00 00 00 00 00 00 register 65 00 00 00 00 00 00 00 00 register 66 00 00 00 00 00 00 00 00 register 67 00 00 00 00 00 00 00 00 register 68 00 00 00 00 00 00 00 00 register 69 00 00 00 00 00 00 00 00 register 6A 00 00 00 00 00 00 00 00 register 6B 00 00 00 00 00 00 00 00 register 6C 00 00 00 00 00 00 00 00 register 6D 00 00 00 00 00 00 00 00 register 6E 00 00 00 00 00 00 00 00 register 6F 00 00 00 00 00 00 00 00 register 70 00 00 00 00 00 00 00 00 register 71 00 00 00 00 00 00 00 00 register 72 00 00 00 00 00 00 00 00 register 73 00 00 00 00 00 00 00 00 register 74 00 00 00 00 00 00 00 00 register 75 00 00 00 00 00 00 00 00 register 76 00 00 00 00 00 00 00 00 register 77 00 00 00 00 00 00 00 00 register 78 00 00 00 00 00 00 00 00 register 79 00 00 00 00 00 00 00 00 register 7A 00 00 00 00 00 00 00 00 register 7B 00 00 00 00 00 00 00 00 register 7C 00 00 00 00 00 00 00 00 register 7D 00 00 00 00 00 00 00 00 register 7E 00 00 00 00 00 00 00 00 register 7F 00 00 00 00 00 00 00 00 register 80 00 00 00 00 00 00 00 00 register 81 00 00 00 00 00 00 00 00 register 82 00 00 00 00 00 00 00 00 register 83 00 00 00 00 00 00 00 00 register 84 00 00 00 00 00 00 00 00 register 85 00 00 00 00 00 00 00 00 register 86 00 00 00 00 00 00 00 00 register 87 00 00 00 00 00 00 00 00 register 88 00 00 00 00 00 00 00 00 register 89 00 00 00 00 00 00 00 00 register 8A 00 00 00 00 00 00 00 00 register 8B 00 00 00 00 00 00 00 00 register 8C 00 00 00 00 00 00 00 00 register 8D 00 00 00 00 00 00 00 00 register 8E 00 00 00 00 00 00 00 00 register 8F 00 00 00 00 00 00 00 00 register 90 00 00 00 00 00 00 00 00 register 91 00 00 00 00 00 00 00 00 register 92 00 00 00 00 00 00 00 00 register 93 00 00 00 00 00 00 00 00 register 94 00 00 00 00 00 00 00 00 register 95 00 00 00 00 00 00 00 00 register 96 00 00 00 00 00 00 00 00 register 97 00 00 00 00 00 00 00 00 register 98 00 00 00 00 00 00 00 00 register 99 00 00 00 00 00 00 00 00 register 9A 00 00 00 00 00 00 00 00 register 9B 00 00 00 00 00 00 00 00 register 9C 00 00 00 00 00 00 00 00 register 9D 00 00 00 00 00 00 00 00 register 9E 00 00 00 00 00 00 00 00 register 9F 00 00 00 00 00 00 00 00 register A0 00 00 00 00 00 00 00 00 register A1 00 00 00 00 00 00 00 00 register A2 00 00 00 00 00 00 00 00 register A3 00 00 00 00 00 00 00 00 register A4 00 00 00 00 00 00 00 00 register A5 00 00 00 00 00 00 00 00 register A6 00 00 00 00 00 00 00 00 register A7 00 00 00 00 00 00 00 00 register A8 00 00 00 00 00 00 00 00 register A9 00 00 00 00 00 00 00 00 register AA 00 00 00 00 00 00 00 00 register AB 00 00 00 00 00 00 00 00 register AC 00 00 00 00 00 00 00 00 register AD 00 00 00 00 00 00 00 00 register AE 00 00 00 00 00 00 00 00 register AF 00 00 00 00 00 00 00 00 register B0 00 00 00 00 00 00 00 00 register B1 00 00 00 00 00 00 00 00 register B2 00 00 00 00 00 00 00 00 register B3 00 00 00 00 00 00 00 00 register B4 00 00 00 00 00 00 00 00 register B5 00 00 00 00 00 00 00 00 register B6 00 00 00 00 00 00 00 00 register B7 00 00 00 00 00 00 00 00 register B8 00 00 00 00 00 00 00 00 register B9 00 00 00 00 00 00 00 00 register BA 00 00 00 00 00 00 00 00 register BB 00 00 00 00 00 00 00 00 register BC 00 00 00 00 00 00 00 00 register BD 00 00 00 00 00 00 00 00 register BE 00 00 00 00 00 00 00 00 register BF 00 00 00 00 00 00 00 00 *** register C0 00 00 00 00 00 00 00 00 register C1 00 00 00 00 00 00 00 00 register C2 00 00 00 00 00 00 00 00 register C3 00 00 00 00 00 00 00 00 register C4 00 00 00 00 00 00 00 00 register C5 00 00 00 00 00 00 00 00 register C6 00 00 00 00 00 00 00 00 register C7 00 00 00 00 00 00 00 00 register C8 00 00 00 00 00 00 00 00 register C9 00 00 00 00 00 00 00 00 register CA 00 00 00 00 00 00 00 00 register CB 00 00 00 00 00 00 00 00 register CC 00 00 00 00 00 00 00 00 register CD 00 00 00 00 00 00 00 00 register CE 00 00 00 00 00 00 00 00 register CF 00 00 00 00 00 00 00 00 register D0 00 00 00 00 00 00 00 00 register D1 00 00 00 00 00 00 00 00 register D2 00 00 00 00 00 00 00 00 register D3 00 00 00 00 00 00 00 00 *** register D4 00 00 00 00 00 00 00 00 register D5 00 00 00 00 00 00 00 00 register D6 00 00 00 00 00 00 00 00 register D7 00 00 00 00 00 00 00 00 register D8 00 00 00 00 00 00 00 00 register D9 00 00 00 00 00 00 00 00 register DA 00 00 00 00 00 00 00 00 *** register DB 00 00 00 00 00 00 00 00 *** register DC 00 00 00 00 00 00 00 00 *** register DD 00 00 00 00 00 00 00 00 register DE 00 00 00 00 00 00 00 00 register DF 00 00 00 00 00 00 00 00 register E0 00 00 00 00 00 00 00 00 register E1 00 00 00 00 00 00 00 00 register E2 00 00 00 00 00 00 00 00 register E3 00 00 00 00 00 00 00 00 register E4 00 00 00 00 00 00 00 00 register E5 00 00 00 00 00 00 00 00 register E6 00 00 00 00 00 00 00 00 register E7 00 00 00 00 00 00 00 00 register E8 00 00 00 00 00 00 00 00 register E9 00 00 00 00 00 00 00 00 register EA 00 00 00 00 00 00 00 00 register EB 00 00 00 00 00 00 00 00 register EC 00 00 00 00 00 00 00 00 register ED 00 00 00 00 00 00 00 00 register EE 00 00 00 00 00 00 00 00 register EF 00 00 00 00 00 00 00 00 *** register F0 00 00 00 00 00 00 00 00 register F1 00 00 00 00 00 00 00 00 register F2 00 00 00 00 00 00 00 00 register F3 00 00 00 00 00 00 00 00 register F4 00 00 00 00 00 00 00 00 register F5 00 00 00 00 00 00 00 00 register F6 00 00 00 00 00 00 00 00 register F7 01 21 01 21 01 21 01 21 register F8 00 00 00 00 00 00 00 00 register F9 10 00 10 00 10 00 10 00 register FA 00 00 00 00 00 00 00 00 register FB 00 00 00 00 00 00 00 00 register FC 00 00 00 00 00 00 00 00 register FD 00 00 00 00 00 00 00 00 register FE 00 00 00 00 00 00 00 00 register FF 00 00 00 00 00 00 00 00в режиме 16бит UTFT тест проходит за 36 секунд , в режиме 8бит - за 39 сек.
в либу на базе UTFT занес рабочий, отысканный в инете инит. Готово к пользованию: https://yadi.sk/d/eoa6HW_5rSyfE ( init code R61503 R61503U положил в папку C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\UTFT\tft_drivers\ili9325c )
все что нужно, остается просто запустить пример UTFT\examples\Arduino (AVR)\UTFT_Demo_220x176
надо только перекоментить в нем на так:
nik4ik , ну круто. боюсь спросить сколько на это "принципиально" времени ушло? что с распиновкой разобрались это больше полдела.
Лучше я не буду подсчитывать общее время, дабы самому не испугаться :-) . Как минимум, все эти новогодние выходные, ну и в том году сколько-то выходных и вечеров. На самом деле, есть в наличии дисплей такого же разрешения, вполне себе известный и признаваемый существующими библиотеками. В данном случае я скорее удовлетворял свой интерес и любопытство, поэтому не считаю, что время потрачено совсем уж напрасно.
Из скетча напрашивается , что он все же SPI ? тогда правильней обозвать пины mosi sck cs ... Для распознания можно было и дешевым анализатором на CY7C68013A пройтись , там вроде есть автоматическое распознавание протоколов.
Согласился. Тех, кто не полезет в скетч, названия могут смутить. Поправил. А анализатора и на отладочной хватило. Тем более, что она есть, а дополнительный собирать/покупать - это время и средства.
SPI есть и удафруита и UTFT (4pin и 5pin) , все их иниты перепробовали?;
О, да. Перепробовал все варианты. Правда, это было еще тогда, когда перебирались выводы и протоколы. Но потом я еще пробегался глазами по заголовочным файлам из папки драйверов - подходящийх последовательностей не узрел.
А насчет фоток того, что выводит дисплей... Я не знаю даже, есть ли смысл. Сейчас, как я и писал, это лишь прямоугольники, линии да точки. Давайте так: как только я прикручу к нему шрифты или добавлю этот дисплей к той же Adafruit GFX (что тоже может статься) - обещаю обновить.
Добрый вечер есть дисплей HL-FPC040005B помогите разобраться с ним инфи по нем не нашёл имеет 39pin c подсветкой и тачем разобрался помогите с остальным .
Фото шлейфа с двух сторон.
вот он



Похоже что:
27, 28 +3.3в
5, 29 gnd
23, 24, 25, 26 сигналы управления, RD, WR, RS, CS, надо разбираться по месту
7, 8, 9, 10, 11, 12, 13, 14 шина данных D8 -> D0
6 reset.
Всем привет! Имеется Дисплей от Galaxy S3 GT I9300. Был упал и после падения при разблокировке не включалась подсветка, а так все отлично работает. Буду менять модуль а данных дисплей хочу поставить на Ардуино для вывода информации и управлением. Распиновка контактов:
Удастся ли дисплей вообще подружить с Ардуино?
Ruskat, если б прочли хотя бы пару первых страниц , то ззаметили б , что надо выводы DB0..DB7..DB16 . А здесь пары(как витые в компьютерной сети) - шина LVDS , или DSI , MIPI ,... (гуглить вместе с arduino) . Дисплеи такого высокого разрешения не могут иметь большой видеоконтроллер (видеокарту) на стекле по многим причинам. Обслуживанием графики большого разрешения и скорости занимается процессор на плате, как собственно и в компьютере, планшетниках,...
Подключить можно только через плату - переходник , выполняющую роль скалера (плата как в любом мониторе) + выдеокарты (видеопроцессор с видеопамятью) как в любом компьютере . Ссылки на на подобные проекты давал здесь ранее. Это очень затратное решение, но выполнимое.
вот и на сайте известного Адафруита есть про него https://blog.adafruit.com/2016/03/31/control-smartphone-display-from-mipi-display-serial-interface-arduino-and-raspberrypi-compatible/
шилд для ардуино Уно, Меги,.. через HDMI для малины , апельсина , компа,...
Люди добрые,подскажите пожалуйста чайнику, как подключить дисплей от вот такой нокиа 1100 к ардуино?

Люди добрые,подскажите пожалуйста чайнику, как подключить дисплей от вот такой нокиа 1100 к ардуино?
ну что ж вы поиском не пользуетесь ? в гугле и яндексе nokia 1100 arduino
даже здесь на форуме есть http://arduino.ru/forum/programmirovanie/biblioteka-dlya-lcd-nokia-1100
Подпаял провода к экрану добавил резисторы4,7ком, но вот не пойму, к каким контактам ардуино их подключать, и не могли бы вы дать какой-нибудь скетч для пробы? возможно требуется какая то специальная библиотека для нокиа 1100? http://digitalchip.ru/podklyuchenie-displeya-ot-nokia-1100-chast-1
Назначение выводов экрана Nokia1100. Вид с обратной (задней) стороны.
Вывод CS на экране это что? SDA к А4, SCLK к А5. Не понял, куда цеплять CS, а RES к 10 пину ардуино, правильно?
Что же? Никто не подключал что ли такой дисплей?
Доброго времени суток Всем!Я новичёк в этом деле.
И я внесу свои пять копеек.
Раздобыл
сей девайс из китайского mp3 плеера.Припаял на вот такую платку.
DB0...DB7 и управляющие выводы посадил через 10k.
Вот хочу попробывать прикрутить его к какой нить атмеге.
По надписям на шлейфе удалось лишь найти распиновку шлейфа .А вот какой там контроллер не знаю.
Добавил фоток для идентификации девайса.Может кому пригодится.На шлейфеL 1209 T-177B49-A-5
проц в плеере ATJ2117.
Читалкой ID контроллеров через UNO удалось добиться мусора на экране.
Вот что удалось увидеть в окне монитора порта
Куда копать дальше?Подскажите пожалуйста.Как оперделить ID контроллера по этим данным ?
Спасибо.
Comondante , я б на вашем месте просто прошелся по нему либой UTFT , пример UTFT_Demo_160x128_Serial , перебирая иниты . (лог ваш пока не смотрел , можете сами в инете пошукать по разрешению 128x160 какие контроллеры применяются. на Али какие распространенные, в шилдах ардуиновских. Ранее приводил ссылку на таблицу что в сотовых тлф применяется)
надо ещё установить разрядность в либе на 8 для всех инитов - в UTFT.cpp
подредактируйте
Спасибо Slider ! Буду копать дальше.
По замечаниям буду иметь ввиду.Яж только учусь.=)
ywor , дисп либо не подключен , либо неправильно подключен, в скетче написано к каким пинам надо подключить.
// при вставке кода, в том же окне нажмите следующую вкладку , там есть "сворачивать код по умолчанию" . у вас еще доступно изменить к своему сообщению.
В продолжение поста о дисплее из ктиайского mp3 плеера с надписью на шлейфе L 1209 T-177B49-A-5
и процессором в плеере ATJ2117.
Методом научного тыка были определены некоторые регистры на которые откликается дисплей
void loop() {
lcdWriteCommand(0x38); не понял что .На дисплея как бы меняется контрастность
slider,
Подскажитек как пользоваться этой либой UTFT.cpp
Какие там данные выставить в UTFT myGLCD(ILI9325C,38,39,40,41);для uno.Чёт не разберусь.
slider,
Подскажитек как пользоваться этой либой UTFT.cpp
Какие там данные выставить в UTFT myGLCD(ILI9325C,38,39,40,41);для uno.Чёт не разберусь.
ответ ранее #239 http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=4#comment-254715, прочтите внимательней и делайте .
разве что добалю, чтоб долго не думать какие кто , просто пробуете поочередно от 0 до 31 , с задержкой 3-5секунд после загрузки скетча
для UNO будет так:
myGLCD(0,A5,A4,A3,A2); // это (номер инита утфт, RS, WR, CS, RST ).
.....
myGLCD(31,A5,A4,A3,A2);
по читалке пока больше не запаривайтесь (ее только для ардуины Мега делал), просто переберите иниты , с большой вероятностью найдете подходящий.
Ведь он у вас подключен к UNO . разве что шину данных диспа DB0..DB7 переключите с распиновки адафруита ( D 89234567 ) на распиновку утфт ( D 01234567 ) . и на RD подать лог.1
Slider,DB0...DB7 были подключены согласно utft -ной распиновки для uno.RD посажен на +5в.
myGLCD(0,A5,A4,A3,A2); // это (номер инита утфт, RS, WR, CS, RST ).
.....
myGLCD(31,A5,A4,A3,A2);
преребрал все значения от 0..31.
библа memorysaver.h стандарная ничего не раскоментывал памяти хватило.
Но ничего не получилось.Экран даже не моргнул.
Что ещё можно попробывать??
slider Вы не могли выложить схему подключения программы для определения ID контроллера дисплея а то не могу понять выводы (дисплея желательно подключать через резист. делители к примеру 10к+22к , на крайняк тупо через 10к,) к каким выводам подпаивать резисторы и если шилд к нему тоже надо подпаивать резисторы.На дисплее поставить резистор 3,3к между VO и VSS(+) , RW замкнуть на VSS(+), подключить A и K к VSS(+) и VDD Это правильная распиновка как на датише так Vss это ( -) а Vdd это (+).
Да это схема разьема телефона.
сейчас сделаю платку для дисплея и в перед
Дай лаяут платы.
Подскажите пожалуйста что бы определить id дисплея как я понял с описания slider его нужно выпаять а на готовом шильде он не определиться.И как На RD подать лог.1 это подать на него питание или это программно. Не судите строго я только учусь работать с ардуино