Помогите подключить 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 выводу ардуины. тока хватает для питания. изменил функцию инициализации
экран при таком подключении вообще не подаёт признаков жизни
хелп!
http://nicuflorica.blogspot.ru/2013/10/afisaj-de-nokia-3410-comandat-de-arduino.html