Помогите подключить lcd от Mitsubishi Trium Mars к UNO r3
- Войдите на сайт для отправки комментариев
использованные источники информации:
Положительный опыт - http://vrtp.ru/index.php?showtopic=1120&st=1411
Двумя сообщениями ранее этот же автор выложил lcd_table.zip, где есть распиновка

datasheet PCF8812 - http://datasheet4u.com/datasheet-pdf/NXP/PCF8812/pdf.php?id=37049 отсюда брал строку инициализации. плюс добавлял символ 27 (B11011), который необходим для запуска этого экрана, т.к. в нём, судя по форумам (тынц1, тынц2) не pcf8812, а его аналог. и без этого символа не работает.
В итоге я спаял такую шутку:

на практике это выглядит вот так

пины пронумеровал справа на лево, если смотреть на экран и шлейф снизу. На этой фотке нумерация будет слева направо.
Конденсатор добавил не сразу. сначала Vout оставил висеть в воздухе. Пробовал разные строки инициализации. экран признаков жизни не подавал. потом вот здесь увидел подключение этого вывода к земле через конденсатор 1 мкФ. у меня нашёлся только 22 мкФ. через него и подключил. в итоге при подаче питания экран примерно секунду показывает такую картинку

потом опять никаких признаков жизни.
в ардуину загружал такой скетч
#include "SPI.h" // necessary library
int RESpin = 8;
int DCpin = 9;
int SSpin=10; // using digital pin 10 for SPI slave select
int del=200; // used for various delays
int OutVal = 200;
void setup()
{
pinMode(SSpin, OUTPUT); // we use this for SS pin
pinMode(RESpin, OUTPUT); //
pinMode(DCpin, OUTPUT); //
SPI.begin(); // wake up the SPI bus.
SPI.setBitOrder(MSBFIRST);
digitalWrite(DCpin, LOW); // set command mode
// RESET
digitalWrite(RESpin, LOW);
delay(del);
digitalWrite(RESpin, HIGH);
delay(del);
//setValue(B100001); //function set; bit PD = 0, bit V = 0; select extended instruction set (bit H = 1 mode)
//setValue(B10001); //set charge pump range HIGH (bit PRS = 1)
setValue(32); //set PD=0,V=0,H=0
setValue(12); //set PD=0,V=0,H=0
setValue(27); //unknown code
/*
setValue(32); //set PD=0,V=0,H=0
//setValue(9); //when H=0, set D=0,E=1 - all segment ON
SPI.transfer(10); //when H=0, set D=1,E=0 - normal
setValue(64); //when Y=0
setValue(128); //when X=0
setValue(27); //unknown code
*/
/*
setValue(0x21);
setValue(0xCF);
setValue(0x06);
setValue(0x14);
setValue(0x20);
setValue(0x0C);
setValue(0x1B);
*/
/*
//SPI.transfer(32); //set PD=0,V=0,H=0
delay(del);
//SPI.transfer(9); //when H=0, set D=0,E=1 - all segment ON
//SPI.transfer(10); //when H=0, set D=1,E=0 - normal
delay(del);
SPI.transfer(64); //when Y=0
delay(del);
SPI.transfer(128); //when X=0
delay(del);
SPI.transfer(27); //unknown code
delay(del);
*/
digitalWrite(DCpin, HIGH); // set data mode
}
void setValue(int value)
{
digitalWrite(SSpin, LOW);
SPI.transfer(0); // send command byte
SPI.transfer(value); // send value (0~255)
digitalWrite(SSpin, HIGH);
}
void loop()
{
// print next value
setValue(OutVal);
OutVal += 3;
if (OutVal>255)
OutVal = 0;
delay(200);
}
в функции setup()
закомментированы разные строки инициализации. эффект везде одинаковый.
Подскажите, пожалуйста, с какой стороны подступиться? где искать причину такого поведения дисплея? Что я сделал неправильно?
все ноги прозвонил. всё спаяно нормально. Все значения, кроме SPI промерил тестером - тоже всё впорядке.
Подскажите, как протестировать SPI.
Буду рад любой помощи. Заранее спасибо
в соответствии с даташитом к моменту подачи питания на /RES должен быть низкий уровень.
припаял питание к 7 выводу ардуины. тока хватает для питания. изменил функцию инициализации
void setup() { pinMode(SSpin, OUTPUT); // we use this for SS pin pinMode(RESpin, OUTPUT); // pinMode(DCpin, OUTPUT); // pinMode(Vddpin, OUTPUT); // SPI.begin(); // wake up the SPI bus. SPI.setBitOrder(MSBFIRST); // SPI.setBitOrder(LSBFIRST); digitalWrite(Vddpin, LOW); // power off //digitalWrite(SSpin, LOW); // set command mode digitalWrite(DCpin, LOW); // set command mode // RESET digitalWrite(RESpin, LOW); delay(del); digitalWrite(Vddpin, HIGH); // power on delay(del); digitalWrite(RESpin, HIGH); delay(del); //setValue(B100001); //function set; bit PD = 0, bit V = 0; select extended instruction set (bit H = 1 mode) //setValue(B10001); //set charge pump range HIGH (bit PRS = 1) setValue(32); //set PD=0,V=0,H=0 setValue(12); //set PD=0,V=0,H=0 setValue(27); //unknown code digitalWrite(DCpin, HIGH); // set data mode }экран при таком подключении вообще не подаёт признаков жизни
хелп!
http://nicuflorica.blogspot.ru/2013/10/afisaj-de-nokia-3410-comandat-de-arduino.html