Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega8535 и LCD (HY-1602B4, он же ABC016002G)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
~=InSpe©tor=~
Доброго времени суток...
На днях приобрёл ЖКИ HY-1602B4, он же ABC016002G фирмы AV-DISPLAY (Как я узнал намного позже...) (других вариантов 16x2 небыло)... Попытался подключить его по 4-х битной шине, написал в CodeVision примитивную программу с помощью мастера - инициализация и вывод знаменитого Hello, World!!! При подключении ЖКИ к МК по стандартной схеме (1-земля, 2 питание, 3-контраст, управление, данные, подсветка) оказалось что работает только подсветка... и контроллер стал греться.... Попытки найти ДатаШит показали нулевой результат... его нет НИГДЕ.... визуально осмотрев индикатор, я увидел что ножки 12,13 и 14 связану более толстыми дорожками с остальной схемой... причём 14-я ножка ЯВНО КОРПУС.... недолго думая я переключил питание с первых трёх ног туда... и о чудо - показалась верхняя строка.... как я понял так и должно быть при подачи питания.... (ну якобы для настройки контрастности).... Совершенно случайно я нашел страничку, где было указано что HY-1602B это старое название ABC016002G.... нашел сайт компании, и скачал наконец таки даташит (Приложен к теме).... Теперь уже с заведомо правильной распиновкой подключил индикатор..... НИЧЕГО.... Перерыв кучу документации попробовал полностью написать вручную 4-х битный обмен (инициализацию и вывод ХОТЯБЫ КУРСОРА).... индикатор в игноре.... смустя пару минут при питании, на экране начинается тупняк.... начинает мигать правая половина, просто хаотичные строки.... (как будто он на статику реагирует....).... Попробовал перепаять под 8-ми битную шину..... таже история..... никакой реакции..... в ДатаШите написано что контроллер KS0066 (поидее совместимый с HD44780)... помогите разобраться....
Желательно увидеть программу да СИ (для КодеВижен).....
Подключение выглятит так: Ножки данных все соответственно на порте C контроллера, ножки RS, R/W и E на первых трёх битах порта D соответственно....
Микроконтроллер ATmega8535 - кварц 16 МегаГерц
Aesthete Animus
Цитата(~=InSpe©tor=~ @ Mar 16 2008, 23:54) *
Доброго времени суток...
На днях приобрёл ЖКИ HY-1602B4, он же ABC016002G фирмы AV-DISPLAY (Как я узнал намного позже...) (других вариантов 16x2 небыло)... Попытался подключить его по 4-х битной шине, написал в CodeVision примитивную программу с помощью мастера - инициализация и вывод знаменитого Hello, World!!! При подключении ЖКИ к МК по стандартной схеме (1-земля, 2 питание, 3-контраст, управление, данные, подсветка) оказалось что работает только подсветка... и контроллер стал греться....

Проверьте, не замкнули ли Вы Uo (управление контрастностью) на питание. В противном случае, Вы рискуете пожечь индикатор - что я и сделал в свое время wink.gif
Цитата(~=InSpe©tor=~ @ Mar 16 2008, 23:54) *
Попытки найти ДатаШит показали нулевой результат... его нет НИГДЕ....

В поисках даташита рекомендую обратиться к отечественным аналогам этих индикаторов - к МЕЛТам. К примеру, в этой таблице Вы сможете найти аналог вашего индикатора, а здесь находится документация на него с подробно расписанными времянками сигналов и порядком инициализации.
~=InSpe©tor=~
Цитата(Aesthete Animus @ Mar 17 2008, 01:55) *
Проверьте, не замкнули ли Вы Uo (управление контрастностью) на питание. В противном случае, Вы рискуете пожечь индикатор - что я и сделал в свое время wink.gif

Вот этого я и боюсь.... просто при первоначальном подключении с неправильной распиновкой на этой ножке была ножка шины данных.... значит там могда быть логическая единица.... значит питание....
Ну еслиб он сгорел он бы выдавал развёртку первой строки при подаче питания?.... просто на подачу питания он реагирует нормально.... когда убираю замлю с Uo на экране всё пропадает..... (ну как бы не под прямым углом видно занкоместа.... ну как бы контрастности нет....) Вот.... так что может быть еще не всё потеряно.... crying.gif
Aesthete Animus
Цитата(~=InSpe©tor=~ @ Mar 17 2008, 02:02) *
Ну еслиб он сгорел он бы выдавал развёртку первой строки при подаче питания?.... просто на подачу питания он реагирует нормально.... когда убираю замлю с Uo на экране всё пропадает..... (ну как бы не под прямым углом видно занкоместа.... ну как бы контрастности нет....) Вот.... так что может быть еще не всё потеряно.... crying.gif

