Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

ellioh писал(а):чтение бита
Нафига его читать? Достаточно выдержать тайминги по даташиту.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

Gudd-Head писал(а):Нафига его читать? Достаточно выдержать тайминги по даташиту.
Кстати, действительно. Там, где тайминги порядка 40 мкс, смысла читать и правда нет, само чтение с последовательным пропихиванием команды немногим меньше времени съест. Хотя пока я читаю. Если отказаться от чтения, получается три ноги плюс две десятирублевые микросхемы.

Между прочим, тогда можно будет извлечь профит из 4-битного режима, и регистр надо будет использовать только один. Сейчас я на время чтения запрещаю выход регистра с данными, подключив его запрещение вывода к тому выходу второго регистра, который отвечает за бит R/W. Если не читать, то можно и не запрещать, объединив управляющие биты и данные в один регистр. Тогда одна 10-рублёвая микросхема. :-)
Клоподавер упрыгхт
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Сообщение shurikss123 »

а если взять 74hc164 можно и одной ножкой обойтись
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

shurikss123 писал(а):а если взять 74hc164 можно и одной ножкой обойтись
Вот это: http://www.fairchildsemi.com/ds/74/74VHC164.pdf???
Это как, интересно? Во-первых, вход CP (Clock Pulse) всё равно надо будет дёргать, а это уже две ноги, во-вторых, там нет второго регистра с защёлкой, из-за чего при попытке запихать в регистр значение, скажем, 10000000 (двоичное, естественно), сначала придётся в процессе пропихивания выдать на выходы массу ерунды: 1, 10, 100, 1000, 10000... Простой сдвиговый регистр тут, сдаётся мне, вообще не годится.

Одной ногой можно, по-моему, обойтись только одним способом: подключить по чему-то совсем последовательному типа 1-Wire или USART второй микроконтроллер, а к нему -- LCD. :lol:
Клоподавер упрыгхт
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 12
Зарегистрирован: Вт дек 01, 2009 04:46:17

Сообщение Hold[On] »

Возник вопрос по подключению powetip PC1602F. Является ли он аналогом WH1602? использую 6 ног для подключения, RW на земле всегда висит. Использую вот эту библиотеку, т.к. тут можно указать какие ноги контроллера к каким выводам ЖК подключаются. Пытаюсь использовать библиотеку - ЖК отображает только в первой строке все квадраты, будто не инициализировался.
Вложения
my_lcd.c
(6.26 КБ) 385 скачиваний
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Сб янв 22, 2011 16:57:45

Сообщение ellioh »

Hold[On] писал(а):Пытаюсь использовать библиотеку - ЖК отображает только в первой строке все квадраты, будто не инициализировался.
Честно сказать, в код не вчитывался, но меня смущает почти полное отсутствие задержек. 1 мкс там действительно много где держится, но этого достаточно между выставлениями данных и взведением бита E, много где надо держать гораздо большие задержки. В даташите на WH1602 (но у вас другой, конечно, однако идея должна быть та же) для целого ряда действий указана задержка порядка 40 с лишним мкс. Попробуйте расставить в начале или конце каждой операции микросекунд по сто, может, поможет. Вот в начале lcd_write -- самое место.
Клоподавер упрыгхт
Реклама
Родился
Сообщения: 12
Зарегистрирован: Вт дек 01, 2009 04:46:17

Сообщение Hold[On] »

проблема как всегда скрывалась в мелочах - выбрал атмегу16 вместо атмеги8. А по поводу библиотеки - уже много где её использовал. полностью рабочая.
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Выкладываю программу начальной инициализации hd44780 на языке ассемблера, с использованием управляющего микроконтроллера ATtiny2313:
Запись данный осуществляется в регистр R17, после чего используется команда отправка rcall и имя используемого регистра: для регистра DR - метку user_write_DR, для IR - user_write_IR.
Пример:
ldi r17, 0b00010101 ; Запись данных
rcall user_write_DR; Вывести символ с кодом (R17)
Писать следующие строки следует после инструкции инициализации lcd:
rjmp reset ;
... (код дальнейшей программы)
не следует использвать регистр R16 для хранения константы до того, как будет использован вызов подпрограммы записи данных/параметров в регистры DR или IR.
Если будет что не ясно - пишите.
Объем программы - 6,9% в Flash-памяти программ.
В программе - обязательня начальная инициализация - (выдача начальной инициализирующей последовательности). Далее все задается пользвоателем.
Вложения
tn2313_lcd_8bit.asm
(3.59 КБ) 434 скачивания
Не умеешь - не берись, но не взявшись не научишься...
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Stalker46 писал(а):Выкладываю программу начальной инициализации hd44780 на языке ассемблера
Ещё бы и физическую распиновку подключения...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Неплохо! Всего одна ошибка и несколько замечаний
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Программа уже испытывалась в реальном железе - работает на ура, и никаких огрехов замечено не было, тем не менее.....

....программы конечно же сырая, спасибо за замечания. Но она написана для работы с lcd, т.е. именно протокол, влияния микроконтроллера и срыв стека не учитывал)
Физическая распиновка - RS-PD0, RW-PD1, E-PD2;
и 8 битная шина данных lcd DB0-DB7 соотв. линиями порта B микроконтроллера.
Не умеешь - не берись, но не взявшись не научишься...
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

Собственно, программа написана для тех, кто хочет сам разобраться, как надо инициализировать и работать с данным lcd.
В этой программе все сделано как в даташите на lcd-контроллера написана (вывод инициализирующей последовательности и тд.)
Единственное - что я дополнил - это увеличил задержки вместо 1,5мс(стирание) и 40мкс(остальные операции) - примерно на 15-20% для лучшей стабильности:)
Не умеешь - не берись, но не взявшись не научишься...
Родился
Сообщения: 4
Зарегистрирован: Вт дек 21, 2010 20:36:15

Сообщение AndrewT_87 »

Здравствуйте уважаемые коты!!!
помогите пожалуйсто разобраться. Есть дисплей 20х2. Я его подключаю к порту D atmegi16
rs-D.2
e-D.3
D.4-D.7-data
пишу самую простенькую программу, чтобы выводило строчку текста (использую стандартную библиотеку lcd.h cvavr) командой lcd_putsf(.............) и потом загорался диод на A.0. Так вот, на дисплее ничего не появляется, а диод загорается.
Не могу понять что не так.
Друг Кота
Аватара пользователя
Сообщения: 8865
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

Сообщение Ратмир »

Добрый день! Коты проконсультируйте плиз. Собираю прибор по схеме(прил.) купил жк wh1602c-yyk-ctk# по даташиту не вижу LED+ LED-. как подключить подсветку? спасибо.
Вложения
121317506601795912554.pdf
(461.35 КБ) 501 скачивание
lcfesr_mero3_sch.png
(45.38 КБ) 649 скачиваний
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Ратмир писал(а):как подключить подсветку? спасибо.
15 и 16 вывод ЖКИ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 8865
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

Сообщение Ратмир »

Gudd-Head писал(а):
Ратмир писал(а):как подключить подсветку? спасибо.
15 и 16 вывод ЖКИ.
хотел еще спросить для чего pin А и К ?
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

A(Anode), K(Katode) - выводы для подключения питания светодиодной (в данном случае) подсветки.
На анод - положительный потенциал, на катод - общий.
Не умеешь - не берись, но не взявшись не научишься...
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Вс фев 27, 2011 01:01:11
Откуда: Республика Крым

Сообщение VirZh »

Ратмир писал(а):
Gudd-Head писал(а): 15 и 16 вывод ЖКИ.
хотел еще спросить для чего pin А и К ?
Я делал подсветку на 30с при нажатии на любую кнопку устройства. Для этого со свободного вывода порта через транзисторный ключ подключал катод (К), ну а анод (A) соответственно - на +5V.
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...
Друг Кота
Аватара пользователя
Сообщения: 8865
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

Сообщение Ратмир »

Спасибо большое!И последний вопросик. На 15 ноге через дробь указана Vee(negative voltage output) это что?
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Вс фев 27, 2011 01:01:11
Откуда: Республика Крым

Сообщение VirZh »

Ратмир писал(а):Спасибо большое!И последний вопросик. На 15 ноге через дробь указана Vee(negative voltage output) это что?
Для работы LCD используется встроенный преобразователь с отрицательным выходным напряжением. В данном случае с него сделали отдельный вывод. Используется (иногда) для подключения переменного резистора для регулировки контрастности (Один вывод на +5V, (2 нога) второй на A/Vee (15 нога), а движок на Vo (3 нога). Эту схему регулировки контрастности используют при питании индикатора в 3V, а при питании 5V его попросту не используют. (вместо него используют вывод 1 (GND)
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...
Ответить

Вернуться в «Периферия»