Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

LCD 1602A - Не удается вывести тестк

Чт ноя 09, 2017 23:47:19

Добрый вечер коты!

Взял себе LCD 1602А дисплей и никак не могу заставить его вывести инфу. Пишу под PIC16F73, проект в архиве.
Использую 4bit подключение, подсветка работает - значит не сгорел. Прочитав про подключение LCD понял, что проблема может быть инициализации, потому думаю, что ошибка в этом. Изначально руководствовался этим примером https://electrosome.com/lcd-pic-mplab-xc8/, уже есть либа и все такое. Дописал свою функцию инициализации, чтобы не изменять исходник либы, пришлось в итоге одну строчку заменить. Также нашел Datasheet для этого LCD http://aquacontrol.narod.ru/spravka/WH1602A-YGH-CTK.pdf.

Интересует также вопрос о том как правильно передавать данные. Например, нужно отправить 0x0C, есть ли смысл отправлять старшую тетраду или нет?

Кто с такой проблемой сталкивался, пожалуйста, поделитесь :)

В реальности собрал схему по ссылке http://take.ms/Foawk
Вложения
lcd-display.zip
(85.47 KiB) Скачиваний: 353

Re: LCD 1602A - Не удается вывести тестк

Чт ноя 09, 2017 23:58:00

А кто будет на третий вывод напряжение "контраст" подавать?
СпойлерИзображение

А эти индикаторы без него ничего не показывают!!
Нужен резистор 0т 10 до 25 кОм, крайние выводы- один на питание +5 вольт, второй- на "землю", а вывод "движка" на 3-ий вывод, и крутить резистор пока не начнут слегка "светиться" знакоместа в верхней строке.
Когда индикатор начнёт показывать текст, то немного ещё подрегулировать "по вкусу"..

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 00:14:02

http://take.ms/ocxOM
третий вывод - это заглушка. Подсветка на двух последних и к нему поставлен резистор на 10кОм

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 00:39:23

Подсветка в этом индикаторе- просто светодиоды под ЖК- индикатором, а третий вывод- никакая не "заглушка", без подачи напряжения на этот вывод индикатор ничего не покажет!!! Посмотрите на ваш индикатор с другой стороны- может, дорожка есть там, а ещё она может быть ВНУТРИ платы (многослойная плата, например)
Изображение
Видите, на схеме справа- переменный (подстроечный) резистор- его, после подачи питания ПРОСТО только НА ИНДИКАТОР, нужно покрутить, пока на индикаторе не появится примерно такое изображение:
Изображение
После этого, если вы все данные на него будете подавать правильно, то вы чего- нибудь, да увидите.. Потом, для получения наилучшего изображения резистор ещё надо будет покрутить..

зы.. Из ВАШЕГО пдф- ника:
8-я страница:
вывод 3 VO (Variable) Operating voltage for LCD
9-я страница- ПО САМОЙ СЕРЕДИНЕ-
схема, на которой показан подстроечный резистор, подключённый к выводам Vdd, Vss и Vo.. ОН НУЖЕН!!!!

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 01:03:16

Подал на третий пин 5V с резистором на 20кОм. Ничего не изменилось..
Этот третий пин на тестере выдает питание, это нормально?
Можете кинуть свою программу?
Скажите следующие, я фотку скидывал, там третий пин на плате не имеет никуда вывода. Как это?

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 01:32:20

Подал на третий пин 5V с резистором на 20кОм. Ничего не изменилось..
Этот третий пин на тестере выдает питание, это нормально?
Можете кинуть свою программу?

У меня программы НЕТУ, просто я знаю, как эти индикаторы подключаются..
Просто через 20 кОм подать 5 вольт- может быть недостаточно.
Подключите только питание- 1 вывод "земля", 2 вывод- +5 вольт, а третий вывод- через подстроечный или переменный резистор.
Кстати, спалить эти индикаторы легче лёгкого- просто перепутать питание..
Вот я летом таймер для фоторезиста макетировал:
Изображение
справа из- под индикатора выглядывает синенький подстроечник..