Если на экранчики при включенном питании знакоместа чуть серенькие, то скорее всего индикатор живой. Советую еще раз внимательно проверить разводку индикатора.

В качестве примера (сразу замечу, далеко не лучшего!) могу предложить свой исходник для работы с индикатором для AVR GCC.
Нажмите для просмотра прикрепленного файла
Чтобы его использовать, подключаете A0 к PD2, RW к PD3, E к PD4 - эти три пина составляют управляющий порт. Потомо подключаете DB4...DB7 индикатора к PC0...PC3 контроллера соответственно - это шина данных.

Работа с индикатором выглядит так:
Код
//////////////////////////////////////////////////////////////////////////
// Инициализация LCD    
lcd_init();    
fprintf(&lcd_out, "Hello, World!");
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~=InSpe©tor=~
При подаче питания горит верхняя строка:
Нажмите для просмотра прикрепленного файла

Но если его оставить так, точерез пару минут его начинает глючить:
Нажмите для просмотра прикрепленного файла

Если рукой коснуться платы сзади, это проходит и опять горит верхняя строка..... Мне кажется что это не есть нормально..... Может в этом и проявляется его "сдох"-лость?
ASZ
Цитата(~=InSpe©tor=~ @ Mar 17 2008, 03:37) *
Если рукой коснуться платы сзади, это проходит и опять горит верхняя строка..... Мне кажется что это не есть нормально..... Может в этом и проявляется его "сдох"-лость?

Подобное было при 4-проводном подключении шины данных и висящих остальных входах.

Еще как-то, при переходе с HD44780 на KS066 пришлось переписывать библиотечные ПП с целью увеличения задержек, иначе работало неустойчиво.
hd44780
Дело в том, что у HY-1602 нестандартная разводка.
Она у меня есть дома. Вечером выложу.
Мне ее продавец дал, а то бы промучился невесть сколько.

А инициализация 100% такая же как у всех.

И код есть для CodeVision. Все вечером ...
~=InSpe©tor=~
Цитата(hd44780 @ Mar 17 2008, 11:01) *
И код есть для CodeVision. Все вечером ...


Жду..... Ну разводка нестандартная я уже понял.... в первом сообщение ДатаШит который нашел.... (такая?).....
Заранее огромное спасибо..... smile.gif
etoja
Используйте более удобные и современные ЖКИ (со встроенным контроллером) типа TIC48, TIC120.
Купить можно в Петербурге: www.gamma.spb.ru
и Москве: www.trt.ru
~=InSpe©tor=~
Цитата(etoja @ Mar 17 2008, 16:26) *
Используйте более удобные и современные ЖКИ (со встроенным контроллером) типа TIC48, TIC120.
Купить можно в Петербурге: www.gamma.spb.ru
и Москве: www.trt.ru


Безусловно хороши..... но задача разобраться именно с HY-1602.... а вот TIC48 будет одним из следующих....
hd44780
Вот распиновка:

Номер Назначение
1 D7
2 D6
3 D5
4 D4
5 D3
6 D2
7 D1
8 D0
9 EN
10 RW
11 RS
12 Vo
13 Vcc, +5в
14 GND
15 Light Vcc
16 Light GND

Ток подсветки 120 мА. На Vo обязательно потенциометр, иначе увидишь непонятные кубики. У меня в схеме 1кил.
Библиотека под CvAVR - см вложение.

Эта библиотека - порт из avrlib. Все настройки - в .h файле.
4-битный интерфейс не тестировал. Если честно - не люблю я его.

В одной схеме понадобился (буквально одной ноги проца не хватило для 8 бит), сделал - часто на экране появляются какие-то левые значки, иногда вообще изображения нету - паршиво короче.
~=InSpe©tor=~
Я так понял руские символы он поддерживает...... А можно конкретно пример программы, как использовать..... ну простенько.... чтобы хоть что-то увидеть....
hd44780
Лови пример.

