Библиотека для дисплея.
- Войдите на сайт для отправки комментариев
Сб, 21/01/2012 - 02:14
Всем привет! Что нужно для успешного старта дисплея не имея для него библиотеки? Есть дисплей от сименса м55 - LPH8731-3C. Подключил его как тут, дисплей там другой и библиотека не подошла, чему я и не удивился... В интернете находил как подключали такой дисплей к другим МК, но там вроде язык отличный от ардуино. Примеры инициализации там есть, но как это перенести в среду ардуино? И что еще нужно кроме инициализации?
Что нужно для успешного старта дисплея не имея для него библиотеки?
написать для него библиотеку
но как это перенести в среду ардуино?
разобраться и переписать
И что еще нужно кроме инициализации?
а что нужно Вам от дисплея?
Для начала мне хочется просто его включить и вывести что ни будь простейшее, например температуру. Какие составные части нужны для такой библиотеки? Вот пример инициализации:
RESET:=0;
delay_ms(100);
RESET:=1;
delay_ms(1000);
write(cmd,0x01); //reset sw
delay_ms(50);
write(cmd,0x03); //Booster voltage ON
delay_ms(40);
Write(cmd,0x11); //sleep out
delay_ms(40);
Write(cmd,0xc6); //initial escape
delay_ms(40);
Write(cmd,0xb9); //Refresh set
write(dat,0x00);
write(cmd,0xb6); //Display control
Write(dat,0x80); //
Write(dat,0x04); //
Write(dat,0x8a); //
write(dat,0x54); //
write(dat,0x45); //
Write(dat,0x52); //
Write(dat,0x43); //
write(cmd,0xb3); //Gray scale position set 0
Write(dat,0x02); //
Write(dat,0x0a); //
Write(dat,0x15); //
write(dat,0x1f); //
write(dat,0x28); //
Write(dat,0x30); //
Write(dat,0x37); //
Write(dat,0x3f); //
Write(dat,0x47); //
Write(dat,0x4c); //
write(dat,0x54); //
write(dat,0x65); //
Write(dat,0x75); //
Write(dat,0x80); //
Write(dat,0x85); //
write(cmd,0xb5); //Gamma curve
Write(dat,0x01); //
write(cmd,0xb7); //Temperature gradient
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(dat,0x00); //
write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(dat,0x00); //
write(dat,0x00); //
Write(dat,0x00); //
Write(dat,0x00); //
write(cmd,0xbd); //Common driver output select
Write(dat,0x00); //
write(cmd,0x36); //Memory access control
Write(dat,0x48); //
write(cmd,0x2d); //Colour set
Write(dat,0x00); //
Write(dat,0x03); //
Write(dat,0x05); //
write(dat,0x07); //
write(dat,0x09); //
Write(dat,0x0b); //
Write(dat,0x0d); //
Write(dat,0x0f); //
Write(dat,0x00); //
Write(dat,0x03); //
write(dat,0x05); //
write(dat,0x07); //
write(dat,0x09); //
Write(dat,0x0b); //
Write(dat,0x0d); //
Write(dat,0x0f); //
Write(dat,0x00); //
Write(dat,0x05); //
write(dat,0x0b); //
write(dat,0x0f); //
write(cmd,0xba); //Voltage control
Write(dat,0x2f); //
Write(dat,0x03); //
write(cmd,0x25); //Write contrast
Write(dat,0x7f); //
write(cmd,0xbe); //Power control
Write(dat,0x59); //
write(cmd,0x3a); //interfase pixel format
Write(dat,0x03); //
write(cmd,0x29); //Display ON
end;
Это пример инициализации для контроллера Вашего дисплея? Если нет, он вам не поможет. Нужно либо искать готовые решения для контроллера, либо читать даташит на дисплей и разбираться, что на него надо послать чтобы он заработал.
Даташита на дисплей я не нашел. Пример именно для этого дисплея.
http://www.mikrocontroller.net/topic/31403#new
К сожалению на этом сайте рассматривается другой контроллер и ссылку Вы дали совсем на другой дисплей. Вот тема где прикручивают мой дисплей к МК, там же пример инициализации. Но что нужно ардуине для запуска дисплея? Точнее, что нужно включить в библиотеку и как это сделать? Можно ли просто отредактировать библиотеку от похожего дисплея, но с другим контроллером?
Для того чтобы ответить на ваши вопросы нужно иметь этот дисплей под рукой, даташит на него и немало познаний.. В общем - ждите пока гуру в той теме разрулят и создадут библиотеку)
К сожалению гуру в той теме не интересуются ардуиной... Значит отправлю дисплей в ящик.
http://mindaugas.hostzi.com/?p=723&lang=en погляди тут .может быть получится .
не сразу заметил ссылку в первом сообщении .
у меня такой экран не заработал .
К сожалению гуру в той теме не интересуются ардуиной... Значит отправлю дисплей в ящик.
Ну, если есть библиотека для какого-нибудь другого контроллера, да еще на C, то ситуация - по сравнению с нынешним вариантом отсутствия какоц бы то ни было тнформации - будет выглядеть гораздо оптимистичнее.
Почитайте-ка вот эту ветку на electronix.ru - может быть наступит просветление
Просветление может и будет по не многу наступать, но не ранее чем я узнаю, что мне нужно кроме инициализации) И самый животрепещущий вопрос как это все перевести в язык ардуины, где про это можно почитать? Ссылку изучаю, спасибо! Уже нашел еще один пример инициализации для моего дисплея...но мне это мало что дало:(
szek в ардуиноиде работаю все основные команды СИ без вопросов. Другое дело - библиотеки, но и их как я понял можно подключить почти всегда.
Так что чаще всего переводить ничего не нужно.
А вот разобраться в коде пошагово все равно придется, скорее всего. Иначе возникнут непреодолимые трудности )))
Может, для начала поискать дисплей попроще? Нокиа 3110 к примеру очень простой, использовать просто. Ну не говоря про текстовые.
Просветление может и будет по не многу наступать, но не ранее чем я узнаю, что мне нужно кроме инициализации) И самый животрепещущий вопрос как это все перевести в язык ардуины, где про это можно почитать? Ссылку изучаю, спасибо! Уже нашел еще один пример инициализации для моего дисплея...но мне это мало что дало:(
Кроме инициализации вам потребуются всего две дополнительные команды - выбор адреса и отправка по выбранному адресу байта данных. На экране уже начнет что-то появляться - отличная база для экспериментов и выяснения что да как даже без даташита.
А перевести в язык Ардуины, например с "языка AVR" - это как с "пацанского" на литературный русский. Усилия потребуются минимальные. с Си-программы для PIC-ов или 6800-х посложнее, как с украинского на русский. Главное иметь всю цепочку (см. "#include") бмблиотек.
Может, для начала поискать дисплей попроще? Нокиа 3110 к примеру очень простой, использовать просто. Ну не говоря про текстовые.
Сейчас проблема найти такой дисплей, телефону то уже черти сколько лет... Текстовые в местных радиомагазинах, что то больно дороги:(
А перевести в язык Ардуины, например с "языка AVR" - это как с "пацанского" на литературный русский. Усилия потребуются минимальные. с Си-программы для PIC-ов или 6800-х посложнее, как с украинского на русский. Главное иметь всю цепочку (см. "#include") бмблиотек.
Для новичка в программировании это сложно:( Вот сверху пример инициализации, если вам не трудно, хотя бы пару строчек сможете перевести?
И еще вопрос, ведь можно например инициализацию провести в самом скейтче, а не в подключенной библиотеке?
Для новичка в программировании это сложно:( Вот сверху пример инициализации, если вам не трудно, хотя бы пару строчек сможете перевести?
И еще вопрос, ведь можно например инициализацию провести в самом скейтче, а не в подключенной библиотеке?
Лехххко:
В приведенном коде инициализации переводить, собственно, нечего - только заменить delay_ms() на более знакомую Arduino IDE функцию delay().
А вот функцию write/Write (в Delphi это одна и та же функция, в Си регистр имеет значение) "перевести" надо было бы, но для этого требуется ее определение, которое в приведенном куску кода отсутствует.
Что-то плагин кодовых вставок рюски буква калечит. Повторю открытым текстом:
RESET=0; // присвоение переменной RESET значения 0
delay(100); // ждем 100 миллисекунд
RESET=1;
delay(1000);
write(cmd,0x01); //reset sw // обращение к функции write
...
// и так далее ...
И еще что можно сказать по приведенному коду:
Функция write() используется как для передачи команд на дисплей (write(cmd,...);), так и для записи в его память данных (write(dat,...);). А внутри функции, соответственно, будет иметься логическое ветвление - в зависимости от значения первого операнда будут исполняться последовательности необходимые для отправки команд (в т.ч. дергаться соответствующие ножки дисплея), либо засылаться данные.
Но это пока что лишь предположение - для обретения твердой уверенности необходимо посмотреть на объявление этой функции.
Вот еще пример от этого дисплея... я совсем запутался:(
А как вообще указать куда что слать?
Нашел даташит на контроллер!
void LCD_init (void) //Инициализация
{
asm("cli");
SPI_high();
PORTE|=0x08;
LCD_CS;
LCD_COM;
_delay_ms(20);
LCD_COM;
write_SPI(0x01); //Software Reset
_delay_ms(60);
write_SPI(0xC6); //INIESC - Initialize the Settings inside the IC
_delay_ms(12);
write_SPI(0xB9); //REFSET - Set the states inside the IC
LCD_DAT;
write_SPI(0x00);
LCD_COM;
write_SPI(0xB6); //Display Control -
LCD_DAT;
write_SPI(0x57); //Generator Frequency
write_SPI(0x80); //N-line inversion OFF
write_SPI(0x96); //2 Div osc on idle, Bias 1/7, place on bottom, 104x82, Display Duty 1/82
write_SPI(0x00); //Duty 1/84
write_SPI(0x00);
write_SPI(0xFF); //Duty 1/82
write_SPI(0x00);
LCD_COM;
write_SPI(0xB3); //Gray Scale position set 0
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x07);
write_SPI(0x0E);
write_SPI(0x15);
write_SPI(0x1C);
write_SPI(0x23);
write_SPI(0x2A);
write_SPI(0x31);
write_SPI(0x38);
write_SPI(0x3F);
write_SPI(0x46);
write_SPI(0x4D);
write_SPI(0x54);
write_SPI(0x5B);
write_SPI(0x62);
write_SPI(0x69);
LCD_COM;
write_SPI(0xB4); //Gray scale position set 1
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x1F);
write_SPI(0x2F);
write_SPI(0x3F);
write_SPI(0x4F);
write_SPI(0x5F);
write_SPI(0x6F);
write_SPI(0x7F);
write_SPI(0x8F);
write_SPI(0x9F);
write_SPI(0xAF);
write_SPI(0xBF);
write_SPI(0xCF);
write_SPI(0xDF);
write_SPI(0xEF);
write_SPI(0xFF);
LCD_COM;
write_SPI(0xB5); //Set the Gray scale position set by default
LCD_DAT;
write_SPI(0x02); //SET1
LCD_COM;
write_SPI(0xBD); //Common output driver select
LCD_DAT;
write_SPI(0x00); //
LCD_COM;
write_SPI(0xBE); //Power Control
LCD_DAT;
write_SPI(0x1C);
LCD_COM;
write_SPI(0x11); //Sleep Mode OFF
_delay_ms(1);
write_SPI(0xBA); //LCD drive voltage
LCD_DAT;
write_SPI(0x6D); //Цифровое значение напряжения - 108
write_SPI(0x03); //всегда 0x03
LCD_COM;
write_SPI(0x25); //Write Contrast
LCD_DAT;
write_SPI(0x39); //Уровень контрастности - 57
LCD_COM;
write_SPI(0xB7); //Temperature gradient for LCD
LCD_DAT;
LCD_UNCS_CS;
write_SPI(0x03); //-0.2%/C
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
LCD_COM;
write_SPI(0x03); //Display Booster ON
_delay_ms(60);
write_SPI(0x20); //Inversion OFF
//write_SPI(0x30); //Set the partial area
//LCD_DAT;
//write_SPI(0x00); //Начало - 0
//write_SPI(0x00); //Конец - 0
//LCD_COM;
//write_SPI(0x33); //Vertical scroll definition
//LCD_DAT;
//write_SPI(0x00); //Верхняя не прокручиваемая область
//write_SPI(0x00); //Количество линий для прокрутки
//write_SPI(0x53); //Нижняя не прокручиваемая область
//LCD_COM;
//write_SPI(0x37); //Vertical scroll start address
//LCD_DAT;
//write_SPI(0x00);
//write_SPI(0x00);
//LCD_COM;
write_SPI(0x3A); //Interface Pixel Format
LCD_DAT;
write_SPI(0x03); //12 bit/pixel
VideoMode=LCD_4096CL;
LCD_COM;
write_SPI(0x2D); //Set colors for 256 colors mode
LCD_DAT;
write_SPI(0x00); //RED 0
write_SPI(0x0F); //RED 1
write_SPI(0x3F); //RED 3
write_SPI(0x6F); //RED 4
write_SPI(0x9F); //RED 5
write_SPI(0xCF); //RED 6
write_SPI(0xFF); //RED 7
write_SPI(0x00); //GREEN 0
write_SPI(0x0F); //GREEN 1
write_SPI(0x3F); //GREEN 3
write_SPI(0x6F); //GREEN 4
write_SPI(0x9F); //GREEN 5
write_SPI(0xCF); //GREEN 6
write_SPI(0xFF); //GREEN 7
write_SPI(0x00); //BLUE 4
write_SPI(0x55); //BLUE 5
write_SPI(0xAA); //BLUE 6
write_SPI(0xFF); //BLUE 7
LCD_COM;
write_SPI(0x36); //Memory access method
LCD_DAT;
write_SPI(0x00); //Default memory access method
LCD_COM;
write_SPI(0x2B); //Page address set
LCD_DAT;
write_SPI(0x00); //Start page at 0x00
write_SPI(0x51); //End page at 81
LCD_COM;
write_SPI(0x2A); //Column address set
LCD_DAT;
write_SPI(0x00); //Start page at 0x00
write_SPI(0x64); //End page at 100
LCD_COM;
write_SPI(0x2C); //Write data into display RAM
LCD_DAT;
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
write_SPI(0x00);
LCD_COM;
write_SPI(0x00); //NOP
write_SPI(0x29); //Display ON
LCD_UNCS;
asm("sei");
Если еще интересно - сегодня наваял скетч для ардуины для дисплея LPH8731 с Siemens A60, C60, .... Долго мучился, но работает. Код не оптимизирован. Библиотеки пока не использовал. На данный момент еще экпериментирую с контрастностью - не удовлетворяют цвета. Буду рад любым советам по поводу доработки скетча.
Скейтч работает. Но дисплей походу полумертвый, полосы имеюсться:(
Буду рад видить новые версии скейтча!)
Принесли мне два сименса один А65.. другой такой же похожий, а в них дисплеи LPH8731-3C и LPH9116-1 Как я понял, контролер у них один.. S1D15G14 .. Есть желание использовать их с Ардуиной, (есть Мега 1280) .. Три дня и ночи читал форумы и всякие примеры.. но пока туман в голове.. вроде как бы люди их используют, но как бы не совсем.. в основном темы переходят на другие модели.. Хорошо бы, если библиотеки и прочее было бы.. чтобы можно было с ними (с дисплеями) поработать... заказал себе еще дисплей нокия 5110.. и ЖК индикатор WH1602B надо наверное сперва поучиться на простых ..
А не подскажите, как переписать данное на использование SPI.
Вот функция отправки на экран, но хотелось бы использовать SPI.
Тема давняя, но всё же интересно псмотреть как всё устроенно без библиотек
Спасибо LALOV, огромную работу проделал!
Могу добавить, что можно передавать данные подряд указав область 0-80, и 0-100,
а потом подряд только передача данных (цвета) 8080 раз
так и зальём весь экран, цвет можно передавать разный
будет работать намного быстрее
Ещё вынес часть кода в две подпрограммы: инициализацию и заливку.
Привожу переделанный код , может кому поможет:
Объясните мне пожалуйста как обычный текст можно вывести?
Подскажите как выводить текст на экран ? Хочу взять за основу вариант на СИ но как реализовать это на ARDUINO не знаю! Помогите!
Вот сылка на библиотек на си http://cxem.net/mc/mc218.php
Чужую библиотеку переделывать нет желания :(
Вывод буковок делал сам, мне их не много надо было ;)
Вот подпрограммку навоял для вывода одного символа, может кому поможет
Ей надо передать: (символ, позицию Х, позиция Y, цвет буквы, цвет фона)
Понимаю, что хочеться выводить словами и через библиотеки,
Но мне надо было быстро и всего несколько символов
На поиски убил много времени, так рабочего ничего не нашел
табличку со шрифтом я так понимаю в библиотеку сувать?
Я тогда все в одном делал, с подпрограммами
Шрифты в начале кода вставить, где константы
Подпрограмму с выводом символа 5х8 в хвост
Код проги с инициализацией смотрите в моем собщении от 27/04/2015
Вечер добрый.
Загрузил скетч(Шрифты в начале кода вставить, где константы. Подпрограмму с выводом символа 5х8 в хвост. Код проги с инициализацией в собщении от 27/04/2015), меняется белый на черный экран.
bb = byte (CHR [Chh][k]);
А "заливка экрана" работает?
Закиньте скетч из моего сообщения от "Пнд, 27/04/2015 - 14:17"
Раз в 1 сек перекрашивать дисплей будет
Если нет - то спаяли что-то не так
закинул - работает.
достал такой дисплей из сименс с60. значит есть шанс прикрутить к ардуино? У меня mega2560 первой версии. До кучи в тему, здесь один немец основываясь на этой статье запилил свой драйвер. на видео работает шустро. Тоже так хочу. чтобы устройство не казалось таким меееедлееееннным. А то даже сам телефон на этом дисплее не отличается скоростью.
PS. у меня Arduino Mega2560 + этот дисплей из сименс с60.
что-то я не увидел у немца собственного драйвера дисплея. вы видимо не совсем понимаете что такое драйвер дисплея.
программу для пересчета картинки он написал.
я понимаю что такое драйвер. просто он так свой труд назвал :) но работает здорово. буду копать его код.
Цитата из ваших ссылок "Библиотека (для CodeVisionAVR)"
Вы понимаете, что это значит?
В этой ветке обсуждается Ардуино
И да! Дисплей LPH8731-3C таки работал у меня с Ардуино
Цитата из ваших ссылок "Библиотека (для CodeVisionAVR)"
Вы понимаете, что это значит?
В этой ветке обсуждается Ардуино
И да! Дисплей LPH8731-3C таки работал у меня с Ардуино
Эээ. ну я только вчера узнал что Arduino это обвешанный Atmel процессор с загрузчиком от arduino и т.п. и что производитель этих процессоров предлагает свою среду разработки. но с Си я знаком не понаслышке, вот и собираюсь копать. У вас я смотрю после некоторых пассов получилось разобраться в отличиях в функциях тех и этих. вот и мне интересно.
PS. на правильное направление указали, спасибо. начну ка я с avr-gcc, потому, что не зря ж я учился :) а arduino -язык более высокого уровня (в правильном смысле! - поверх базиса AVR). Мне функционал нужен, а с include define и fuses я разберусь как-нибудь. всем добра.
https://drive.google.com/open?id=1bCkKSV9zpPAAtMq3zAqMvIk7so0ys60c
Всем привет! Что нужно для успешного старта дисплея не имея для него библиотеки? Есть дисплей от сименса м55 - LPH8731-3C. Подключил его как тут, дисплей там другой и библиотека не подошла, чему я и не удивился... В интернете находил как подключали такой дисплей к другим МК, но там вроде язык отличный от ардуино. Примеры инициализации там есть, но как это перенести в среду ардуино? И что еще нужно кроме инициализации?
http://cxem.net/mc/mc218.php
подскажите пожалуйста что здесь неправильно и как оптимизировать код:
Поделитесь пожалуйста библиотекой и тем как подключать датчики к дисплею.
подскажите пожалуйста что здесь неправильно и как оптимизировать код:
Спасибо я в этом не очень разбираюсь , собираю проекты в flprog по видео урокам!Поэтому решил спросить!
to Novi4ek
Вы написали : #include "LPH8731-3C.h"
А в следующем посте просите библиотеку
!?
я рабочую библиотеку так и не нашел. Искал дольше, чем сам написал пару строк.
Давно это было, смотрите выше
Эту библиотеку я переименовал так чтобы не путаться, а так она называлась вот так : LPH9116
to Novi4ek
Вы написали : #include "LPH8731-3C.h"
А в следующем посте просите библиотеку
!?
я рабочую библиотеку так и не нашел. Искал дольше, чем сам написал пару строк.
Давно это было, смотрите выше
Посмотрите мой пост - Ср, 09/09/2015 - 11:56 номер 25
Там все понятно расписано
написал пару строк вовсе не значит, что я написал или нашел библиотеку
http://www.c-cpp.ru/books/obyavlenie-peremennyh
С целыми понятно и так. Меня интересует конкретно этот пример. И переменная bbb.
Напишите пере bbb слово byte.