LCD12864 (ST7920) на типа arduino
- Войдите на сайт для отправки комментариев
Вс, 13/11/2011 - 21:44
Вот тут написано:
Wiring: EN = Arduino Pin 18 RS = Arduino Pin 17 RW = Arduino Pin 16 D7 = Arduino Pin 7 D6 = Arduino Pin 6 D5 = Arduino Pin 5 D4 = Arduino Pin 4 D3 = Arduino Pin 11 D2 = Arduino Pin 10 D1 = Arduino Pin 9 D0 = Arduino Pin 8 CSEL1 = Arduino Pin 14
И там же ниже
setPins(int tRS, int tRW, int tD7, int tD6, int tD5, int tD4, int tD3, int tD2, int tD1, int tD0) Pass a command directly to the screen tRS = Register Set tRW = Read/Write tD7 = Data line 7 tD6 = Data line 6 tD5 = Data line 5 tD4 = Data line 4 tD3 = Data line 3 tD2 = Data line 2 tD1 = Data line 1 tD0 = Data line 0
В списке второй команды отсутсвуют EN и CSEL1. Получается, я не могу перенести их с 18 и 14 пина ардуины?
Второй вопрос. Как я могу работать с этим дисплеем в режиме с меньшим колвом пинов, пусть и медленнее? Есть библиотека? Контроллер ST7920
В списке второй команды отсутсвуют EN и CSEL1. Получается, я не могу перенести их с 18 и 14 пина ардуины?
Второй вопрос. Как я могу работать с этим дисплеем в режиме с меньшим колвом пинов, пусть и медленнее? Есть библиотека? Контроллер ST7920
Загляните в библиотеку, найдите там функцию LCD12864::selectCS1(void) - вот с ее помощью и "перенесете их".
Вроде бы есть библиотека для работы по последовательному протоколу (три пина всего заняты) с подобным дисплеем. Если китайский язык не пугает - пробуйте.
step962, огромное спасибо!
как прийдет дисплей, буду заморачиваться. По поводу последовательного - сильно страдает быстродействие? Я вроде в своем проекте разрулил колво портов мультиплексорами и сдвиговым регистром, как то так: http://my.jetscreenshot.com/1474/20111113-py0w-161kb . Если можно, "зацените" на предмет работоспособности всего этого, там вроде все понятно должно быть.
Еще вопрос по дисплею, задал его продавцу но пока ответа нет.. Несовпадают названия пинов на проданном и в описании библиотеки. Что то нашел по англоязычным форумам, но не все..
по сериал нашел еще http://nopaste.info/5fa51041a7.html
DB0..7 - DataBus - 8 линий для переллальной передачи данных. Соответственно на Arduin'e - D0...7
CSELx Arduin'ы - скорее всего имеется в виду линия выбора микросхемы (выбор высоким или низким уровнем - надо смотреть в даташите, какой из выводов контроллера отвечает за его активацию при подаче соответствующего сигнала - также необходимо смотреть в даташите).
По линии R/W (или RW) контроллер указывает драйверу дисплея, в каком режиме тому следует работать - чтение или запись.
Не удалось найти даташита на ST7920? Ищите в сети информацию о том, с каким из LCD-драйверов он совместим - скроее всего, будет 100%-соответствие.
Ищем, например, по магическому сочетанию "12864 datasheet", среди прочего натыкаемся на:
http://kazus.ru/datasheets/search/go/?query=12864&sklad=yes
качаем любой из них, сравниваем со своей железякой, радуемся если совпало по размерам, расположению пинов, деталям описания...
Попробуйте еще искать по "12864 application notes", получите еще кучу ссылок, побродив по которым, рано или поздно наткнетесь на что-то типа.
Информации в Интернете выше крыши! На любой вкус и карман. Только не ленитесь учиться...
step962 огромное спасибо! Особенно за алгоритм поиска :)
У меня есть пара дисплеев с голубой подсветкой, я их прекрасно запустил. из внешней обвязки переменник на 10К для регулировки яркости. я подключил всё к меге2560 через макетку. у меня на дисплее не было CSEL1, но был PSB - режим передачи, его подтянул к +5В. пин ресет 10к резистором согласно даташиту. буду вопросы пишите что к чему
У меня есть пара дисплеев с голубой подсветкой, я их прекрасно запустил. из внешней обвязки переменник на 10К для регулировки яркости. я подключил всё к меге2560 через макетку. у меня на дисплее не было CSEL1, но был PSB - режим передачи, его подтянул к +5В. пин ресет 10к резистором согласно даташиту. буду вопросы пишите что к чему
Спасибо, прийдет - буду писать! Если не получится :)
Дисплей еще не пришел но вопрос: верно ли это? ))
Напоминаю - контроллер ST7920
аналоговые же выходы не нужны для него?
[...]
аналоговые же выходы не нужны для него?
А почему бы и нет?
Магические слова на 6-й странице даташита на аналогичный контроллер:
"Power Supply for LED dacklight"
Еще вариант из примерно такого же контроллера (9-я страница):
"A0 - Control/Data Select Signal"
А почему бы и нет?
они нужны мне для других целей)))
"Power Supply for LED dacklight"
думаю, резистора вполне хватит)
"A0 - Control/Data Select Signal"
знать бы, что это значит.. что за дата, откуда и куда селект..
cс даташитом на конкретно этот целая засада..
они нужны мне для других целей)))
Здесь определяющим является не то, что хотите ВЫ, а то, что хочент ОН (дисплей) ;)
думаю, резистора вполне хватит)
Обычно так и поступают
знать бы, что это значит.. что за дата, откуда и куда селект..
Есть на этой линии сигнал - данные на шине D0...D7 воспринимаются как данные, нет - как команда.
Ну или наоборот
с даташитом на конкретно этот целая засада..
Не печальтесь раньше времени. Контроллеров много, а протоколов - раз-два и обчелся. Дисплейчик и контроллер к нему сляпаны какими-нибудь малоизвестными фирмами, которым важно, чтобы их продукцию покупали. Поэтому они почти со 100-процентной вероятностью они взяли самую распространенную распиновку и столь же распространенную систему команд.
а то, что хочент ОН (дисплей) ;)
ну тут конечно :))) Но вроде в обычном режиме (4-8бит парралель) и в реализации "только вывод) не требует он аналогового?
Есть на этой линии сигнал - данные на шине D0...D7 воспринимаются как данные
опять же - подтянуть на +5В значит?
почти со 100-процентной вероятностью они взяли самую распространенную распиновку
да и правда, дисплей еще не приплыл а я уже панику поднимаю. Спасибо!
перенес с соседней темы
http://nopaste.info/5fa51041a7.html
http://www.youtube.com/watch?v=m_Rn253_z3o
http://www.dfrobot.com/image/data/FIT0021/LCD12864RSPI.rar serial interface
http://www.dfrobot.com/image/data/FIT0021/LCD12864R.rar parallel interface
там ток придется русские буквы самому в свою библиотеку собрать http://mikenz.geek.nz/blog/1006/mindkits-128x64-graphic-lcd-and-arduino/
Есть на этой линии сигнал - данные на шине D0...D7 воспринимаются как данные
опять же - подтянуть на +5В значит?
Нет - тут уж придется линию выделить. Ведь дисплей не только данными кормить надо, но и командами.
значит, в http://my.jetscreenshot.com/1474/20111117-jvxm-26kb.jpg в принципе все верно? все пины - цифровые? Ну так уже, чтоб успокоится и поверить в себя :)
Ну, это лишь выдержка из таблицы. Это примерно как через дырочку в газете по топографической карте ориентироваться.
Сколько всего пинов у дисплея? 20? 30? Другое количество?
step962
20 штук :)
никаких аналоговых входов ардуино при подключении дисплея 100% не надо. Там может быть опечатка. На пинах дисплея может быть V0, что есть регулировка контраста. В моем дисплее сзади было напаянно(с завода) переменник мелкий, которым реглировался контраст. Я лишь притаранил обычный переменник для регулировки яркости светодиодной подсветки. У меня дисплей с dfrobot.
На пинах дисплея может быть V0, что есть регулировка контраста.
PIN3---VO/VDD/NC
пин ресет 10к резистором
тоже на +5? остальное вроде в теории понятно
блин, когда же приедет дисплей )) у меня уже печатка проекта нарисована )))
нашел подспорье. Чтоб не потерять:
еще в помощь инфа: точно такой же дисплей на ебей с нормальным описанием
да помоему ресет на 10К сопротивление на +5В
Есть тут и PSB
Его надо из даташита накопать, там паралельное или последовательный режим передачи данных, его или к + или к нулю.
режим вроде параллельный, но точно неясно - все даташиты на китайском) Ну методом тыка я же определю надеюсь?))
Методом тыка - едва ли.
Лучше перебором. Существует не так много вариаций контроллеров для 20-пиновых (мне встречались еще 24- и 30-пиновые) графических дисплеев 128х64. Пока ждете "свой", скачайте 5-6 даташитов (а еще лучше - демонстрационных исходников) для различных контроллеров, рулящих подобными дисплеями. С весьма высокой вероятностью один из них подойдет. Ведь связь устройства с внешним миром - это не та область, где каждый мелкий производитель пытается стать уникальным. Это могут позволить себе лишь монстры типа Sony, Apple или Microsoft. А дядюшка Минь из провинции Сычуань скорее всего лепит клон наиболее распространенного дисплея.
Пришел, начинаю паять. Правда напился в какашку) Если засну пред паялкой, завтра закончу и отпишусь)
В общем то, заработал, но не могу нормально вывести битмап на него. Размер картинки 122 на 49, перевел в индексированное с палитрой 1бит, подправил, сохранил в .h
Использую библиотеку LCD12864.h. Закинул свой результат в LCDSprite.h
Написал скетч
Рисует только в верхней половине экрана, накладывая нижнюю поверх. Куда покопать посоветуете?
Я немного разобрался. Необходимо заполнять буфер в два захода - первая половина экрана и вторая, потом по отдельности рендер. Решил доработать функцию DrawSprite в библиотеке - она расчитанна только на вывод одного спрайта из файла LCDSprite.h
Я добавил во входные аргументы функции параметры ширины и высоты, и встрял на добавлении параметра - переменной (массива) содержащей обственно битмап. Используется тип prog_char с добавлением PROGMEM, как я понял, для хранения данных в области SRAM. Однако отсутствие базовых знаний си делает свое дело..
Как мне объявить правильно эту переменную (массив) и передать ее в функцию?
Вот объявление:
Вот функция:
Не компилится - no matching function for call. Подскажите, как правильно организовать передачу массива в функцию?
Разобрался. void DrawSprite(uint8_t xPos, uint8_t yPos, uint8_t swidth, uint8_t sheight, prog_char* header_data);
в двух файлах - .h и .cpp (про первый где объявление функции я забыл). также пришлось убрать const из объявления.
Спасибо!
Да.. Хороших библиотек под ST7920 нет. Куча поделок, которые надо изучать и перерабатывать под себя.. Накидаю ссылок
http://www.hackchina.com/en/r/165941/Lcd12864.c__html
http://www.arduino.cc/playground/Code/LCD12864
http://www.dfrobot.com/image/data/FIT0021/LCD12864RSPI.rar
http://mikenz.geek.nz/blog/1006/mindkits-128x64-graphic-lcd-and-arduino/
А этой ссылки (www.crystalfontz.com/controllers/ST7920.pdf) почему нет?
step962, потому что на моем уровне даташит бесполезен) Я попробую взять то что мне надо из разных библиотек, свой фонт рисовать прийдется
получил экран 12864 128x64 Graphic LCD Display module Controller: ST7920
вроде похоже на то что тут обсуждается .
если я правильно понял то к ардуино надо подключить только 8 проводов данных db0 - db7 rs и psb подключить к +5v а rst и rw посадить на -
и еще , правильно ли я понял что этот экран может работать и параллельным и последовательным интерфейсом ?
вот ссылка на продавца http://www.ebay.com/itm/12864-128x64-Graphic-LCD-Display-module-Free-pin-header-Arduino-51-284-/250953075560?pt=LH_DefaultDomain_0&hash=item3a6df80b68
mitos я встречал видео о работе по SPI, но примеров не находил
попробовал подключить свой экран по spi - результат нулевой , видимо не умеет так работать .
часть ссылок что есть в этой теме померли , не могли бы вы кинуть любой пример который работает на таком экране с указанием какой пин экрана куда на ардуине подключать , желательно для ардуино мега .
проверить надо и фидбек продавцу оставить , а время уже почти вышло .
заранее спасибо !
mitos я встречал видео о работе по SPI, но примеров не находил
или надо по парралельному?
http://www.arduino.cc/playground/Code/LCD12864
как вот здесь - все работает
у меня на экране нет CSEL1
все что есть :
и все .
data pins 8
RST+5v 10kohm
CSEL1(PSB)
RS/DI 1
RW 1
E 1
VDD +5
VSS GND
mitos я встречал видео о работе по SPI, но примеров не находил
я идиот, читайте второе сообщение )
whoim, спасибо !
правильно ли я понял , на rst надо дать логический 0
а на rs rw и e логическая 1 ?
и главное , где прописаны адреса пинов и можно ли их поменять на другие ?
rs на плюс через 10К
остальные к пинам ардуино согласно библиотеке)) это у меня колво контактов подсчитывалось сколько надо
прописаны - читай выше библиотеку
ДВ.
Никто на этом экранчике не делал меню под энкодер?