Это я тренировался работать с AT-клавиатурой на Mega32. Дисплей правда 4x20, но это ни на что не влияет.

Компилятор - CvAVR.

Русские буквы поддерживает. Причем в когда пишешь прошивку, все строки д.б. в Win1251.
Перекодировка на лету. Конечно жрет лишний флэш, зато программы писать удобно, пишешь как обычно и все.

Если что, пиши.
~=InSpe©tor=~
Цитата(hd44780 @ Mar 17 2008, 19:05) *
Лови пример.

Если что, пиши.


Спсибо огромное, послезавтра буду разбираться (завтра уезжаю на денёк).... ну или сегодня если успею..... Теперь вроде всё понятно..... (ну и работа с АТ клавиатурой меня тоже интересовала )))).....
Как заработает/не заработает - сообщу.... Ещё раз спасибо....
~=InSpe©tor=~
Цитата(~=InSpe©tor=~ @ Mar 17 2008, 21:17) *
ну или сегодня если успею.....

Попробовал.... Законментиравал всё что касается АТ клавиатуры.... Оставил только все касаемо ЖКИ.... подключил.... каждый раз непредсказуемый результат.... Та плате 2-х цветный светодиод, его я использую тут для отслеживания движения по коду..... судя по нему, иногда всё зависает на инициализации и дальше не идёт, если инициальзацию проскочило, то дойдёт до конца..... сначало дисплей реагировал как-то на работу..... на нём мерцали всякие гадости в такт выполнения..... немного погодя, дисплей очистился.... и при подачи питания не выдёт даже развёртку первой строки.... и не понятно.... толи инициализация прошла.... толи он окончательно.... умер.... несколька раз проверял соединение..... незнаю..... буду мучаться дальше.... доконца недели не запущу, буду искать другой..... Тяжело разбираться,когда ещё ине знаешь живой ли сам LCD..... wacko.gif
Harbinger
"Всякие гадости" (особенно если с переменным контрастом) - обычно признак того, что к некоторым цепям на плате индикатора не доходит либо питание, либо земля. Может, дорожку где-то случайно "чикнули"?
~=InSpe©tor=~
Цитата(Harbinger @ Mar 18 2008, 07:13) *
"Всякие гадости" (особенно если с переменным контрастом) - обычно признак того, что к некоторым цепям на плате индикатора не доходит либо питание, либо земля. Может, дорожку где-то случайно "чикнули"?


Ну на плате индикатора врятли.... смотрел уже.... Может по неопытности при пайке спалил.... хотя паял разъём с флюсом, перегреть не мог ничего.... Но паял обычным паяльником, может статикой как-нить убил.... Незнаю.... на днях разведу плату чисто контроллер-индикатор.... чтобы провода исключить, я уже не знаю на что подумать.... Но пока успехов никаких.... Он каждый раз ведёт себя по разному.... никакой логики.... я уже проверял, думал разъём не контачит (вставляю в линейку разъёма "мама" хорошо залуженные провода, длинной сантиметров 10-15 (камутационные, лудили на автомате) входят плотно, со стороны контроллера припаены к плате....) Пораллельно всем проводам вешал светодиоды, все задержки делал длинными, чтобы видеть - мигают..... логично так мигают.... в линиях идёт что надо.....
З.Ы. Видно я ужасный оптимист..... Другой на моём место выкинул бы уже его, и новый купил.....
hd44780
Да хрен его знает.
Я также с Bolymin BC2004A воевал.
Он работал, буквы, цифры, все. Но постоянно на экране какие-то кубики, как будто контраст неотрегулирован. Ставил потенциометр, крутил, ноль эмоций.
Так и валяется в ящике. Только 20 баксов жаль.

Купил другой какой-то экранчик 20x4. Не такой именитый, как Bolymin, зато работает как часы.
~=InSpe©tor=~
Цитата(hd44780 @ Mar 18 2008, 11:30) *
Только 20 баксов жаль.

