Не могу заставить работать PIC с ЖК WH1602C. Перепробовал все примеры из хелпа mikroC (4 бита, 8 бит), пробовал настраивать выводы по-своему, вводить задержки по 60 мс перед каждой командой - писать он отказывается. Единственное, чего мне удалось добиться - мигающий курсор в начале первой строки.
Моя схема отличается от той, что в примере, наличием резонатора 10 МГц вместо 8. В чём может быть дело? Это с дисплеем что-то или с моими руками?
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт окт 08, 2010 08:06:57
Встал на лапы
Зарегистрирован: Сб май 23, 2009 16:30:23 Сообщений: 139 Откуда: Санкт-Петербург
Рейтинг сообщения:0
Roman Venom писал(а):
Читайте даташит. Есть и по 8 есть и по 4(собсно отличие незначительно будет в коде.)Если использовать 8-ми битный интерфейс, то ЖКИ работает быстрее:).
Не всё так просто(((. У меня VFD дисплей HD44780 но со стандартом motorola-68. Передачу данных по 4-ём битам он не поддерживает. Вот даташит на него http://narod.ru/disk/25643475000/E-M202 ... A.pdf.html (размер 311 кб)
За вместо RS R/W и E, у него WR (он же R/W), SEL(он же Е), и пин BUSY, (насколько я понял используются только первые два) Временные диаграммы у него такие же, как и у HD44780, отличается только процедура инициализации.
По началу я думал, что он поддерживает 4-ёх битную шину. Но выводит он мне на экран всякую билеберду не синхронизированную, состоящую из первых четырех-пяти символов инициализации(происходит это потому, что на D0-D3 висят в воздухе, и он выводит их по адресу D0-D3 - 1111 D4-D7 - 0011(0001)
потом попросив у FUTABA нормальный даташит на дисплей, прочитав его, понял, что о 4-ёх битной шине там не слова, и соответственно он её не поддерживает.
Покурив я\гугл, пришел в выводу, что по 8-бит общается библиотека LCDSTK.lib и LCDSTK.h. Но схема подключения дисплея STK200 какаято пипец мудренная
собственно с ней вопрос, почему там, стоит такая развязка сигнала E? зачем надо тратить драгоценные лапы контроллера?
Ведь такая-же не пруха произойдет у того, кто решит выложить 5000р за дисплей http://www.chipdip.ru/product/m202md15aj.aspx (мне два бесплатно достались) и будет как и я надеяться, что дисплей без труда воткнеться в проект.
потом проблема номер два, и вообще изза чего весь сыр.
В этом девайсе используется кириллица, которой у меня на VFD нет. (это я понял по огрызочному даташиту на дисплей) Попросил я автора, скинуть мне на мыло прошивку с английским вариантом меню. Он сказал, что с английским нет. Но вот на тебе исходник, переведи, и будет тебе английский.
Исходник я перевел, в проекте протеуса всё работает и на меге16 и на меге128. тоесть английское меню есть. На макетке всё вышло куда хуже... Дисплей не поддерживает 4-х битную адресацию... + в программе уже прописаны некоторые порты для кнопок, датчиков и т.д. и пихать библиотеку STK не получаеться, ибо даже в ней поменять пины я не умею.
помогите разобраться. А то два дисплея валяются без толку. Может один кому презентую в питере...
----------(происходит это потому, что на D0-D3 висят в воздухе, ---------- а землить их не пробовал?
_________________ «Просите, и дано будет вам; ищите, и найдете; стучите, и отворят вам; ибо всякий просящий получает, и ищущий находит, и стучащему отворят». Матф.гл. 7, ст. 7—8
Не могу заставить работать PIC с ЖК WH1602C. Перепробовал все примеры из хелпа mikroC (4 бита, 8 бит), пробовал настраивать выводы по-своему, вводить задержки по 60 мс перед каждой командой - писать он отказывается. Единственное, чего мне удалось добиться - мигающий курсор в начале первой строки.
Моя схема отличается от той, что в примере, наличием резонатора 10 МГц вместо 8. В чём может быть дело? Это с дисплеем что-то или с моими руками?
Спасибо.
если PIC12-PIC16 прочитай http://radiohlam.ru/control/dot_matrix_LCD.htm просмотри как формируются задержки - таймером или подпрограммами цикла и тогда уж определи - как влияет кварц
_________________ «Просите, и дано будет вам; ищите, и найдете; стучите, и отворят вам; ибо всякий просящий получает, и ищущий находит, и стучащему отворят». Матф.гл. 7, ст. 7—8
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт окт 08, 2010 15:31:30
Встал на лапы
Зарегистрирован: Сб май 23, 2009 16:30:23 Сообщений: 139 Откуда: Санкт-Петербург
Рейтинг сообщения:0
Old Grumble писал(а):
----------(происходит это потому, что на D0-D3 висят в воздухе, ---------- землить их не пробовал?
вот, только сейчас, ради спортивного интереса попробовал...
один фиг. не инициализируется выводит на экран 4 символа какбы инициализации которые делает мега и затыкается. хотя он их вообще показывать не должен...
Блин такой вкусный экран... а заставить работать целая эпопея...
----------(происходит это потому, что на D0-D3 висят в воздухе, ---------- землить их не пробовал?
вот, только сейчас, ради спортивного интереса попробовал...
один фиг. не инициализируется выводит на экран 4 символа какбы инициализации которые делает мега и затыкается. хотя он их вообще показывать не должен...
Блин такой вкусный экран... а заставить работать целая эпопея...
1. Принципиально есть 2 подхода к управлению ЖКИ: -с поллингом (опросом состояния) -и с гарантированными задержками на срабатывание контроллера дисплея. В случае поллинга и/или чтения из ОЗУ контроллера вывод W/R - задействуется и участвует в работе. В случае гарантированных задержек его можно заземлять. 2. Даже если ЖКИ совсем нерусский его можно использовать путем прошивки первых 8-ми символов знакогенератора (в том числе и динамически) - т.е. одномоментно на дисплее не должно быть более 8-ми прошитых символов. (я пробовал прошивать псевдографику для отображения перемещения ползунка как бы громкости, баланса тембра и т.д.) 3. А если он выводит на дисплюй то чего даешь - нафиг ваще инициализировать/программировать - получается что протокол-то инициализации другой, не от 44-го
_________________ «Просите, и дано будет вам; ищите, и найдете; стучите, и отворят вам; ибо всякий просящий получает, и ищущий находит, и стучащему отворят». Матф.гл. 7, ст. 7—8
По началу я думал, что он поддерживает 4-ёх битную шину. Но выводит он мне на экран всякую билеберду не синхронизированную, состоящую из первых четырех-пяти символов инициализации(происходит это потому, что на D0-D3 висят в воздухе, и он выводит их по адресу D0-D3 - 1111 D4-D7 - 0011(0001).
Ну да. В даташите нету выбора интерфейса...ЖКИ не русский. Так что придётся использовать 8 бит.
Цитата:
В этом девайсе используется кириллица, которой у меня на VFD нет
Я скачал с радиокота прогу хорошую. Пишешь слово - оно тебе 16-ричный код. Удобно. Твой ЖКИ должен скушать этот код.
Цитата:
помогите разобраться
Не знаю, возможно ли прошить контроллер ЖКИ так хитро, чтобы он стал понимать передачу по 4-м битам... Может, какие-то коты-кулибины такое и вытворяли. Ваще можно купить нормальный ЖКИ с 4-х битным интерфейсом, а те потом заюзать под 8-ми битный:)
Читайте даташит. Есть и по 8 есть и по 4(собсно отличие незначительно будет в коде.)Если использовать 8-ми битный интерфейс, то ЖКИ работает быстрее:). Не всё так просто(((. У меня VFD дисплей HD44780 но со стандартом motorola-68. Передачу данных по 4-ём битам он не поддерживает. Вот даташит на него http://narod.ru/disk/25643475000/E-M202 ... A.pdf.html (размер 311 кб)
Дисплей канешна жутко интересный - раньше надо быдо датушиту мне глянуть - инициализации по датушиту не требует система команд больше похожа на принтер (горизонтальная и вертикальная табуляция), русских нет адрес второй строки смещен - 0х14. Ваще очень простая система команнд - секция 3-2 даташитты Яркость (dimming) меняется, понятно, повторюсь на экране может быть 4 прошитых (определенных пользователем ) любых символа define UFO0~3. По поводу проги - написал слово она тебе код в этом случае не проходит (русских буков нету), Однако по даташиту она еще и прет в обычном rs232 - (serial)! где используется всего 2 ноги )) По поводу 4-8 ног переделка - хватает ног - переписывай софт, не хватает - пробуй rs232 и переписывай софт, или можно конечно сделать адаптер на корпусе логики и паре регистров для конвертации протокола 4-х проводного в 8-ми проводной, ну типа вначале пишешь полбайта в один 4-х разрядный регистр, потом 2-е полбайта - в другой , потом отдаешь байт на жки...... но это гемор конкретный - проще все таки на serial перейти
_________________ «Просите, и дано будет вам; ищите, и найдете; стучите, и отворят вам; ибо всякий просящий получает, и ищущий находит, и стучащему отворят». Матф.гл. 7, ст. 7—8
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт окт 12, 2010 17:44:47
Встал на лапы
Зарегистрирован: Сб май 23, 2009 16:30:23 Сообщений: 139 Откуда: Санкт-Петербург
Рейтинг сообщения:0
Уф, спасиба всем. Но я не выдержал. и купил обычный ЖК дисплей, Ибо скоро будет холодно, хочется все сделать пока еще тепло. Но потом обязательно вернусь к этим злосчастным дисплеям)))
Не могу заставить работать PIC с ЖК WH1602C. Перепробовал все примеры из хелпа mikroC (4 бита, 8 бит), пробовал настраивать выводы по-своему, вводить задержки по 60 мс перед каждой командой - писать он отказывается. Единственное, чего мне удалось добиться - мигающий курсор в начале первой строки.
Моя схема отличается от той, что в примере, наличием резонатора 10 МГц вместо 8. В чём может быть дело? Это с дисплеем что-то или с моими руками?
Спасибо.
Привет TripleKill и все читающие эту ветку. Столкнулся и я с такой же проблемой как и ты. Вообщем перекопал кучу литературы, моделировал в протеусе и ничего у меня не выходило. Дисплей включался и отображал одну цифру по середине экрана, после долгих манипуляций получилось выводить и другие цифры,но только до конца ряда. И ну нечего с ним не сделать. Управлению дисплей не поддавался. Шину использовал 4-ёх битную. Бит занятости я не проверяю(не хватает выводов портов). Вообщем время потерял массу. Бросил всё и решил перевести оригинальный datasheet. Там инициализация очень классно описана. Сделал, как там рекомендуется и Ура! ЗАРАБОТАЛО! Так что если нужно есть исходник и модель в протеусе для PIC16F84A Всё работает. Правда на железе ещё не опробовал.
может кто встречал макетку или печатку(одностороннюю) какого нибудь устройства ATmega8(dip или smd) и WH1602, что бы одна плата была над другой и соединялись штырковым разъемом?
Простите, что вклиниваюсь в тему. Только начинаю работать с микроконтроллерами. Хочу реализовать простейший пример сопряжения AVR2313 и WH1602D (вывод заданной строки символов), но при этом полностью разобраться и понять, что к чему. Кое-что нарыл в инете, но мучают несколько вопросов: 1) А какая все-таки информация передается по линиям связи D0-D7 от AVR-ки к ЖКИ? Адрес требуемого для вывода на индикатор символа, записанного в CGRAM или что-то другое? 2) Если для латиницы и цифр ASCII коды совпадают с зашитыми в знакогенератор ЖКИ, то где эти коды можно раздобыть? 3) Если знакогенератор прошит только латиницей и цифрами, можно ли зашить в него кирилицу или собственный символ и как это сделать? Прошу помочь ответами, ссылками, буду признателен за любую информацию.
Простите, что вклиниваюсь в тему. Только начинаю работать с микроконтроллерами. Хочу реализовать простейший пример сопряжения AVR2313 и WH1602D (вывод заданной строки символов), но при этом полностью разобраться и понять, что к чему. Кое-что нарыл в инете, но мучают несколько вопросов: 1) А какая все-таки информация передается по линиям связи D0-D7 от AVR-ки к ЖКИ? Адрес требуемого для вывода на индикатор символа, записанного в CGRAM или что-то другое? 2) Если для латиницы и цифр ASCII коды совпадают с зашитыми в знакогенератор ЖКИ, то где эти коды можно раздобыть? 3) Если знакогенератор прошит только латиницей и цифрами, можно ли зашить в него кирилицу или собственный символ и как это сделать? Прошу помочь ответами, ссылками, буду признателен за любую информацию.
http://easyelectronics.ru/avr-uchebnyj- ... 44780.html - По этой ссылке автор как-то непонятно описывает синхронизацию(то по перепаду уровня на Е от единицы к нулю, то наоборот)Перекопал кучу информации и нигде не встречал ничего подобного!!!!В оригинальном даташите тоже написано, для того чтобы произвести синхронизацию необходимо установить Е в 1, а потом сбросить в 0. Советую оригинальный даташит, там всё классно описано.
доброго времени суток уважаемые!НУЖНА ПОМОЩЬ!!! собрал схему тахометра рис. прилагается.Все работает нормально обороты считает правильно, НО есть проблема пи выводе показаний на жки: допустим было 1001 оборот ,а стало 500 оборотов на жки показует 5001 то есть надо как-то сделать что-бы при переходе с четырехзначных чисел на трехзначные очищался жки. (когда пишу lcd_clear(); в основной цикл-помогает но постоянно мигает жки)
void taxo( )
{ lcd_gotoxy(0,0); //идем в точку sprintf(lcd_buffer,"%u" , oborot ); lcd_puts(lcd_buffer); //виводим количество оборотов в минуту lcd_gotoxy(5,0); //идем в точку lcd_putsf("\x30\xA0\x30\x50\x2f\x4d\xa5\x48"); //ВЫВОДИМ СЛОВО {ОБОР/МИН}
опять я с вопросами... нужно последовательным нажатием одной кнопки выводить числа 100-7200 с шагом 100 на ЖКИ. Ломал голову как сделать так, чтобы можно было использовать только такую табличку: speed_value_table: ; 1 2 3 4 5 6 7 8 9 0 .db 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30 ;
Опрос кнопки просто счётчик со сбросом на 72.
Как я примерно представляю себе это...
Допустим....
1.нажали на кнопку 2.в счётном регистре 1 3.вызвать подпрогу декодировки 4.вывести на ЖКИ
Собсно для меня сложность представляет это самое декодирование. Какими действиями по числу 1 получить в регистре последовательность 3-х или 4-х адресов памяти. Возможно ли это? До этого выводил последовательно элементы таблицы такими подпрогами: next_symblol_1: ; * ldi ZH,High(word_stop*2); * ldi ZL,Low(word_stop*2) ; * ; * add ZL,r22 ; * lpm ; * mov work,r0 ; * call write ; * inc r22 ; * cpi r22,14 ; * brne next_symblol_1; * clr r22 ; *
А как извлекать из заблицы много символов не по порядку я не догадываюсь .
Конечно можно ввести 72 таких подпрограммки, но это было бы крайне нерационально.
Такие вещи ведь реализованы во многих устройствах, надеюсь кто-то сталкивался.
используем 2 счётчика. Один считает сотни(count1), другой тысячи(count2). Десятки и единицы будут всё время 0, т.е. их можно просто приписать.
;опрос кнопки: sbic PinA,4;перепрыг если нажата rjmp exit;повторная проверка otpusk: sbis PinA,4;перепрыг если отпущена rjmp otpusk;повторная проверка inc count1,0;инкремент cpi count1,10; сравнить с 9 brne вывод на ЖКИ;если не равно - вывести на ЖКИ. clr count1 inc count2 cpi count2,7; сравнить с 7(больше 7 не будет тысячных) brne вывод на ЖКИ_2
вывод на ЖКИ_1:
ldi ZH,High(табличка_от_0_до_9*2)+count1;прибавляем к адресу 0 значение счётчика, в данном случае 1. Адресу 1 в табличке соотв. 16-рич.код числа 1. ldi ZL,Low(табличка_от_0_до_9*2)+count1;так же. add ZL,count1 lpm mov work,r0; переносим код числа 1 в рабочий рег. call write(вывод числа 1+ вывод двух нулей)
Вопрос, можно ли к метке таблички прибавить константу? Или надо єто делать через регистр?
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения