К сожалению я в том коде нефирштейнHHIMERA писал(а):ОтсюдаVXXXV писал(а):заработало, рисует два цветных прямоугольника, блымает
http://vrtp.ru/index.php?showtopic=1120&st=1380#
из архива
http://vrtp.ru/index.php?act=Attach&type=post&id=381312
в файле lcd.c возьмите полную инициализацию дисплея...
Юзаем дисплеи от сотовых и других потаскунчиков.
- Реклама
Не-не-не... профилонить не прокатит...
Есть дисплеи, где и половины инициализации уже много... а есть - только по полной...
Если у вас дисплей-оригинал, то нужна полная...
Есть дисплеи, где и половины инициализации уже много... а есть - только по полной...
Если у вас дисплей-оригинал, то нужна полная...
"Я не даю готовых решений, я заставляю думать!"(С)
Разок он мне мусор показал в той инициализации что давали, вобщем завтра точно покажет. В полной я так понял есть ориентация экрана и цветность, и все?
Последний раз редактировалось VXXXV Пн фев 04, 2013 15:29:52, всего редактировалось 1 раз.
- Сообщения: 41
- Зарегистрирован: Сб окт 29, 2011 21:46:14
У меня дисплей завелся, показал разноцветный мусор. Но только есть мерцание как в сети 50, 60Гц. Нарягает сильно, но не могу от него избавиться.
Заметил что при заливка всего экана цветом происходит как то странно, от края экрана и одновременно с середины в одном направлении начинается заливать. Как с этим бороться?
Фото скину вечером если необходимо.
Заметил что при заливка всего экана цветом происходит как то странно, от края экрана и одновременно с середины в одном направлении начинается заливать. Как с этим бороться?
Фото скину вечером если необходимо.
Для того, чтобы дисплей не мерцал, были нормальные цвета и правильно проходила заливка необходимо провести полную инициализацию дисплея - ещё с десяток регистров прописать.
- Реклама
- Сообщения: 41
- Зарегистрирован: Сб окт 29, 2011 21:46:14
В инициализации я происал вот так.
Чего сдесь не хватает для полноты?
void LCDinit ()// инициализация дисплея
{
WR = 1;
RES = 0;
delay_ms(10);
RES = 1;
delay_ms(100);
CS=0;
SendCom(0x11); // SLPOUT
delay_ms(100);
SendCom(0x3A);
SendDat(0x08);
SendCom(0x36);
SendDat(0x14);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x29); // DISPON
delay_ms(100);
}
Чего сдесь не хватает для полноты?
void LCDinit ()// инициализация дисплея
{
WR = 1;
RES = 0;
delay_ms(10);
RES = 1;
delay_ms(100);
CS=0;
SendCom(0x11); // SLPOUT
delay_ms(100);
SendCom(0x3A);
SendDat(0x08);
SendCom(0x36);
SendDat(0x14);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x29); // DISPON
delay_ms(100);
}
Вобщем, инициализацию дисплея я выдрал из исходников андроида.
Возможно там что-то лишнее, но я использовал всё как есть.
Вот коды команд:
Вот структура инициализации, используемая в моей программе:
К примеру, команда POWCTL (0xF3) имеет 7 параметров (0x80, 0x00, 0x00, 0x0B, 0x33, 0x7F, 0x7F), последнее число определяет задержку после команды.
MaxGoblin, в вашем случае будет так:
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
и т.д. следующие команды
Возможно там что-то лишнее, но я использовал всё как есть.
Вот коды команд:
Код: Выделить всё
#define POWCTL 0xF3
#define VCMCTL 0xF4
#define SRCCTL 0xF5
#define SLPOUT 0x11
#define TEON 0x35
#define MADCTL 0x36
#define COLMOD 0x3A
#define DISCTL 0xF2
#define IFCTL 0xF6
#define GATECTL 0xFD
#define WRDISBV 0x51
#define WRCABCMB 0x5E
#define MIECTL1 0xCA
#define BCMODE 0xCB
#define MIECTL2 0xCC
#define MIECTL3 0xCD
#define RPGAMCTL 0xF7
#define RNGAMCTL 0xF8
#define GPGAMCTL 0xF9
#define GNGAMCTL 0xFA
#define BPGAMCTL 0xFB
#define BNGAMCTL 0xFC
#define CASET 0x2A
#define PASET 0x2B
#define RAMWR 0x2C
#define WRCTRLD 0x53
#define WRCABC 0x55
#define DISPON 0x29
#define DISPOFF 0x28
#define SLPIN 0x10
#define RDDIDIF 0x04
#define RDID1 0xDA
#define RDID2 0xDB
#define RDID3 0xDC
Код: Выделить всё
const struct setting_table S6D04D1_power_on_setting_table[] = {
{ POWCTL, 7, { 0x80, 0x00, 0x00, 0x0B, 0x33, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ VCMCTL, 5, { 0x6E, 0x6E, 0x7F, 0x7F, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ SRCCTL, 5, { 0x12, 0x00, 0x03, 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },//
{ SLPOUT, 0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 120 },
{ MADCTL, 1, { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ COLMOD, 1, { 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 30 }, //
{ DISCTL, 11, { 0x14, 0x14, 0x03, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x04, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ GATECTL, 2, { 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ WRDISBV, 1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //BRIGHTNESS//
{ WRCABCMB, 1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ MIECTL1, 3, { 0x80, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ BCMODE, 1, { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },//
{ MIECTL2, 3, { 0x20, 0x01, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ MIECTL3, 2, { 0x7C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ RPGAMCTL, 15, { 0x00, 0x23, 0x15, 0x15, 0x1C, 0x19, 0x18, 0x1E, 0x24, 0x25, 0x25, 0x20, 0x10, 0x22, 0x21 }, 0 }, //
{ RNGAMCTL, 15, { 0x19, 0x00, 0x15, 0x15, 0x1C, 0x1F, 0x1E, 0x24, 0x1E, 0x1F, 0x25, 0x20, 0x10, 0x22, 0x21 }, 0 }, //
{ GPGAMCTL, 15, { 0x06, 0x23, 0x14, 0x14, 0x1D, 0x1A, 0x19, 0x1F, 0x24, 0x26, 0x30, 0x1E, 0x1E, 0x22, 0x21 }, 0 }, //
{ GNGAMCTL, 15, { 0x19, 0x06, 0x14, 0x14, 0x1D, 0x20, 0x1F, 0x25, 0x1E, 0x20, 0x30, 0x1E, 0x1E, 0x22, 0x21 }, 0 }, //
{ BPGAMCTL, 15, { 0x2C, 0x23, 0x20, 0x20, 0x23, 0x2F, 0x30, 0x39, 0x09, 0x09, 0x18, 0x13, 0x13, 0x22, 0x21 }, 0 }, //
{ BNGAMCTL, 15, { 0x19, 0x2C, 0x20, 0x20, 0x23, 0x35, 0x36, 0x3F, 0x03, 0x03, 0x18, 0x13, 0x13, 0x22, 0x21 }, 0 }, //
{ TEON, 1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ CASET, 4, { 0x00, 0x00, 0x01, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ PASET, 4, { 0x00, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ RAMWR, 0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
{ WRCTRLD, 1, { 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ WRCABC, 1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 }, //
{ DISPON, 0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 50 },
};
К примеру, команда POWCTL (0xF3) имеет 7 параметров (0x80, 0x00, 0x00, 0x0B, 0x33, 0x7F, 0x7F), последнее число определяет задержку после команды.
MaxGoblin, в вашем случае будет так:
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
и т.д. следующие команды
Написал инициализацию полностью, изменений никаких, два черных квадрата и все. Вот что написал:
Код: Выделить всё
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
SendCom(0xF5);
SendDat(0x12);
SendDat(0x03);
SendDat(0xF0);
SendDat(0x70);
SendCom(0x11);
delay_ms(100);
SendCom(0x36);
SendDat(0x20);
SendCom(0x3A);
SendDat(0x77);
delay_ms(30);
SendCom(0xF2);
SendDat(0x14);
SendDat(0x14);
SendDat(0x03);
SendDat(0x03);
SendDat(0x04);
SendDat(0x03);
SendDat(0x04);
SendDat(0x10);
SendDat(0x04);
SendDat(0x14);
SendDat(0x14);
SendCom(0xFD);
SendDat(0x22);
SendDat(0x01);
SendCom(0x51);
SendCom(0x5E);
SendCom(0xCA);
SendDat(0x80);
SendDat(0x80);
SendDat(0x20);
SendCom(0xCB);
SendDat(0x03);
SendCom(0xCC);
SendDat(0x20);
SendDat(0x01);
SendDat(0x8F);
SendCom(0xCD);
SendDat(0x7C);
SendDat(0x01);
SendCom(0xF7);
SendDat(0x23);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x19);
SendDat(0x18);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x25);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF8);
SendDat(0x19);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x1F);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x1E);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF9);
SendDat(0x06);
SendDat(0x23);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x1A);
SendDat(0x19);
SendDat(0x1F);
SendDat(0x24);
SendDat(0x26);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFA);
SendDat(0x19);
SendDat(0x06);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x20);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x1E);
SendDat(0x20);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFB);
SendDat(0x2C);
SendDat(0x23);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x2F);
SendDat(0x30);
SendDat(0x39);
SendDat(0x09);
SendDat(0x09);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFC);
SendDat(0x19);
SendDat(0x2C);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x35);
SendDat(0x36);
SendDat(0x3F);
SendDat(0x03);
SendDat(0x03);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0x35);
SendCom(0x2A);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x2B);
SendDat(0xEF);
SendCom(0x2C);
SendCom(0x53);
SendDat(0x2C);
SendCom(0x55);
SendCom(0x29); // DISPON
delay_ms(50); VXXXV, зачем нули попропускали, они же там не просто так.
Вот то, что сразу заметил и исправил:
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
SendCom(0xF5);
SendDat(0x12);
SendDat(0x00);
SendDat(0x03);
SendDat(0xF0);
SendDat(0x70);
SendCom(0x11);
delay_ms(100);
SendCom(0x36);
SendDat(0x20);
SendCom(0x3A);
SendDat(0x77);
delay_ms(30);
SendCom(0xF2);
SendDat(0x14);
SendDat(0x14);
SendDat(0x03);
SendDat(0x03);
SendDat(0x04);
SendDat(0x03);
SendDat(0x04);
SendDat(0x10);
SendDat(0x04);
SendDat(0x14);
SendDat(0x14);
SendCom(0xFD);
SendDat(0x22);
SendDat(0x01);
SendCom(0x51);
SendDat(0x00);
SendCom(0x5E);
SendDat(0x00);
SendCom(0xCA);
SendDat(0x80);
SendDat(0x80);
SendDat(0x20);
SendCom(0xCB);
SendDat(0x03);
SendCom(0xCC);
SendDat(0x20);
SendDat(0x01);
SendDat(0x8F);
SendCom(0xCD);
SendDat(0x7C);
SendDat(0x01);
SendCom(0xF7);
SendDat(0x00);
SendDat(0x23);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x19);
SendDat(0x18);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x25);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF8);
SendDat(0x19);
SendDat(0x00);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x1F);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x1E);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF9);
SendDat(0x06);
SendDat(0x23);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x1A);
SendDat(0x19);
SendDat(0x1F);
SendDat(0x24);
SendDat(0x26);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFA);
SendDat(0x19);
SendDat(0x06);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x20);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x1E);
SendDat(0x20);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFB);
SendDat(0x2C);
SendDat(0x23);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x2F);
SendDat(0x30);
SendDat(0x39);
SendDat(0x09);
SendDat(0x09);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFC);
SendDat(0x19);
SendDat(0x2C);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x35);
SendDat(0x36);
SendDat(0x3F);
SendDat(0x03);
SendDat(0x03);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0x35);
SendDat(0x00);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2C);
SendCom(0x53);
SendDat(0x2C);
SendCom(0x55);
SendDat(0x00);
SendCom(0x29); // DISPON
delay_ms(50);
Вот то, что сразу заметил и исправил:
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
SendCom(0xF5);
SendDat(0x12);
SendDat(0x00);
SendDat(0x03);
SendDat(0xF0);
SendDat(0x70);
SendCom(0x11);
delay_ms(100);
SendCom(0x36);
SendDat(0x20);
SendCom(0x3A);
SendDat(0x77);
delay_ms(30);
SendCom(0xF2);
SendDat(0x14);
SendDat(0x14);
SendDat(0x03);
SendDat(0x03);
SendDat(0x04);
SendDat(0x03);
SendDat(0x04);
SendDat(0x10);
SendDat(0x04);
SendDat(0x14);
SendDat(0x14);
SendCom(0xFD);
SendDat(0x22);
SendDat(0x01);
SendCom(0x51);
SendDat(0x00);
SendCom(0x5E);
SendDat(0x00);
SendCom(0xCA);
SendDat(0x80);
SendDat(0x80);
SendDat(0x20);
SendCom(0xCB);
SendDat(0x03);
SendCom(0xCC);
SendDat(0x20);
SendDat(0x01);
SendDat(0x8F);
SendCom(0xCD);
SendDat(0x7C);
SendDat(0x01);
SendCom(0xF7);
SendDat(0x00);
SendDat(0x23);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x19);
SendDat(0x18);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x25);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF8);
SendDat(0x19);
SendDat(0x00);
SendDat(0x15);
SendDat(0x15);
SendDat(0x1C);
SendDat(0x1F);
SendDat(0x1E);
SendDat(0x24);
SendDat(0x1E);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x20);
SendDat(0x10);
SendDat(0x22);
SendDat(0x21);
SendCom(0xF9);
SendDat(0x06);
SendDat(0x23);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x1A);
SendDat(0x19);
SendDat(0x1F);
SendDat(0x24);
SendDat(0x26);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFA);
SendDat(0x19);
SendDat(0x06);
SendDat(0x14);
SendDat(0x14);
SendDat(0x1D);
SendDat(0x20);
SendDat(0x1F);
SendDat(0x25);
SendDat(0x1E);
SendDat(0x20);
SendDat(0x30);
SendDat(0x1E);
SendDat(0x1E);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFB);
SendDat(0x2C);
SendDat(0x23);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x2F);
SendDat(0x30);
SendDat(0x39);
SendDat(0x09);
SendDat(0x09);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0xFC);
SendDat(0x19);
SendDat(0x2C);
SendDat(0x20);
SendDat(0x20);
SendDat(0x23);
SendDat(0x35);
SendDat(0x36);
SendDat(0x3F);
SendDat(0x03);
SendDat(0x03);
SendDat(0x18);
SendDat(0x13);
SendDat(0x13);
SendDat(0x22);
SendDat(0x21);
SendCom(0x35);
SendDat(0x00);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2C);
SendCom(0x53);
SendDat(0x2C);
SendCom(0x55);
SendDat(0x00);
SendCom(0x29); // DISPON
delay_ms(50);
"Разделяй и властвуй!"(С)
Оставьте одну только инициализацию (после инициализации вставьте вечный цикл)... или вставьте задержку после инициализации секунд на 5-6-10...
По первому включению должен быть цветной мусор на весь экран, без миганий и прочих артефактов... Если что-то не так, значит смотрите подключение и инициализацию...
Пересброс цветного мусора не даст... только передёргивание по питанию, частенько с паузой между включениями...
Оставьте одну только инициализацию (после инициализации вставьте вечный цикл)... или вставьте задержку после инициализации секунд на 5-6-10...
По первому включению должен быть цветной мусор на весь экран, без миганий и прочих артефактов... Если что-то не так, значит смотрите подключение и инициализацию...
Пересброс цветного мусора не даст... только передёргивание по питанию, частенько с паузой между включениями...
"Я не даю готовых решений, я заставляю думать!"(С)
Цветной мусор есть, но когда делаю заливку экрана (любым цветом) то справа выезжают черные квадратики, в самом верху и с середины. Если так залить другой код только с инициалтзацией, квадраты не исчезнут, только если питание секунд на 5 отключить снова весь экран в мусоре.
- Сообщения: 41
- Зарегистрирован: Сб окт 29, 2011 21:46:14
Я вот так например провел инициализацию.(Все работает так как надо).
Еще буду пробовать еще кое какие команды из инициализации убрать, чтобы впустую не занималось место.
void LCDinit ()// инициализация дисплея
{
WR = 1;
//CS=1;
RES = 0;
delay_ms(10);
RES = 1;
delay_ms(100);
CS=0;
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
SendCom(0xF5);
SendDat(0x12);
SendDat(0x00);
SendDat(0x03);
SendDat(0xF0);
SendDat(0x70);
SendCom(0x11);
delay_ms(100);
SendCom(0x36);
SendDat(0x14);
SendCom(0x3A);
SendDat(0x77);
delay_ms(30);
SendCom(0xF2);
SendDat(0x14);
SendDat(0x14);
SendDat(0x03);
SendDat(0x03);
SendDat(0x04);
SendDat(0x03);
SendDat(0x04);
SendDat(0x10);
SendDat(0x04);
SendDat(0x14);
SendDat(0x14);
SendCom(0xFD);
SendDat(0x22);
SendDat(0x01);
SendCom(0x51);
SendDat(0x00);
SendCom(0x5E);
SendDat(0x00);
SendCom(0xCA);
SendDat(0x80);
SendDat(0x80);
SendDat(0x20);
SendCom(0xCB);
SendDat(0x03);
SendCom(0xCC);
SendDat(0x20);
SendDat(0x01);
SendDat(0x8F);
SendCom(0xCD);
SendDat(0x7C);
SendDat(0x01);
SendCom(0x35);
SendDat(0x00);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2C);
SendCom(0x53);
SendDat(0x2C);
SendCom(0x55);
SendDat(0x00);
SendCom(0x29); // DISPON
delay_ms(50);
}
И вот так описал функцию очистки экрана.
void CLSLcd(void)
{
unsigned int i, k; // объявляем переменную i
CS=0; //Ноль
//------------------------
SendCom(0x2A); //Команда ориетации по Y координате
SendDat(0x0); //Данныеначала Y координат (0)
SendDat(0x0); //
SendDat(0); //Данные конца Y координат (240)
SendDat(240); //
//------------------------
SendCom(0x2B); //Команда ориетации по Х координате
SendDat(0x0); //Данныеначала X координат (0)
SendDat(0x0); //
SendDat(1); //Данные конца X координат (400)
SendDat(400); //
//------------------------
SendCom(0x2C); //Команда записи в память дисплея
for (i = 1; i <= 401; i++)
{
for (k = 1; k <= 241; k++)
{
SendDat(255); //
SendDat(255); //
SendDat(255); //
}
}
}
Заливка происходит равномерно по всему экрану и без дерганий.
to: VXXXV.
Может у вас что то не так описано в функции очистки что у вас квадратами рисует.
Еще буду пробовать еще кое какие команды из инициализации убрать, чтобы впустую не занималось место.
void LCDinit ()// инициализация дисплея
{
WR = 1;
//CS=1;
RES = 0;
delay_ms(10);
RES = 1;
delay_ms(100);
CS=0;
SendCom(0xF3);
SendDat(0x80);
SendDat(0x00);
SendDat(0x00);
SendDat(0x0B);
SendDat(0x33);
SendDat(0x7F);
SendDat(0x7F);
SendCom(0xF4);
SendDat(0x6E);
SendDat(0x6E);
SendDat(0x7F);
SendDat(0x7F);
SendDat(0x33);
SendCom(0xF5);
SendDat(0x12);
SendDat(0x00);
SendDat(0x03);
SendDat(0xF0);
SendDat(0x70);
SendCom(0x11);
delay_ms(100);
SendCom(0x36);
SendDat(0x14);
SendCom(0x3A);
SendDat(0x77);
delay_ms(30);
SendCom(0xF2);
SendDat(0x14);
SendDat(0x14);
SendDat(0x03);
SendDat(0x03);
SendDat(0x04);
SendDat(0x03);
SendDat(0x04);
SendDat(0x10);
SendDat(0x04);
SendDat(0x14);
SendDat(0x14);
SendCom(0xFD);
SendDat(0x22);
SendDat(0x01);
SendCom(0x51);
SendDat(0x00);
SendCom(0x5E);
SendDat(0x00);
SendCom(0xCA);
SendDat(0x80);
SendDat(0x80);
SendDat(0x20);
SendCom(0xCB);
SendDat(0x03);
SendCom(0xCC);
SendDat(0x20);
SendDat(0x01);
SendDat(0x8F);
SendCom(0xCD);
SendDat(0x7C);
SendDat(0x01);
SendCom(0x35);
SendDat(0x00);
SendCom(0x2A);
SendDat(0x00);
SendDat(0x00);
SendDat(0x01);
SendDat(0x8F);
SendCom(0x2B);
SendDat(0x00);
SendDat(0x00);
SendDat(0x00);
SendDat(0xEF);
SendCom(0x2C);
SendCom(0x53);
SendDat(0x2C);
SendCom(0x55);
SendDat(0x00);
SendCom(0x29); // DISPON
delay_ms(50);
}
И вот так описал функцию очистки экрана.
void CLSLcd(void)
{
unsigned int i, k; // объявляем переменную i
CS=0; //Ноль
//------------------------
SendCom(0x2A); //Команда ориетации по Y координате
SendDat(0x0); //Данныеначала Y координат (0)
SendDat(0x0); //
SendDat(0); //Данные конца Y координат (240)
SendDat(240); //
//------------------------
SendCom(0x2B); //Команда ориетации по Х координате
SendDat(0x0); //Данныеначала X координат (0)
SendDat(0x0); //
SendDat(1); //Данные конца X координат (400)
SendDat(400); //
//------------------------
SendCom(0x2C); //Команда записи в память дисплея
for (i = 1; i <= 401; i++)
{
for (k = 1; k <= 241; k++)
{
SendDat(255); //
SendDat(255); //
SendDat(255); //
}
}
}
Заливка происходит равномерно по всему экрану и без дерганий.
to: VXXXV.
Может у вас что то не так описано в функции очистки что у вас квадратами рисует.
2VXXXV
Если по сбросу цветной мусор заполнил весь экран, значит играйтесь регистром COLMOD(3Ah)...
Попробуйте записать в него или 05H, или 55Н... и заливайте дисплей не 24-бит данными, а 16-бит... по два байта на точку...
F8H и 00H должны давать красный цвет заливки... 00Н и 00Н - чёрный, а FFH и FFH - белый...
Если по сбросу цветной мусор заполнил весь экран, значит играйтесь регистром COLMOD(3Ah)...
Попробуйте записать в него или 05H, или 55Н... и заливайте дисплей не 24-бит данными, а 16-бит... по два байта на точку...
F8H и 00H должны давать красный цвет заливки... 00Н и 00Н - чёрный, а FFH и FFH - белый...
"Я не даю готовых решений, я заставляю думать!"(С)
Все перепробывал, когда выводятся другие цвета квадратов, то видно их мерцание. Цвета меняются даже когда другое значение яркости ставлю, в основном черный чаще выскакивает. Может я дисп подпалил немного. Вот фото квадратов


Народ, длинные простыни текста можно спрятать под спойлер, например:
Спойлер
...текст...Новый перл от китая. Поехал купил дисплей китайский и шлейф, тоже китайский. Решил востановить телефон, вкинул новый шлейф а телефон фигушки. Пришлось брать выпаивать разъем и впаивать в оригинальный шлейф, после этого телефон ожил. Затем настала очередь дисплея с поднебесной, купленого за 10у.е. Неменяя в инициализации ничего, снова мусор, а при закраске экрана черт знает что. Пробывал разные коды, но результат тот же, на регистр 0х36 полный мороз. Подсветка очень яркая снизу (на фото видно почти белый цвет вместо желтого), вобщем качество г.... Дисплеи нокии те что я брал (тоже китай) по качеству как оригинал, ну а у самсунга...вобщем ложу их на дальнюю полку.


- Сообщения: 41
- Зарегистрирован: Сб окт 29, 2011 21:46:14
А предыдущий экран который вы подключали тоже китаец?
скорее всего оригинал, т.к. вынимал с телефона, а следов замены не видно было, да и по качеству подсветки намного лучше.