Вот я давно хотел купить.... для отладки..... а-то с подключением по сом-порту проблемно - у меня ноут, собирать переходник - казалось сложнее, да и дороже..... везде описана простота работы с ЖКИ.... вот я и купил.... 270 руб. (жалко, тоже деньги.... ещё и покупал не я, теперь остался должен.... у нас в городе игрушки такого типа.... именитые.... найти тяжело....) Ну так что вот незнаю.... закажу наверное что-нибудь где-нибудь через интернет..... получше.... 20X4 например.... (там как я понял еще одна ножка.... переключать первые/вторые двустрочия).... Кстати что посоветуете..... Еще интересно как они на длинну проводов реагируют.... и вообще.... на питание, может им кандёр по питанию какой не помишает.....
И вот такой деликатный вопрос.... а что будет если паузы между коммандами существенно увеличть..... например до 5 секунд между каждым изменением на шине данных..... ну чтобы отслеживать..... сработает ли дисплей на таких скоростях..... там вроде указаны только минимальные интервалы.... так что ограничения по длительности я не видел....
Aesthete Animus
Цитата(~=InSpe©tor=~ @ Mar 18 2008, 21:24) *
И вот такой деликатный вопрос.... а что будет если паузы между коммандами существенно увеличть..... например до 5 секунд между каждым изменением на шине данных..... ну чтобы отслеживать..... сработает ли дисплей на таких скоростях..... там вроде указаны только минимальные интервалы.... так что ограничения по длительности я не видел....

Ничего не будет (плохого). Учитывая то, что интерфейс синхронный, интервал можно сделать сколь угодно большим. Я соьственно имеенно так и отлаживался, когда впервые подключал экранчик: к следующей команде инициализации переходил только по приему байта с компьютера, то есть получалось что-то типа трассировки wink.gif
rezident
Посмотрел "по диагонали" библиотеку LCD_Keyboard из поста #13. Я конечно извиняюсь, но не удивительно, что она не работает. В самом начале процедуры инициализации не выполнена вся необходимая последовательность команд с требуемыми паузами. ~=InSpe©tor=~, читайте внимательно даташит HD44780U или KS0066U. Кстати, процедуры инициализации подобных LCD-модулей в форуме уже "обсосали" со всех сторон. Странно, что до сих пор у кого-то возникают сложности. laughing.gif Вот, о программировании HD44780U на русском в аттаче.
~=InSpe©tor=~
Цитата(rezident @ Mar 19 2008, 00:42) *
Посмотрел "по диагонали" библиотеку LCD_Keyboard из поста #13. Я конечно извиняюсь, но не удивительно, что она не работает. В самом начале процедуры инициализации не выполнена вся необходимая последовательность команд с требуемыми паузами. ~=InSpe©tor=~, читайте внимательно даташит HD44780U или KS0066U. Кстати, процедуры инициализации подобных LCD-модулей в форуме уже "обсосали" со всех сторон. Странно, что до сих пор у кого-то возникают сложности. laughing.gif Вот, о программировании HD44780U на русском в аттаче.

Ну я сам уверен что это всё просто.... но теория одно, а на практике не получается..... Статья из аттача у меня давно на столе лежит (помоему лучшая и самая понятная).... и еще несколько подобных.... везде кстати разные интервалв ожидания между шаками инициализации.... кто-то советует не меньше 200 мкс, кто-то уверяет что 40 мкс хватит..... ну я уже по несколько секунд делал.... и нифига
hd44780
Цитата(rezident @ Mar 18 2008, 23:42) *
Посмотрел "по диагонали" библиотеку LCD_Keyboard из поста #13. Я конечно извиняюсь, но не удивительно, что она не работает. В самом начале процедуры инициализации не выполнена вся необходимая последовательность команд с требуемыми паузами. ~=InSpe©tor=~, читайте внимательно даташит HD44780U или KS0066U. Кстати, процедуры инициализации подобных LCD-модулей в форуме уже "обсосали" со всех сторон. Странно, что до сих пор у кого-то возникают сложности. laughing.gif Вот, о программировании HD44780U на русском в аттаче.


Я же писал - это порт avrlib, все вопросы им. У меня лично этот порт на 3-х разных модулях работает великолепно (в отличие от многих других библиотек, кстати), я и править его не хочу, даже если там чего-то не хватает.