Если у вас нет подстроечника, то попытайтесь найти с десяток резисторов по 1 кОм (ну, или десяток одинаковых от 470 Ом до 3-х кОм), соедините их последовательноЮ один конец цепочки- на землю, второй конец- на 5 вольт, а третий вывод индикатора переключайте между выводами резисторов цепочки- получится "ступенчатый" переменник..
Если вы квадратиков на знакоместах не увидите, то может быть два варианта- либо у вас уже сдохший индикатор, либо у вас индикатор с "расширенным температурным диапазоном" - у такого напряжение на выводе 3 может быть и отрицательным.

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 09:23:58

stas0 писал(а): третий пин 5V с резистором на 20кОм. Ничего не изменилось..
Там не с плюсом нужно соединять, а с общим через резистор, причем требуемое сопротивление может иметь большой возможный диапазон, а у Винстара лучше через подстроечник.

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 17:23:08

Спасибо коты! Проблему решил и она была в двух местах.

LCD 1602A

Первая проблема:
Контраст обязателен для LCD, как и говорил АлександрЛ. Купил червячный переменный резистор до 50кОм, начало нормально показывать на 40кОм. Жаль что не пишут в даташит какое нужно сопротивление для этого.

Первая проблема:
Вторая проблема оказалась - ошибки в библиотеке. Нашел ее по этой ссылке https://electrosome.com/lcd-pic-mplab-xc8/. Так как я использовал 4bit режим, то и функции соответствующие вызывал, например, Lcd4_Init(), Lcd4_Clear() и еще некоторые. Они оказались ошибочными - отправляли команды не учитывая старшей тетрады переменной типа char. Пришлось написать свои функции.

После решение вышеперечисленных проблем дисплей начал что-то да показывать. Да, нюанс. Когда подключаешь питание, контраст(пины данных остаются не подключенными) - дисплей все равно пустой.

Пишу для PIC в MPLAB X IDE, как напишу свою либу на основе скачанной - закину сюда и распишу что к чему в ней. Сейчас эта либа сырая, в ней еще полно ошибок. Буду писать для 4bit, кто захочет может и для 8bit написать :)

Изображение

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 20:31:41

Контраст обязателен для LCD, как и говорил АлександрЛ. Купил червячный переменный резистор до 50кОм, начало нормально показывать на 40кОм. Жаль что не пишут в даташит какое нужно сопротивление для этого.
А они и не могут этого написать- напряжение "контраста" может быть- для индикаторов с "нормальным" температурным диапазоном- от 0 до V питания, а для индикаторов с "расширенным" температурным диапазоном- от -5 вольт, до V питания.. При чём- даже у ОДИНАКОВЫХ индикаторов оно разное..

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 21:05:19

Но есть же какое-то среднее значение? Если выпускаются приборы с такими LCD не будут же каждому ставить переменный резистор, чтобы клиент настраивал это сам.

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 21:11:42

Почему же?
Во многих изделиях, есть пункт в меню "контрастность".
По крайней мере, это есть почти во всех музыкальных проф. "обработках" и синтезаторах.
Там, естественно, не ставят подстроечники "под отвёртку", а формируют напряжение, грубо говоря, из МК (тут уж кто как по схемотехнике)...

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 21:12:01

Но есть же какое-то среднее значение? Если выпускаются приборы с такими LCD не будут же каждому ставить переменный резистор,
Вот, представьте себе, СТАВЯТ этот переменный резистор..
Иногда подключают этот вывод, через RC - цепочку к выводу МК, которая, при помощи ШИМ формирует нужное (настраиваемое) напряжение..

Просто посмотрите все схемы с подобными индикаторами- почти везде регулировка "контрастности" присутствует.
К тому же, у такого ЛСД индикатора ограниченный угол обзора, и, регулируя "контраст," можно немного изменять угол, с которого изображение на индикаторе лучше видно.

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 22:35:47

Интересно. Шим это хорошо, идеал автоматическая настройка. А можно ли считать значение контраста у lcd? Мол он говорит "Ты меня видишь", "А сейчас не видишь"? Учтите, используется не дорогое оборудование, так сказать доступное, можно же и спалить как будешь велосипед изобретать.

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 23:07:51

, можно же и спалить как будешь велосипед изобретать.

Что- то никого, кроме вас не "взволновал" регулятор контрастности на основе подстроечного резистора.. Фактически он нужен ОДИН РАЗ при настройке конкретного индикатора.
При замене- подстроил, и опять "забыл"..
А зачем нужна "автоматическая настройка"- не понимаю, усложнить программу, добавить кусок кода, который будет, фактически, использован только один раз, при первом включении? :dont_know:

Re: LCD 1602A - Не удается вывести тестк

Пт ноя 10, 2017 23:44:24

Ну смысл есть, если будет другой жки на замену и т. д. Да и просто из интереса

Re: LCD 1602A - Не удается вывести тестк

Сб ноя 11, 2017 00:00:28

Ну, при отлаженной программе- можно так сделать, если вы на 200% уверены в том, что индикатор ДОЛЖЕН показывать, только всё равно- как- то надо будет остановить "настройку".. Ну, впрочем, это вопрос к автору программы, а в порядке "идеи" - настройка индикатора должна активироваться, ну, допустим, при включении устройства с нажатыми одной или двумя кнопками, (ведь в начальный момент мы принимаем, что мы на индикаторе никаких надписей не видим), и плавно изменяя ШИМ сигнал, который через
интегрирующую цепочку:
СпойлерИзображение

подаёт на вход "контрастность" плавно изменяющееся напряжение, а на индикатор выводит надпись типа "нажмите такую- то кнопку".. Когда картинка на индикаторе будет "читаемой" пользователь нажимает кнопку, а МК запоминает, при каких параметрах ШИМ это было сделано, и, при последующих включениях устанавливает это значение на этом выводе..

зы.. Только это будет "съедать" и так довольно скромные ресурсы МК, и этот вывод должен постоянно "генерить" нужный сигнал... А ОНО НАДО? :shock: :facepalm:

Re: LCD 1602A - Не удается вывести тестк

Ср ноя 15, 2017 23:04:37

Не получилось добавить текст ниже в статью, выдает ошибку, почините, админы )




Все доброго времени суток, дорогие коты!


Недавно впервые подлючал LCD 1602A с использованием PIC16F73. Нашел пример программы как правльно запустить LCD, в этом примере еще прилагась библиотека. В Proteus все работало замечательно, но жизнь бывает жестока и Proteus не спасает в половине случаев. Поэтому пришлось орткрывать datasheet и читать как же работаь с моим дисплеем. Немного танцев сбубном помогли запустить дисплей. Я никогда с дисплеями не работал, по этому моя первая ошибка была неправильно настроенный контраст. У каждого дисплея он может быть размным. Хорошие товариши из форума подсказали, что это зависит от параметров дисплея, так что крутите переменный резистор пока не увидите матрицу =).

Также проблемной оказалась библиотека из примера, которой я пользовался. Не долго думая я начал писать свою библиотеку. Я ее тестировал на своем ЖКИ и она работает. Вам разве что, нужно будет переписать инициализацию дисплея под себя. Сделал описание каждой функции, какая за что отвечает, коменты на русском, вам не придется лезть в переводчик)


Видео работы дисплея:
https://www.youtube.com/watch?v=-hVV5pp ... e=youtu.be


Ссылка на репозиторий, где хранится пример LCD с библиотекой:
https://gitlab.com/microchip_pic_egofoxlab/pic-examples

Пример можно найти по этому пути:
pic-examples/pic16f73/lcd-display/lcd-display.X

Re: LCD 1602A - Не удается вывести тестк

Вс ноя 19, 2017 14:10:12

для 1602 библиотека с кучей функций - это избыточная роскошь.
у меня всего 3 подпрограммы:
- 8-битная команда (вызывается 4 раза при инициализации экрана),
- 4-битная команда (задать позицию вывода),
- 4-битная передача байта (символа).
всё, больше там ни хрена не надо.

Re: LCD 1602A - Не удается вывести тестк

Пн ноя 20, 2017 10:48:57

Starichok51, у меня компилятор запихивает в .hex только те функции, которые используются

Re: LCD 1602A - Не удается вывести тестк

Вс ноя 26, 2017 12:00:26

не только у тебя. все компиляторы так работают.
Ответить