Насчет задержек - там используется опрос бит готовности LCD, поэтому они там строго говоря не особо то и нужны.
rezident
Цитата(hd44780 @ Mar 19 2008, 11:37) *
Насчет задержек - там используется опрос бит готовности LCD, поэтому они там строго говоря не особо то и нужны.
Я не про опрос флага готовности, а про последовательность и паузы при инициализации LCD-модуля.
Цитата(~=InSpe©tor=~)
везде кстати разные интервалв ожидания между шаками инициализации.... кто-то советует не меньше 200 мкс, кто-то уверяет что 40 мкс хватит..... ну я уже по несколько секунд делал.... и нифига
Поэтому я и советую изучать даташит именно на тот контроллер, который применен в вашем LCD-модуле.
Попробую "причесать" свои старые исходники и выслать вам. См. завтра личку.
IgorKossak
Цитата(rezident @ Mar 19 2008, 14:25) *
Я не про опрос флага готовности, а про последовательность и паузы при инициализации LCD-модуля.

+1
В документации на контроллер HD44780U в плане инициализации явно сказано BF cannot be checked before this instruction и без задержек никак не обойтись.
Aesthete Animus
2~=InSpe©tor=~
Настоятельно рекомендую [DELETED] развести экранчик (возможно, купив предварительно новый) по той документации, что у Вас есть и с помощью доки на hd44780 (я имею ввиду доку lcd.pdf из аатача) самому аккуратно запрогать все времняки для управления экранчиком. Поверьте, толку будет больше, чем если будете пытаться разобраться в его работе по чужим исходникам.
~=InSpe©tor=~
Цитата(Aesthete Animus @ Mar 19 2008, 18:01) *
2~=InSpe©tor=~
Настоятельно рекомендую [DELETED] развести экранчик (возможно, купив предварительно новый) по той документации, что у Вас есть и с помощью доки на hd44780 (я имею ввиду доку lcd.pdf из аатача) самому аккуратно запрогать все времняки для управления экранчиком. Поверьте, толку будет больше, чем если будете пытаться разобраться в его работе по чужим исходникам.


Да вот пробовал я по тем докам самому всё аккуратненько.... еще до обращения на форум (в первом посте вроде указывал)..... значит погиб мой бедненький первый ЖКИ..... Ладно..... как время будет поеду за новым..... )))
Harbinger
Ничего страшного, я в своё время убил два (надежда восстановить ещё есть)... в результате приручил, сакраментальное "Hello, Lamer" вывел, но процедуры пока что на ассемблере (побьют, если опубликую! wink.gif ) и вывод данных на ЖКИ через сдвиговый регистр - "верёвки" экономлю и планирую от HY-1602 отказаться, есть более дешевый 4-строчный с SPI... На C тоже всё делал сам, но под 51 (Keil), там некоторая специфика...
~=InSpe©tor=~
Короче.... Курип WH1602A-YGH-CTK.... ну если и он не заработает.....
~=InSpe©tor=~
Подключил.... по 4-х битной шине.... работает как часы.... Я правдо думал он шустренький, а он инертный.... обновляется медлененько.... Но это наверное проблема всех ЖКИ
~=InSpe©tor=~
Цитата(~=InSpe©tor=~ @ Mar 20 2008, 21:31) *
Подключил.... по 4-х битной шине.... работает как часы.... Я правдо думал он шустренький, а он инертный.... обновляется медлененько.... Но это наверное проблема всех ЖКИ

Правда с выводом русских символов пока проблема ))) пока не получается приделать конвертер из CP1251... Ну я особо и не пытался... так что вывод делаю построчно по таблицам символов...
Код
lcd_clear();
lcd_gotoxy(2,0);
lcd_putchar(75);
lcd_putchar(121);
lcd_putchar(112);
lcd_putchar(184);
lcd_putchar(185);
lcd_putsf(" ");
lcd_putchar(67);
lcd_putchar(101);
lcd_putchar(112);
lcd_putchar(180);
lcd_putchar(101);
lcd_putchar(185);
lcd_gotoxy(2,1);
lcd_putchar(0b11101001);
lcd_putsf("=InSpector=");  
lcd_putchar(0b11101001);

Кстати обычными методами по умолчанию доступными в КодеВижен управляется без проблем.....

Нажмите для просмотра прикрепленного файла
rezident
~=InSpe©tor=~, см. личку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.